线性方程组直接法(3)
第3章 线性方程组直接求解

顺序高斯消元法 列主元高斯消元法 全主元高斯消元法 高斯约当消元法 消元形式的追赶法 LU分解法 LU分解法 矩阵形式的追赶法 平方根法
1
3.1 引言
n阶线性方程组的一般形式为: 阶线性方程组的一般形式为: 阶线性方程组的一般形式为 n阶线性方程组一般形式的矩阵形式为: 阶线性方程组一般形式的矩阵形式为: 阶线性方程组一般形式的矩阵形式为 a11x1+a12x2+…+a1nxn=b1 Ax = b a21x1+a22x2+…+a2nxn=b2 … … … … an1x1+an2x2+…+annxn=bn 阶数在100~150以上的线性方程组为高阶线性方程组 ~ 阶数在 以上的线性方程组为高阶线性方程组 阶数在100~150以下的线性方程组为低阶线性方程组 阶数在 ~ 以下的线性方程组为低阶线性方程组 系数矩阵的大部分元素为零元素的线性方程组为稀疏线性方程组 系数矩阵的大部分元素为非零元素的线性方程组为稠密线性方程组 实际应用中,经常见到高阶稀疏线性方程组,低阶稠密线性方程组, 实际应用中,经常见到高阶稀疏线性方程组,低阶稠密线性方程组, 对称正定线性方程组,带状线性方程组等等。 对称正定线性方程组,带状线性方程组等等。 克莱姆法则并不实用。常用的数值解法主要分为两类: 克莱姆法则并不实用。常用的数值解法主要分为两类: 直接求解方法是指经过有限次四则运算,求出线性方程组精确解的方法。 ① 直接求解方法是指经过有限次四则运算,求出线性方程组精确解的方法。 迭代求解方法是指构造一种迭代方法,由某个( 迭代初值(粗略解), ② 迭代求解方法是指构造一种迭代方法,由某个(套)迭代初值(粗略解), 得到近似解序列,用序列极限逐步逼近线性方程组精确解的方法。 得到近似解序列,用序列极限逐步逼近线性方程组精确解的方法。
解线性方程组的直接方法

解线性方程组的直接方法一、高斯消元法高斯消元法是解线性方程组最常用的方法之一、它通过一系列的消元操作,将线性方程组转化为阶梯型方程组,从而求解未知数的值。
1.确定线性方程组的阶数和未知数的个数。
设线性方程组中有n个未知数。
2.将线性方程组写成增广矩阵的形式。
增广矩阵是一个n行n+1列的矩阵,其中前n列是线性方程组的系数矩阵,第n+1列是等号右边的常数。
3.通过初等行变换(交换行、数乘行、行加行)将增广矩阵化为阶梯型矩阵。
具体步骤如下:a.首先,找到第一个非零元素所在的列,将它所在的行视为第一行。
b.将第一行的第一个非零元素(主元)变成1,称为主元素。
c.将主元所在列的其他元素(次元素)变为0,使得主元所在列的其他元素只有主元素是非零的。
d.再找到第一个非零元素所在的列,将它所在的行视为第二行,并重复上述步骤,直到将增广矩阵化为阶梯型矩阵。
4.根据阶梯型矩阵求解未知数的值。
具体步骤如下:a.从最后一行开始,依次求解每个未知数。
首先,将最后一行中非零元素所在的列作为含有该未知数的方程,将该未知数的系数设为1b.将含有该未知数的方程中其他未知数的系数设为0,并对其他方程进行相应的变换,使得该未知数所在列的其他元素都为0。
c.重复上述步骤,直到求解出所有未知数的值。
高斯消元法的优点是简单易懂、容易实现,但当线性方程组的系数矩阵接近奇异矩阵时,计算精度可能会降低。
二、矩阵求逆法矩阵求逆法是解线性方程组的另一种直接方法。
它通过对系数矩阵求逆,然后与常数矩阵相乘,得到未知数的值。
1.确定线性方程组的阶数和未知数的个数。
设线性方程组中有n个未知数。
2.将线性方程组写成矩阵方程的形式,即Ax=b,其中A是一个n阶方阵,x和b分别是n维列向量。
3.求系数矩阵A的逆矩阵A^-1a. 首先,计算系数矩阵A的行列式det(A)。
b. 判断det(A)是否为0,如果det(A)=0,则该线性方程组无解或有无穷多解;如果det(A)≠0,则系数矩阵A可逆。
第3章_解线性方程组的直接方法

变换结束后增广矩阵最后一列就是解,不
需回代。这种解法称为约当消去法。
它容易学习掌握,也容易编写计算机程序。 其计算过程可写为:
2020/1/22
18
数值计算方法
对k=1~n(步)做
对j= k+1~n (行)令 akj akj / akk
对I=1~n但i≠k(行)做(“适当倍数”)
对j= k+1~n+1(列)令aij aij aikakj
4
数值计算方法
例如: 要解方程组
x1 2x2 3x3 1 5x1 x2 3x3 4
7x1 8x2 11x3 3
其步骤如下:将第一个方程乘-5,-7,分别加于第二、 第三方程,消去未知量x1,得同解方程组
x1 2x2 3x3 1 9x2 18x3 9
6x2 10x3 10
2020/1/22
5
数值计算方法
将所得方程组的第二方程乘 2 ,加到第三方程,
3
消去未知量x2,得同解方程组
x1 2x2 3x3 1
9x2 18x3 9
2x3 4
这是上三角形方程组。
由第三方程解得x3=-2,将x3代入第二方程可
数值计算方法
不过交换两列相当于改变未知量顺序,所 以需用一数组,专门记录未知量顺序及其变化, 并在最后调整解的顺序,使解中n个数与未知 量正确对应。
假定用数组L表求未知量的顺序,则全主 元法的计算步骤可归纳如下:
2020/1/22
26
数值计算方法
对j=1~n令Lj j(记未知量原始顺序) 对k=1~n-1做(以下为消去过程)
bn
线性方程组的直接法

Hilbert 矩阵H n =[h i,j ]∈R n*n ,其元素h i,j =1/(i+j-1),分别对n=2,3,4…... (1)计算cond(H n )∞,分析条件数作为n 的函数如何让变化?(2)令x=(1,1…..1)T ∈R n ,计算b n =H n *x ,然后用Gauss 消去法或cholesky 方法解方程组b n =H n *x ,解出的解为x , 计算剩余变量r n =b n - H n *x 和误差向量;▽x=x -x 。
(3)分析对每个n ,x 分量的有效数字如何随n 变化,此变化与条件数有何联系。
当n 为多大时绝对误差达到100%(即X 连一位有效数字也没有了)。
解:希尔伯特矩阵是著名的病态矩阵。
n 阶Hilbert 矩阵为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-++=)12/(1)1/(1/1)1/(13/12/1/12/11n n n n n H n 其条件数 Cond(H n )∞ 如下表所示Input(‘input n=’); H=hilb(n) Cond(H,inf)随着n 的增大,矩阵条件数迅速增加。
猜测:希尔伯特矩阵条件数以指数规律增长。
即,设矩阵阶数为n ,有Cond(H n ) ∞≈ exp( a n + b )用数据拟合的方法验证。
问题分析:由于选择拟合函数为指数函数,直接列出超定方程组将是非线性的方程组。
为了便于计算,对表中的条件数做对数变换,问题转化为线性拟合问题ln[Cond(H n ) ∞] = a n + b ,( n = 2,3,4,5,6)实际操作时使用MA TLAB 的多项式拟合命令。
线性拟合图形如下线性函数的两个系数分别为a = 3.3216,b = – 3.3474故指数拟合函数为:Cond(H n)∞≈exp(3.3216 n –3.3474)拟合函数的残差向量为r1r2r3r4r50 -9.0000e+001 8.8000e+002 4.0420e+003 -5.9917e+005 MATLAB程序段如下C=[];for k=2:6H=hilb(k);C=[C,cond(H,inf)];endLC=log(C);n=2:6;P=polyfit(n,LC,1)plot(n,LC,'o',n,polyval(P,n))residure=C-exp(polyval(P,n))2. x=(1,1…..1)T∈R n,.,令b=H n x,用高斯消去法求解方程组H n x = b解出x。
解线性方程组的直接方法

或写为矩阵形式
a11 a21
a12
a22
a1n x1 b1
a2n
x2
b2
,
am1 am2 amn xn bm
(2.1)
17
简记为 Ax b. 例1 用消去法解方程组
x1 x2 x3 6,
4x2 x3 5,
2x1 2x2 x3 1.
(2.2) (2.3) (2.4)
其中用 r表i 示矩阵的第 行i . 由此看出,用消去法解方程组的基本思想是用逐次消
去未知数的方法把原方程组 Ax 化b为与其等价的三角 形方程组,而求解三角形方程组可用回代的方法.
上述过程就是用行的初等变换将原方程组系数矩阵化
为简单形式(上三角矩阵),从而将求解原方程组(2.1)的
问题转化为求解简单方程组的问题.
x
j
)/ ai(ii)
(i n1,n2,,1).
(2) 如果 为A非奇异矩阵,则可通过高斯消去法(及交
换两行的初等变换)将方程组 Ax约b化为(2.10).
29
算法1(高斯算法)
设 AR mn (m 1), s min( m1,n), 如果
a(k) kk
0(k
1,2,,s),
本算法用高斯方法将
非奇异矩阵 P使得
设 A为 n阶矩阵,则存在一个
J1(1)
P1 AP
J 2 (2 )
,
J r (r )
13
其中
i
1
i
J
i
(i
)
i 1
i ni ni
r
ni 1(i 1,2,,r),且 ni n. i1
为若当(Jordan)块.
Chapter32线性方程组的直接法

