仿真平台与工具应用实践
Jacobi迭代法求解线性方程组
院 系: 专业班级: 姓 名: 学 号: 指导老师:
实 验 报 告
一、 实验目的
熟悉Jacobi迭代法原理;
学习使用Jacobi迭代法求解线性方程组;
编程实现该方法;
二、 实验内容
应用Jacobi迭代法解如下线性方程组:
?4x1?x2?x3?7??7?4x1?8x2?x3??21,要求计算精度为10 ??2x?x?5x?15123?
三、 实验过程
(1)、算法理论
Jacobi迭代格式的引出是依据迭代法的基本思想:构造一个向量系列
?X???,使其收敛至某个极限Xn*,则X*就是要求的方程组的准确解。
Jacobi迭代
将方程组:
?a11x1?a12x2???a1nxn?b1?ax?ax???ax?b?2112222nn2 ? (1)
????an1x1?an2x2???annxn?bn?x1?b12x2?b13x3???b1nxn?g1?x?bx?bx???bx?g?22112332nn2在假设aii?0,改写成? (2)
???xn?bn1x1?bn2x2???bn?n?1?xn?1?gn?如果引用系数矩阵
?a11?a1n??0?b1n??x1??B???????b?A???X?, 及向量??????,
????xn???an1?ann???bn1?0???b1??g1????g??????, ??,
???gn???bn??方程组(1)和(2)分别可写为:AX?b及X?BX?g,这样就得到了jacobi迭代格式Xk?1?BXk?g0用jacobi迭代解方程组AX?b时,就可任意取初值
X0带入迭代可知式Xk?1?BXk?g,然后求limXk。但是,n比较大的时候,
k??写方程组(1)和(2)是很麻烦的,如果直接由A,b能直接得到B,g就是矩阵与向量的运算了,那么如何得到B,g呢?实际上,如果引进非奇异对角矩阵
?a11?0??0??aii?0? D????
??0?ann??将A分解成:A?A?D?D,要求AX?b的解,实质上就有
AX?(A?D)X?DX,而D是非奇异的,所以D?1存在,DX?AX?(D?A)X,从而有X?D?1AX?D?1b,我们在这里不妨令B?I?D?1A,g?D?1b就得到
jacobi迭代格式:Xk?1?BXk?g
(2)算法框图
开始 读入A[][],b[] x=P=(0,0,0) x=Bx’+g
调用 jacobi() 输出 结束 (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 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)、算法实现 ?4x11?x12?x13?7?用jacobi迭代法求解方程组:?4x21?8x22?x23??21 ??2x?x?5x?15313233?正常计算结果是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迭代法求解线性方程组》 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库Jacobi迭代法求解线性方程组实验报告在线全文阅读。
相关推荐: