仿真平台与工具应用实践
Jacobi 迭代法求解线性方程组
院 系:
专业班级:
姓 名:
学 号:
指导老师: 实 验 报 告
一、 实验目的
熟悉Jacobi 迭代法原理;
学习使用Jacobi 迭代法求解线性方程组;
编程实现该方法;
二、 实验内容
应用Jacobi 迭代法解如下线性方程组:
⎧4x 1-x 2+x 3=7⎪-7⎨4x 1-8x 2+x 3=-21,要求计算精度为10 ⎪-2x +x +5x =15123⎩
三、 实验过程
(1)、算法理论
Jacobi 迭代格式的引出是依据迭代法的基本思想:构造一个向量系列
{X ()},使其收敛至某个极限X n *,则X *就是要求的方程组的准确解。 Jacobi 迭代
将方程组: ⎧a 11x 1+a 12x 2+ +a 1n x n =b 1⎪a x +a x + +a x =b ⎪2112222n n 2 ⎨ (1) ⎪⎪⎩a n 1x 1+a n 2x 2+ +a nn x n =b n
⎧x 1=b 12x 2+b 13x 3+ +b 1n x n +g 1⎪x =b x +b x + +b x +g ⎪22112332n n 2在假设a ii ≠0,改写成⎨ (2)
⎪
⎪x n =b n 1x 1+b n 2x 2+ +b n (n -1)x n -1+g n ⎩
如果引用系数矩阵
⎡a 11 a 1n ⎤⎡0 b 1n ⎤⎡x 1⎤⎥B =⎢ ⎥⎢ ⎥b =A =⎢ X =, 及向量⎢⎥⎢⎥⎢⎥,
⎢⎢⎢⎣x n ⎥⎦⎣a n 1 a nn ⎥⎦⎣b n 1 0⎥⎦⎡b 1⎤⎡g 1⎤⎢ ⎥g =⎢ ⎥⎢⎥, ⎢⎥,⎢⎢⎣g n ⎥⎦⎣b n ⎥⎦
方程组(1)和(2)分别可写为:AX =b 及X =BX +g ,这样就得到了jacobi 迭代格式X k +1=BX k +g 0用jacobi 迭代解方程组AX =b 时,就可任意取初值X 0带入迭代可知式X k +1=BX k +g ,然后求lim X k 。但是,n 比较大的时候,k →∞
写方程组(1) 和(2) 是很麻烦的,如果直接由A ,b 能直接得到B ,g 就是矩阵与向量的运算了,那么如何得到B ,g 呢?实际上,如果引进非奇异对角矩阵
⎡a 11 0⎤⎥0 (a ii ≠0) D =⎢⎢⎥
⎢⎣0 a nn ⎥⎦
将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 迭代格式:X k +1=BX k +g
(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
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)、算法实现
⎧4x 11-x 12+x 13=7⎪用jacobi 迭代法求解方程组:⎨4x 21-8x 22+x 23=-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迭代法求解线性方程组》
仿真平台与工具应用实践
Jacobi 迭代法求解线性方程组
院 系:
专业班级:
姓 名:
学 号:
指导老师: 实 验 报 告
一、 实验目的
熟悉Jacobi 迭代法原理;
学习使用Jacobi 迭代法求解线性方程组;
编程实现该方法;
二、 实验内容
应用Jacobi 迭代法解如下线性方程组:
⎧4x 1-x 2+x 3=7⎪-7⎨4x 1-8x 2+x 3=-21,要求计算精度为10 ⎪-2x +x +5x =15123⎩
三、 实验过程
(1)、算法理论
Jacobi 迭代格式的引出是依据迭代法的基本思想:构造一个向量系列
{X ()},使其收敛至某个极限X n *,则X *就是要求的方程组的准确解。 Jacobi 迭代
将方程组: ⎧a 11x 1+a 12x 2+ +a 1n x n =b 1⎪a x +a x + +a x =b ⎪2112222n n 2 ⎨ (1) ⎪⎪⎩a n 1x 1+a n 2x 2+ +a nn x n =b n
⎧x 1=b 12x 2+b 13x 3+ +b 1n x n +g 1⎪x =b x +b x + +b x +g ⎪22112332n n 2在假设a ii ≠0,改写成⎨ (2)
⎪
⎪x n =b n 1x 1+b n 2x 2+ +b n (n -1)x n -1+g n ⎩
如果引用系数矩阵
⎡a 11 a 1n ⎤⎡0 b 1n ⎤⎡x 1⎤⎥B =⎢ ⎥⎢ ⎥b =A =⎢ X =, 及向量⎢⎥⎢⎥⎢⎥,
⎢⎢⎢⎣x n ⎥⎦⎣a n 1 a nn ⎥⎦⎣b n 1 0⎥⎦⎡b 1⎤⎡g 1⎤⎢ ⎥g =⎢ ⎥⎢⎥, ⎢⎥,⎢⎢⎣g n ⎥⎦⎣b n ⎥⎦
方程组(1)和(2)分别可写为:AX =b 及X =BX +g ,这样就得到了jacobi 迭代格式X k +1=BX k +g 0用jacobi 迭代解方程组AX =b 时,就可任意取初值X 0带入迭代可知式X k +1=BX k +g ,然后求lim X k 。但是,n 比较大的时候,k →∞
写方程组(1) 和(2) 是很麻烦的,如果直接由A ,b 能直接得到B ,g 就是矩阵与向量的运算了,那么如何得到B ,g 呢?实际上,如果引进非奇异对角矩阵
⎡a 11 0⎤⎥0 (a ii ≠0) D =⎢⎢⎥
⎢⎣0 a nn ⎥⎦
将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 迭代格式:X k +1=BX k +g
(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
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)、算法实现
⎧4x 11-x 12+x 13=7⎪用jacobi 迭代法求解方程组:⎨4x 21-8x 22+x 23=-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迭代法求解线性方程组》