if nargin==1
disp('请输入精度要求epsilon') return end
row=size(Ab,1); col=size(Ab,2);
if ~ismatrix(Ab)||col-row~=1
disp('矩阵大小有误,不能使用高斯塞德尔迭代法') return end
A=Ab(:,1:row); b=Ab(:,col);
ddet=abs(det(A));
ddiag=abs(det(diag(diag(A)))); if ddet %%提取上下三角矩阵及对角矩阵 U=-triu(A,1); L=-tril(A,-1); D=diag(diag(A)); %%判断迭代过程是否收敛 G=(D-L)^(-1)*U; if max(abs(eig(G)))>=1 disp('迭代法不收敛!') return end %%迭代过程 error=10; n=row; start=zeros(row,1); xk=start; xknext=start; while error>epsilon xk=xknext; xknext(1)=1/A(1,1)*(b(1)-sum(A(1,2:n).*xk(2:n)')); for i=2:n-1 Ssum1=sum(A(i,1:i-1).*xk(1:i-1)'); Ssum2=sum(A(i,i+1:n).*xknext(i+1:n)'); xknext(i)=1/A(i,i)*(b(i)-Ssum1-Ssum2); end xknext(n)=1/A(n,n)*(b(n)-sum(A(n,1:n-1).*xknext(1:n-1)')); error=norm(xk-xknext); end solution=xknext; 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务