Matlab_用雅可比(Jacobi)迭代法解线性方程组

1.程序代码

function x=majacobi(A,b,x0,ep,N)

n=length(b);

if nargin<5

    N=500;

end

if nargin<4

    ep=1e-6;

end

if nargin<3

    x0=zeros(n,1);

end

x=zeros(n,1);

k=0;

while k

    for i=1:n

        x(i)=(b(i)-A(i,[1:i-1,i+1:n])*x0([1:i-1,i+1:n]))/A(i,i);

    end

    if norm(x-x0,inf)

        break;

    end

    x0=x;

    %disp('x=');

    %disp(x);     可输出中间结果

    k=k+1;

end

if k==N

    warning('已到达迭代次数上限!');

end

disp(['k=',num2str(k)])

 

2.示例

取初值性x(0)=(0,0,0,0)T, 精度要求ε=10-6,用Jacobi迭代法解下列线性方程组

Matlab_用雅可比(Jacobi)迭代法解线性方程组_第1张图片

在命令窗口输入如下命令:

 

>> A=[14 4 4 4;4 14 4 4 ;4 4 14 4;4 4 4 14];

>> b1=[-4;16;36;56];

>> x0=[0;0;0;0];

>> ep=1e-6;

>> N=500;

>> x=majacobi(A,b1,x0,ep,N)

 

运行结果:

k=94

 

x=

 

   -2.0000

    0.0000

    2.0000

    4.0000 

 

你可能感兴趣的:(Matlab编程)