雅克比迭代法求线性方程组的根
- 格式:doc
- 大小:40.50 KB
- 文档页数:3
实验二 雅可比迭代法求线性方程组的根
一、实验目的
学习用雅可比迭代法求线性方程组的解。
二、实验题目
求线性方程组
⎪⎩⎪⎨⎧=++=++=-+11054722156851627321
321321x x x x x x x x x
的根,精确到0.0001。
三、实验原理
将方程组按雅可比方法写成
⎪⎪⎪⎩
⎪⎪⎪⎨⎧+--=+--=++-=275554154152415252278527192213312321x x x x x x x x x 由此可以得到迭代公式:
⎪⎪⎪⎩
⎪⎪⎪⎨⎧+--=+--=++-=+++275554154152415252278527192)(2)(1)1(3)(3)(1)1(2)(3)(2)1(1n n n n n n n n n x x x x x x x x x n = 0, 1, 2, …
四、实验内容
取初始向量为:0)0(1=x ,0)0(2=x ,0)0(3
=x 运行程序,记录计算结果。
五、源程序(Matlab)
clear
clc
n=input('n=');
A=input('A=');
b=input('b=');
x0=input('x0=');
x0=zeros(n,1);
x=x0;
epsilon=input('\n 精度=');
N=input('\n 最大迭代次数N=');
fprintf('\n %d:',0);
for i=1:n
fprintf('%f',x0(i));
end
%以下是迭代过程
for k=1:N
%这是第k步迭代,迭代前的向量在x0[]中,迭代后的向量在x[]中;
normal=0;
for i=1:n
x(i)=b(i);
for j=1:n
if j~=i
x(i)=x(i)-A(i,j)*x0(j);
end
end
x(i)=x(i)/A(i,i);
temp=abs(x(i)-x0(i));% 求范数与迭代在同一个循环中;
if temp>normal
normal=temp; %这里用的是无穷范数
end
end%第i不迭代结束
fprintf('\n %d: ',k);
for i=1:n
x0(i)=x(i); %为下一步迭代准备初值;
fprintf('%f',x(i));%输出迭代过程
end
if normal return end end fprintf('\n \n 迭代% d 次后仍未求得满足精度的解\n',N); 六、实验结果 计算结果如下: k )( 1k x)( 2k x)( 3k x 0 0.000000 0.000000 0.000000 1 3.148148 4.800000 2.037037 2 2.156927 3.269136 1.889849 3 2.491668 3.685249 1.936554 4 2.400928 3.545126 1.922650 5 2.431552 3.583275 1.926925 6 2.423232 3.570456 1.925651 7 2.426034 3.573954 1.926043 8 2.425271 3.572781 1.925926 9 2.425527 3.573101 1.925962 10 2.425458 3.572994 1.925951 11 2.425481 3.573023 1.925955 七、实验结果分析 运算结果能够满足精度要求。 雅可比迭代法算法简单,易于学习和应用。