MATLAB之Jacobi迭代法

安稳与你 提交于 2019-12-02 06:26:19
function x=Jacobi(a,b,n,N,t)
x=zeros(n,1);
y=zeros(n,1);
for i=1:n
    if(a(i,i)==0)
        error('算法失败');
    end
end

for k=1:N+1
    d=0;
    for i=1:n
        sum=0;
         for j=1:n
             if(i~=j)
                 sum=sum+a(i,j)*x(j);
             end
         end
         y(i)=(b(i)-sum)/a(i,i);
         d(i)=abs(y(i)-x(i));
         if(d(i)>d)
             d=d(i);
         end
     end 
     if(d<t)
         for p=1:n
             fprintf('%d',y(p));
         end
         break;
     end
     if(k==N)
        fprintf('迭代失败');
        break;
     end
     for i=1:n
        x(i)=y(i);
     end
end
end

a=[10,-1,2,0;-1,11,-1,3;2,-1,10,-1;0,3,-1,8]

b=[6;25;-11;15]

n=4

N=100

t=0.001

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!