求解线性方程组

  • 格式:doc
  • 大小:107.00 KB
  • 文档页数:8

《线性方程组求解》实验报告
实验名称:线性方程组求解成绩:___________
专业班级:数学与应用数学1202班姓名:张晓彤学号:2012254010227 实验日期: 2014年11月21日
实验报告日期: 2014年11月21日
一、实验目的
(1)掌握四种求解线性方程组的直接左除法、LU分解法、QR分解法以及Cholesky 分解法.
(2)掌握求解线性方程组过程中的基本理论思想.
(3)能够熟练使用matla软件对线性方程组进行不同方式的求解.
(4)能够区分四种求解方法的不同,以及每种方法的特点和优劣.
二、实验内容
2 .1(验证性实验)验证求解线性方程组的直接左除法、LU分解法、QR分解
法以及Cholesky分解法.给出相关例题进行验证.
例三:用QR 分解法求解线性方程组1231231
234543727105x x x x x x x x x -+=⎧⎪-+=⎨⎪++=⎩,要求写出分解出的
矩阵L 和U.
例四:用Cholesky
分解法求解线性方程组Ax b =,给出A 和b 分别为:
211121113A ⎛⎫ ⎪=- ⎪ ⎪-⎝⎭,634b ⎛⎫ ⎪= ⎪ ⎪⎝⎭
2.2借用实例来区分四种方法的不同
三、实验环境
该实验应用matlab2014来进行实验的验证和设计.
四、实验步骤和结果
b=[8;6;5;1];
[L,U]=lu(A)
x=U\(L\b)
得到方程组的解为:
L =
1.0000 0 0 0
-0.3000 -0.0400 1.0000 0 0.5000 1.0000 0 0 0.2000 0.9600 -0.7742 1.0000 U =
10.0000 -7.0000 0 1.0000 0 2.5000 5.0000 -1.5000 0 0 6.2000 2.2400 0 0 0 4.9742
x =
-1
1
1
所以,通过左除法得到的线性方程组的解为:(0,1,1,1)T x =-
(3)QR 分解法
例三:用QR 分解法求解线性方程组1231231
234543727105x x x x x x x x x -+=⎧⎪-+=⎨⎪++=⎩,要求写出分解出
的矩阵L 和U.
求解:由方程组可以得到系数矩阵和初始向量分别为:
1115432710A -⎛⎫ ⎪=- ⎪ ⎪⎝⎭,475b ⎛⎫ ⎪= ⎪ ⎪⎝⎭
给出matlab 程序:
A=[1,-1,1;5,-4,3;2,7,10];
b=[4,7,5]';
[Q,R]=qr(A)
x=R\(Q\b)
得到结果:
Q =
-0.1826 -0.0956 -0.9785
-0.9129 -0.3532 0.2048
-0.3651 0.9307 -0.0228
R =
-5.4772 1.2780 -6.5727
0 8.0229 8.1517
0 0 -0.5917
x =
-4.6154
-4.2308
4.3846
所以,通过左除法得到的线性方程组的解为:( 4.6154, 4.2308,4.3846)T x =--
(4)Cholesky 分解法
例四:用Cholesky 分解法求解线性方程组Ax b =,给出A 和b 分别为:
211121113A ⎛⎫ ⎪=- ⎪ ⎪-⎝⎭,634b ⎛⎫ ⎪= ⎪ ⎪⎝⎭
给出matlab 程序:
A=[2,1,1;1,2,-1;1,-1,3];
b=[6;3;4];
R=chol(A)
x=R\(R'\b)
得到结果:
R =
1.4142 0.7071 0.7071
0 1.2247 -1.2247
0 0 1.0000
x =
2.0000
1.0000
1.0000
所以,通过左除法得到的线性方程组的解为:(2,1,1)T x =
4.2借用实例来区分四种方法的不同
例1:用直接左除法、LU 分解法、QR 分解法求解下面的线性方程组
A=[2,1,5,7;-1,3,-5,6;1,-1,3,9;-4,6,-1,5];
b=[16;7;19;41];
x1=A\b %左除法得到的解%
[L,U]=lu(A);
x2=U\(L\b) %LU 分解法得到的结果%
[Q,R]=qr(A);
x3=R\(Q\b) %QR 分解法得到的结果%
得到如下结果: x1 =
-7
1
3
2
x2 =
-7
1
3
2
x3 =
-6.999999999999998
1.000000000000001
2.999999999999999
1.999999999999999 从结果中我们可以看到,用三种方法求出来的结果存在差异,但是差异及其小,直接左除法得到的结果和LU 分解法得到的结果相同,但是QR 分解法的到的结果却和前两者不一样,这说明,在求解线性方程组分时候,采用的方法不同得到的结果可能存在差异。

例2:用Cholesky 分解法对下面方程组进行求解
123211312171135x x x ⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪-= ⎪⎪ ⎪ ⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭
给出matlab 程序:
A=[2,1,1;1,2,-1;1,-1,3];
b=[3;7;5];
R=chol(A);
x=R\(R'\b)
得到方程组的解为:
x =
-9.3333
12.6667
9.0000
五、实验讨论、结论
通过这次实验,可以看出,在求解线性方程组的时候,我们可以采用直接左除法、LU分解法、QR分解法以及Cholesky分解法这四种直接法来对线性方程组进行求解,但是需要注意的是,Cholesky分解法只能求解系数矩阵是对称正定的线性方程组,对其他类型的方程组不适用,我们还应知道,不同的方法对同一道题目来说,得到的结果可能相同可能不同.同时要明确的问题是:直接法实际上是通过有线的运算步骤,来求得线性方程组的精确解,但实际计算中,由于舍入误差的存在和影响,这种方法也只能求得方程组的近似解.
对于这四种方法,它们各有各的特点:
(1)直接左除法
采用直接左除法来对线性方程组进行求解的时候,要求线性方程组的系数矩阵必须是非奇异的.该方法是求解线性方程组的最简单的方法,也是最常用的一中方法.它的matlab调用格式为\
x A b
=.
(2)LU分解法
LU分解法也叫直接三角分解法,是将系数矩阵A分解为一个下三角矩阵
L和一个上三角矩阵的乘积的形式,即A LU
=,那么求解Ax b
=的问题就转化为了求解Ly b
=的问题.
=和Ux y
(3)QR分解法
该方法是将系数矩阵分解为一个正交矩阵Q和一个上三角矩阵R乘积的形式,要注意的是QR分解只能对方正进行.
(4)Cholesky分解法
Cholesky分解法也是直接法的一种,但是需要注意的是:Cholesky分解法只能对系数矩阵为方正的线性方程组进行求解,对其他形式的方程组是不适用的.
六、参考资料
【1】李庆阳,王能超,易大义,数值分析第五版,清华大学出版社,1995. 【2】刘卫国,matlab程序设计与应用,高等教育出版社,2002.。