Jacobi迭代法求解线性方程组实验报告

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

仿真平台与工具应用实践

Jacobi迭代法求解线性方程组

实验报告

院系:

专业班级:

姓名:

学号:

指导老师:

一、 实验目的

熟悉Jacobi 迭代法原理;

学习使用Jacobi 迭代法求解线性方程组;

编程实现该方法;

二、 实验内容

应用Jacobi 迭代法解如下线性方程组:

⎪⎩

⎪⎨⎧=++--=+-=+-1552218474321321321x x x x x x x x x ,要求计算精度为710-

三、 实验过程

(1)、算法理论

Jacobi 迭代格式的引出是依据迭代法的基本思想:构造一个向量系列(){}n X ,使其收敛至某个极限*X ,则*X 就是要求的方程组的准确解。 Jacobi 迭代

将方程组: ⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++n

n nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212111212111 )1(

在假设0≠ii a ,改写成()⎪⎪⎩

⎪⎪⎨⎧++++=++++=++++=--n n n n n n n n n n n g x b x b x b x g x b x b x b x g x b x b x b x 112211223231212113132121

)2(

如果引用系数矩阵

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=nn n n a a a a A 1111,⎥⎥⎥⎦

⎤⎢⎢⎢⎣⎡=0011 n n b b B 及向量⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=n x x X 1,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=n b b b 1,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=n g g g 1, 方程组(1)和(2)分别可写为:b AX =及g BX X +=,这样就得到了jacobi 迭代格式01g BX X k k +=+用jacobi 迭代解方程组b AX =时,就可任意取初值0X 带入迭代可知式g BX X k k +=+1,然后求k k X ∞

→lim 。但是,n 比较大的时候,写方程组)1(和)2(是很麻烦的,如果直接由A ,b 能直接得到B ,g 就是矩阵与向量的运算了,那么如何得到B ,g 呢?实际上,如果引进非奇异对角矩阵

()0≠ii a ⎥⎥⎥⎦

⎤⎢⎢⎢⎣⎡=nn a a D 00011 将A 分解成:,D D A A +-=要求b AX =的解,实质上就有,)(DX X D A AX +-=而D 是非奇异的,所以1-D 存在,,)(X A D AX DX -+=从而有,11b D AX D X --+=我们在这里不妨令,1A D I B --=b D g 1-=就得到jacobi 迭代格式:g BX X k k +=+1

(2)算法框图

(3)、算法程序

m 文件:

function x=jacobi(A,b,P,delta,n)

N=length(b); %返回矩阵b的最大长度

for k=1:n

for j=1:N

x(j)=(b(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);

end

err=abs(norm(x'-P)); %求(x'-P)模的绝对值

P=x';

if(err

break;

end

end

E=eye(N,N); %产生N行N列矩阵

D=diag(diag(A));

f=A*inv(D); %f是A乘D的逆矩阵

B=E-f;

P

x=x';

k,err

B

MATLAB代码:

>> clear all

A=[4,-1,1;4,-8,1;-2,1,5];

b=[7,-21,15]';

P=[0,0,0]';

x=jacobi(A,b,P,1e-7,20)

(4)、算法实现

用jacobi 迭代法求解方程组:⎪⎩

⎪⎨⎧=++--=+-=+-1552218474333231232221131211x x x x x x x x x

正常计算结果是2,3,4 ,下面是程序输出结果:

P =

2.0000

4.0000

3.0000

k =

17

err =

9.3859e-008

B =

0 -0.1250 -0.2000

-1.0000 0 -0.2000

0.5000 0.1250 0

x =

2.0000

4.0000

3.0000

四、 实验体会

MATLAB 是非常实用的软件,能够避免大量计算,简化我们的工作,带来便捷。通过本次试验,我了解了MATLAB 软件,提高了解决实际问题的能力。

五、 参考文献

《科学计算与数学建模实验报告_Jacobi 迭代法求解线性方程组》

相关文档
最新文档