雅克比迭代法求线性方程组的根

  • 格式:doc
  • 大小:40.50 KB
  • 文档页数:3

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二 雅可比迭代法求线性方程组的根

一、实验目的

学习用雅可比迭代法求线性方程组的解。

二、实验题目

求线性方程组

⎪⎩⎪⎨⎧=++=++=-+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

七、实验结果分析

运算结果能够满足精度要求。

雅可比迭代法算法简单,易于学习和应用。