a21x1 a22 x2 a2n xn b2
(1)
an1x1 an2 x2 ann xn bn
矩阵表示记为 AX b
a 这里 A
, 我们假设 A 0,
ij nn
X (x1 , , xn )T , b (b1 ,
, bn )T.
❖ 全主元消去法
在第k步消去前, 在系数矩阵右下角的n-k+1阶 主子阵中,选绝对值最大的元素作为主元素。
| ak pq
|
max
k i, jn
|
aikj
|0
(1) If p k then 交换第 k 行与第p行; If q k then 交换第 k 列与第 q 列;
(2) 消元
注:列交换改变了 xi 的顺序,须记录交换次序,
矩阵A可进行三角分解,即A=LU
注: (1) L 为单位下三角阵而 U 为一般上三角阵的分 解称为Doolittle 分解
(2)L 为一般下三角阵而 U 为单位上三角阵的分
解称为Crout 分解。
➢ Doolittle分解法 :
思 路
通过比较法直接导出L 和 U 的计算公式。
a11 ... a1n 1
i1
i1 11
对 k 2, 3, , n 计算
k 1
u a l u
kj
kj
kr rj
r 1
jk, ,n
k 1
l a l u u (
ik
ik
)/ i k 1 , , n
ir rk kk
r 1
LU 分解求解线性方程组
AX b LY b , UX Y
1
l
数值分析 第三章解线性方程组的直接法

