仿真平台与工具应用实践Jacobi迭代法求解线性方程组实验报告院系:专业班级:姓名:学号:指导老师:一、实验目的熟悉Jacobi迭代法原理;学习使用Jacobi迭代法求解线性方程组;编程实现该方法;二、实验内容应用Jacobi迭代法解如下线性方程组:1552218474321321321xxxxxxxxx,要求计算精度为710三、实验过程(1)、算法理论Jacobi迭代格式的引出是依据迭代法的基本思想:构造一个向量系列nX,使其收敛至某个极限*X,则*X就是要求的方程组的准确解。Jacobi迭代将方程组:nnnnnnnnnnbxaxaxabxaxaxabxaxaxa22112222212111212111)1(在假设0iia,改写成nnnnnnnnnnngxbxbxbxgxbxbxbxgxbxbxbx112211223231212113132121)2(如果引用系数矩阵nnnnaaaaA1111,0011nnbbB及向量nxxX1,nbbb1,nggg1,方程组(1)和(2)分别可写为:bAX及gBXX,这样就得到了jacobi迭代格式01gBXXkk用jacobi迭代解方程组bAX时,就可任意取初值0X带入迭代可知式gBXXkk1,然后求kkXlim。但是,n比较大的时候,写方程组)1(和)2(是很麻烦的,如果直接由A,b能直接得到B,g就是矩阵与向量的运算了,那么如何得到B,g呢?实际上,如果引进非奇异对角矩阵0iiannaaD00011将A分解成:,DDAA要求bAX的解,实质上就有,)(DXXDAAX而D是非奇异的,所以1D存在,,)(XADAXDX从而有,11bDAXDX我们在这里不妨令,1ADIBbDg1就得到jacobi迭代格式:gBXXkk1(2)算法框图开始读入[][][],bAx=P=(0,0,0)x=Bx’+g输出结束调用jacobi()(3)、算法程序m文件:functionx=jacobi(A,b,P,delta,n)N=length(b);%返回矩阵b的最大长度fork=1:nforj=1:Nx(j)=(b(j)-A(j,[1:j-1,j+1:N])*P([1:j-1,j+1:N]))/A(j,j);enderr=abs(norm(x'-P));%求(x'-P)模的绝对值P=x';if(errdelta)%判断是否符合精度要求break;endendE=eye(N,N);%产生N行N列矩阵D=diag(diag(A));f=A*inv(D);%f是A乘D的逆矩阵B=E-f;Px=x';k,errBMATLAB代码:clearallA=[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迭代法求解方程组:1552218474333231232221131211xxxxxxxxx正常计算结果是2,3,4,下面是程序输出结果:P=2.00004.00003.0000k=17err=9.3859e-008B=0-0.1250-0.2000-1.00000-0.20000.50000.12500x=2.00004.00003.0000四、实验体会MATLAB是非常实用的软件,能够避免大量计算,简化我们的工作,带来便捷。通过本次试验,我了解了MATLAB软件,提高了解决实际问题的能力。五、参考文献《科学计算与数学建模实验报告_Jacobi迭代法求解线性方程组》