Jacobi迭代法求解线性方程组实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 = k = 17 err = B = x = 六、实验体会 MATLAB是非常实用的软件,能够避免大量计算,简化我们的工作,带来便捷。通过本次试验,我了解了MATLAB软件,提高了解决实际问 题的能力。 七、参考文献 《科学计算与数学建模实验报告_Jacobi迭代法求解线性方程组》