T T A LDU 0 , AT U 0 DT LT , A AT U 0 L A LDLT
由于A是正定矩阵,所以D中的元素都大于零,可以把D也再分解
14
d11 d11 1 1 1 d 22 D2 D2 , D2 D d nn
lii 1,lik 0 k i , ukj 0 k j
11
ai1 由此得算法: u1 j a1 j , j 1, 2,, n; li1 a ,i 1, 2,, n 11
uij aij lik ukj , j i, i 1,, n; lij
还可以进一步用标度化的选主元(相对最大)
6
第三节 矩阵的三角分解
消元法求解方程组是通过行初等变换把系数矩阵化为对角阵,由 线性代数知识可知,左乘一个初等矩阵,就相当于做一次行变换.
1 a 21 a11 a 记 L = 31 1 a11 an1 ห้องสมุดไป่ตู้ 11
第三章 解线性方程组的直接法
第一节 引言
解线性方程组的方法可分为两大类:直接法和迭代法. 直接法的基本原理就是高斯消元法,再根据数值计算的特点 做一些适当的处理而得到的一类算法.直接法的特点是没有 截断误差,只有计算误差(舍入误差). 迭代法是类似于上一章单个方程那样,以某种方式构造一 个向量序列,使得这个向量序列收敛到解向量.因此迭代 法既有截断误差又有舍入误差.
0.01000 0.01200 0 0.100 103 0 0 .
8.010 44.41 1175 105 6517 105 x3 5.546; x2 100.0; x1 104.0 0.1670 0.6781
计算方法第三章线性方程组的直接解法

