用MATLAB做SOA数值模拟分析增益饱和特性,消光比特性,噪声比特性
超松弛迭代法实际是在高斯-塞德尔迭代的基础上的一个加速方法,可以看做是带参数的高斯-塞德尔迭代,是求解大型稀疏矩阵方程组的有效方法,有着很广泛的应用,其核心思想为将高斯-塞德尔迭代求解出的新的解向量元素与上一个解向量中相对应的元素,做加权平均组合成一个全新的解向量的元素,这个全新的解向量即为超松弛迭代法的解,其中的权重被称为松弛因子
其具体计算公式如下:
代码:
x = zeros(1,n);
y = zeros(1,n);
count = 1;
%中间变量
x1 = zeros(1,n);
x2 = zeros(1,n);
%松弛因子w
w = 1.3;
while(1)
x1(1:n) = 0;
x2(1:n) = 0;
for i = 1:n
for j = 1: i-1
x1(i) =x1(i) + A(i,j) * y(j);
end
for k = i + 1 : n
x2(i) = x2(i) + A(i,k) * x(k);
end
temp = (B(i) - x1(i) - x2(i))/A(i,i);
y(i) = (1 - w)* x(i) + w * temp;
end
if max(abs(x-y)) < eps
c = A * y';
fprintf('迭代结束,次数%d,最终结果:\n',count);
disp(y);
disp(c);
break;
else
fprintf('第%d次迭代结果:\n',count);
disp(y)
end
if count == Nmax
c = A * y';
fprintf('超过最大迭代次数,迭代结束,最终结果:\n');
disp(y);
disp(c);
break;
end
count = count + 1;
x = y;
end
仿真结果:
你把数据发给我看一下