jacobidiedaifa.m

来自「牛顿迭代法」· M 代码 · 共 34 行

M
34
字号
function [x, k, index]=Jacobidiedaifa(A, b, ep, it_max)
% 求解线性方程组的Jacobi迭代法,其中
%   A --- 方程组的系数矩阵
%   b --- 方程组的右端项
%   ep --- 精度要求。省缺为1e-5
%   it_max --- 最大迭代次数,省缺为100
%   x --- 方程组的解
%   k --- 迭代次数
%   index --- index=1表示迭代收敛到指定要求;
%             index=0表示迭代失败

if nargin <4  it_max=100;  end
if nargin <3  ep=1e-5;  end
n=length(A); k=0; 
x=zeros(n,1); y=zeros(n,1); index=1;
while 1
    for i=1:n        
        y(i)=b(i);
        for j=1:n
            if j~=i
                y(i)=y(i)-A(i,j)*x(j);
            end
        end
        if abs(A(i,i))<1e-10 | k==it_max
            index=0; return;
        end
        y(i)=y(i)/A(i,i);
    end
    if norm(y-x,inf)<ep
        break;
    end
    x=y; k=k+1;
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?