5 3
3 1
r3
r1 6
6 1 18 2
1 0
4 5 1 3
3 1
r3 r225
1 0
4 1
5 3
3 1
0 25 48 16
0 0 27 9
林龙
计算方法
6
化原方程组为三角方程组的过程为消元过程. 解三角方程组的过程为回代过程.
也可将上边的增广矩阵进一步化简.
1 4 5 3
1 0 7 1
xi
Di D
(i
1, 2,3,
),由于方程含有n 1个
行列式.如对每个行列式按展开定理来计算.
用克莱姆法则求解,所需要的乘除运算量为
n!(n2 1) n次,若n 20用每秒一千万次的
计算机要三百万年,所以并不是凡直接法都
可以用来做实际运算.
林龙
计算方法
4
设有
§3.1直接法
a11x1 a12 x2 a21x1 a22 x2
解 : 10
7
0
7
r1 r2
5 1 5 6
林龙
计算方法
16
10 3 5
7 2 1
0 6 5
7 4 6
r2
3 10
r1
r3
5 10
r1
10
0
0
7 0.1 2.5
0 7 6 6.1 5 2.5
r2 r3
r3
1 25
r2
10 7 0 7 x3 1
0
2.5
5
2.5
x2
2.5 5x
nn
a11 a12 .... a1n 1 0 0
a21
a22
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
解Ly = b , 得
y2 y3 y 4 )T = (10 20 − 17 / 11 − 16)T
解Ux = y , 得
xn =
T
yn u nn
j =r + 1
( x1
x2
x3
x4 ) = (1 2 3 4 )T
yr − xr =
∑u
n
rj
xj
urr
Doolittle 法在计算机上实现是比较容易的 但如果按上述流程运算仍需要较大的存储空间:
对于线性方程组
Ax = b
系数矩阵非奇异 ,经过Doolittle分解后
A = LU
线性方程组可化为下面两个三角形方程组
Ly = b
y为中间未知量向量
1 l 21 L = l 31 M l n1 1 l 32 M ln 2
Ux = y
O L 1
u 13 u 14 u 23 u 24 a33 a34 a 43 a 44 u 13 u 23 u 33 l43 u 14 u 24 u 34 u 44
y1 y2 b3 b4
u 11 u 12 r=3 l21 u 22 −→ l31 l32 l 41 l42
u 13 u14 u 23 u 24 u 33 u 34 l43 a 44
A, b , x , L ,U , y都需要单独的存储空间
而从lij , uij的计算过程(1) ~ ( 4 )式可知 求出U的第一行u 1 j 后a1 j ( j ≥ 1)的存储位置即不再需要
求出L的第一列li 1后ai 1 (i ≥ 2 )的存储位置即不再需要
求出U的第r行urj 后arj ( j ≥ r )的存储位置即不再需要
a11 M A = ar 1 M a n1 L a1 r O M L arr M L anr L a1 n 1 O M M L arn = lБайду номын сангаасr +1, 1 L 1 M O M M L ann l n1 L lnr O L 1
j = r ,L , n r = 1 ,2 , L , n
air = ∑ lik u kr
k =1 r −1
r
a rj = ∑ lrk u kj + 1 ⋅ u rj
k =1
air = ∑ lik u kr + lir u rr
k =1
因此可以推导出
u1 j = a1 j ai 1 li1 = u 11
第二章 解线性方程组的直接法
§2.4 直接三角分解法
§ 2.4
直接三角分解法
一、基本的三角分解法 (Doolittle法)
若 n阶方阵 A = ( a ij ) n×n 的顺序主子式 Dk ≠ 0 , k = 1 ,2 , L , n
则由上节可知 , A的 LU 分解 A = LU 存在且唯一 , 即
T
u rj = a rj − ∑ l rk u k j
k =1
r −1
T
0 u33 u34 ) = (0 0 − 3 / 11 − 2 / 11) 0 1 l43 )
T
lir =
air − ∑ lik ukr
k =1
r −1
urr
(0 (0 ( y1
= (0 0 1 − 9 )T
0 0 u44 ) = (0 0 0 − 4 )
0 −3 2 10 − 3 − 4 − 12 13 1 2 3 −4 4 14 9 − 13
x1 10 x2 = 5 x3 − 2 x 4 7
u1 j = a1 j
u 14 a24 a34 a 44
y1 u 11 u 12 b2 r = 2 l21 u 22 −→ l31 l32 b3 l b4 41 l42 y1 u 11 u 12 y2 r = 4 l21 u 22 y 3 − → l31 l32 l b4 41 l42
1 M ln 3
u11 u12 u 22 U =
u 13 u 23 O
L L u n − 1 ,n − 1
u1 , n u2 , n M u n − 1 ,n unn
由第一节三角形方程组的知识, 不难得到Ly = b的解 :
y1 = b1 y2 = b2 − l21 y1
li 1 = ai1 u 11
解:
由Doolittle分解
u12 l21 u13 l31 u14 ) = (2 10 0 − 3) l41 )T = (1 − 1.5 0.5 2 )T
(u11 (1
(0 (0 (0
u22 u23 u24 ) = (0 11 − 12 8.5 ) 1 l32 l42 ) = (0 1 − 3 / 11 − 6 / 11)
a12 a 22 a 32 a 42
a13 a23 a33 a 43
a14 a 24 a 34 a 44
b1 b2 b3 b4
存储单元(位置)
u 11 r =1 l21 −→ l31 l 41
u12 a 22 a 32 a 42
u 13 a23 a33 a43
u11 L u1 r L u1 n O M M ⋅ u rr L u rn O M u nn
可知A的第r列元素主对角线以下元素 air (i = r + 1,L , n)为
air = ∑ lik u kr
k =1
r
i = r + 1, L , n r = 1, 2 , L , n − 1 i = 2 , 3, L , n
r −1
li 1 =
a i1 u 11
lir =
air − ∑ lik ukr
k =1
urr
2 3 − r=2 2 − → 1 2 2 2 3 − r=3 2 − → 1 2 2
10 17 11 − 12 20 2 3 − 3 − 4 − 2 11 6 − 9 − 13 7 11 10 0 −3 10 17 11 − 12 20 2 3 3 2 17 − − − − 11 11 11 11 6 − − 9 − 13 7 11
r −1 k =1
10 5 −2 7
0 − 3 10 2 10 3 − − 4 − 12 13 5 r =1 − → 12 2 3 − 4 − 2 2 2 14 9 − 13 7
u1
j
= a1
j
u rj = a rj − ∑ l rk u k j
显然 , r = 1时 , ai 1 = li 1u11
综合以上分析,有
a1 j = u1 j
r
j = 1,2 ,L , n
ai 1 = li 1u 11
i = 2 ,3 , L , n i = r + 1, L , n r = 1 ,2 ,L , n − 1
a rj = ∑ lrk u kj
k =1 r −1
y1 y2 y3 y4
从上式最后一个矩阵中 可知 L , U , y 然后解线性方程组 Ux = y
紧凑格式的 Doolittle 法
例2. 用紧凑格式的Doolittle 法解方程组 (例1) 解:
a11 a 21 A= a 31 a 41 a12 a22 a32 a42 a13 a23 a33 a 43 a14 a24 a34 a 44 a15 2 10 0 −3 a25 − 3 − 4 − 12 13 = a35 1 2 3 −4 a45 9 − 13 4 14
根据矩阵的乘法原理 , A的第一行元素 a 1 j 为
a1 j = u 1 j
j = 1,2 , L , n
A的第 r 行元素主对角线以右元 素 arj ( j = r , L , n )为
a rj = ∑ l rk u kj
k =1
r
j = r ,L , n r = 1, 2 , L , n
同样,由
y r = br − ∑ lrj y j
j =1 r −1
r = 2 ,3 ,L , n
1 l21 L = l31 M l n1
1 l 32 M ln 2 1 M ln 3
O L 1
因此再由Ux = y的解便得到Ax = b的解 u u yn xn = u unn
求出 y1后 b1的存储位置即不再需要
求出yi 后bi (i ≥ 2 )的存储位置即不再需要 因此yi的存储可以使用 bi (i ≥ 1)空出的存储位置
bi ⇐ yi , i = 1, 2 , L , n
直接三角分解的Doolittle法可以用以下过程表示 :
a11 a 21 a 31 a 41 a12 a 22 a 32 a 42 a13 a23 a33 a 43 a14 a 24 a 34 a 44 a15 a11 a25 a 21 = a35 a 31 a45 a 41