Jacobi迭代法求解线性方程组实验报告.doc
文本预览下载声明
仿真平台与工具应用实践
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
显示全部