文档详情

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

发布:2017-04-02约1.73千字共6页下载文档
文本预览下载声明
仿真平台与工具应用实践 Jacobi迭代法求解线性方程组 实 验 报 告 院 系: 专业班级: 姓 名: 学 号: 指导老师: 实验目的 熟悉Jacobi迭代法原理; 学习使用Jacobi迭代法求解线性方程组; 编程实现该方法; 实验内容 应用Jacobi迭代法解如下线性方程组: ,要求计算精度为 实验过程 (1)、算法理论 迭代格式的引出是依据迭代法的基本思想:构造一个向量系列,使其收敛至某个极限,则就是要求的方程组的准确解。 迭代 将方程组: 在假设,改写成 如果引用系数矩阵 , 及向量,,, 方程组(1)和(2)分别可写为:及,这样就得到了迭代格式用迭代解方程组时,就可任意取初值带入迭代可知式,然后求。但是,比较大的时候,写方程组和是很麻烦的,如果直接由,能直接得到,就是矩阵与向量的运算了,那么如何得到,呢?实际上,如果引进非奇异对角矩阵 将分解成:要求的解,实质上就有而是非奇异的,所以存在,从而有我们在这里不妨令就得到迭代格式: (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(errdelta) %判断是否符合精度要求 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)、算法实现 用迭代法求解方程组: 正常计算结果是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迭代法求解线性方程组》 结束 输出 x=P=(0,0,0) 读入 开始 调用 jacobi() x=Bx’+g
显示全部
相似文档