⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jacobi.m

📁 实现雅可比叠代算法 在matlab中 输入矩阵A,b, 初值x 调用该函数 得到结果
💻 M
字号:
function [x,iternum]=jacobi(A,B,x0,delta,maxl)
if nargin<2
   error('more augments are needed')
end
if nargin<3
    x0=zeros(size(B));
end
if nargin<4
    delta=1e-12;
end
if nargin<5
    maxl=100;
end
if nargin>5
    error('Incorrect number of inputs');
end
[n,m]=size(A);
if n~=m|n~=size(B,1)
    error('Incorrect inputs,the dimonsions of matrix A and B must agree,A must be squarie ');
end
flag=0;
iternum=0;
n=length(B);
for k=1:maxl
    iternum=iternum+1;
    for j=1:n
        if    abs(A(j,j))<(delta+eps)
         error('A(j,j) equal to zero,divided by zero');
       end
        x(j)=(B(j)-A(j,[1:j-1,j+1:n])*x0([1:j-1,j+1:n]))/A(j,j);
    end 
    err=abs(norm(x'-x0));
    relerr=err/(norm(x)+eps);
    x0=x';
    if(err<delta)|(relerr<delta)
        flag=1;
        break;
    end 
end
if flag==1
    disp(['The jacobi method converges'])
        x=x';
    else
    disp(['The jacobi method does not converge with' num2str(maxl)' interations']); 
end
A=[1 2 -2;1 1 1;2 2 1];
B=[2 3 4];
x0=[0 0 0];

⌨️ 快捷键说明

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