📄 jacobi.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 + -