Demo entry 6448972

金王震

   

Submitted by suzui961228 on May 27, 2017 at 13:34
Language: Matlab. Code size: 1.1 kB.

%n为矩阵阶数
%A,b为输入数值
%es为精度数值,一般取5e-5
%N为最大迭代次数,若是在输入迭代次数不满足收敛时显示未达到精度值
n=4;     
A=[25,-41,10,-6;-41,68,-17,10;10,-17,5,-3;-6,10,-3,2]; 
b=[32,23,33,31];
x=[0,0,0,0]; 
es=input('\n精度='); 
N=input('\n最大迭代次数N='); 
fprintf('\n%d: ',0); 
for i=1:n  
fprintf('\%f ',x(i)); 
end  
%迭代过程 
for k=1:N   %这是第k步迭代,迭代前的向量在x0[]中,迭代后的在x[]中
    normal=0; 
    for i=1:n 
        t=x(i); 
        x(i)=b(i); 
        for j=1:n 
            if j~=i  
               x(i)=x(i)-A(i,j)*x(j); 
            end 
        end  
        x(i)=x(i)/A(i,i);  
        temp=abs(x(i)-t);    %求范数与迭代在同一个循环中
        if temp > normal  
           normal=temp;      %这里用的是无穷范数
        end  
    end                      %第i步迭代结束
    fprintf('\n%d: ',k); 
    for i=1:n  
        fprintf('%f ',x(i));  %输出迭代过程
    end  
    if normal < es 
         return; 
    end 
end
fprintf('\n\n迭代%d次后仍未求得满足精度的解\n',N); 


>>精度=5e-5

最大迭代次数N=10000
%输出结果
3491: 961.984247 691.988895 1002.986867 945.988568 
3492: 961.984297 691.988930 1002.986909 945.988604 >> 

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).