数值分析_lec4_解线性方程组_LU分解法_1013

合集下载

lu分解迭代求精法

lu分解迭代求精法

lu分解迭代求精法
LU分解是一种常用的矩阵分解方法,用于求解线性方程组或矩阵的逆。

LU分解迭代求精法是指在已经进行了LU分解的基础上,通过迭代逐步求取精确解的方法。

下面以迭代求解线性方程组为例来说明LU分解迭代求精法的步骤:
1. 对系数矩阵A进行LU分解,得到下三角矩阵L和上三角矩阵U。

2. 将线性方程组Ax=b转化为LUx=b。

3. 设定初始解向量x^(0)的初始值。

4. 迭代计算x^(k+1) = U^(-1)(b - Lx^(k)),其中k为迭代次数。

5. 判断精度是否满足要求,如果满足则停止迭代,否则返回第4步。

迭代求解的精度取决于迭代次数和初始解向量的选择,一般可以使用收敛准则来判断是否满足要求。

常用的收敛准则包括残差准则和误差准则。

需要注意的是,LU分解迭代求精法虽然可以提高解的精度,但在某些情况下可能会导致迭代过程发散或慢速收敛。

因此,在实际应用中需要根据具体问题选择合适的迭代方法和初始解向量,并进行收敛性分析以保证求解结果的可靠性和精度。

求解线性方程组的LU分解法

求解线性方程组的LU分解法
[数值算法]求解线性方程组的LU分解法
由于求解三解方程较易,所以,考虑将系数矩阵A分解成两个三角矩阵的乘积,
即:A=LU的形式
其中,L为下三解矩阵,U为上三解矩阵,则线性方程组:
Ax=b
可改写为LUx=b
令Ux=y
得Ly=b
然后,用前代方法求Ly=b得列矩阵y,再用回代方法求Ux=b,得到的列矩阵x即为所求的线性方程组的解.
free(yAnsList);
}
/*The matrix’s LUPation Method
This version is implemnted by EmilMatthew 05/8/19
You can use these code freely , but I'm not assure them could totally fit your needs.
/*memory apply*/
matrix_L=(Type**)malloc(sizeof(Type*)*len);
matrix_U=(Type**)malloc(sizeof(Type*)*len);
for(i=0;i<len;i++)
{
matrix_L[i]=(Type*)malloc(sizeof(Type)*len);
}
/*Check the input data*/
showArrListFloat(bList,0,len);
show2DArrFloat(matrixArr,len,len);
#if DEBUG
printf("\n*******start of test program******\n");
printf("now is runnig,please wait...\n");

数值分析解线性代数方程组的直接解法省公开课一等奖全国示范课微课金奖PPT课件

数值分析解线性代数方程组的直接解法省公开课一等奖全国示范课微课金奖PPT课件

i 2, , n, j 2, , n
b (2) i
b (1) i
mi1b1(1) ,
i 2, , n
对方程组A(1) x b(1)从左边乘以L1 L1 A(1) x L1b(1)
数值分第析18页
数值分析
第二步:设a2( 22 )
0,取mi 2
a(2) i2
a(2) 22
,i
3, ..., n
数值分第析4页
数值分析
数值求解方法有以下三条路径(三种框架)
直接法:利用Gauss消元或矩阵分解,经过有限次运 算可求出准确解。
迭代法:结构迭代格式,产生迭代序列,经过无限 次迭代过程求解。有限次截断得近似解。
极小化方法:结构二次模函数,用迭代过程求二次
模函数极小化问题,即变分法(经
n次运算,理论上得准确解)要求A
数值分析
将方程组Ax=b系数矩阵与右端项合并为
a11 a12
A, b
a21
a22
an1
an2
a1n b1
a2n
b2
A
ann
bn
记A
(1)
A
a1(11)
...
a(1) 1n
b(1) 1
1(1)
,
(1) 2
,
...,
(1) n
,
b(1)
an(11)
...
a(1) nn
b(1) n
第一步:设a1(11) 0, 取mi1 aa( (1i1111) ),
6 3 3
x1
2x2 x2
3x3 2x3 3x3
6 3 3
回代求得 x3 3 / 3 1
x2 (3 2 x3 ) (3 2 1) 1

数值分析高斯顺序消去法、列主元消去法LU分解法

数值分析高斯顺序消去法、列主元消去法LU分解法

数值分析实验报告(1)学院:信息学院班级:计算机0903班姓名:***学号:********课题一A.问题提出给定下列几个不同类型的线性方程组,请用适当的方法求解线性方程组1、设线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------1368243810041202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 x *= ( 1, -1, 0, 1, 2, 0, 3, 1, -1, 2 )T2、设对称正定阵系数阵线方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------19243360021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515229232060 x * = ( 1, -1, 0, 2, 1, -1, 0, 2 )T3、三对角形线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x = ⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 x *= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 )TB.(1)对上述三个方程组分别用Gauss 顺序消去法与Gauss 列主元消去法;平方根 与改进平方根法;追赶法求解(选择其一) (2)编写算法通用程序(3)在应用Gauss 消去时,尽可能利用相应程序输出系数矩阵的三角分解式C.(1)通过该课题的程序编制,掌握模块化结构程序设计方法 (2)掌握求解各类线性方程组的直接方法,了解各种方法的特点 (3)体会高斯消去法选主元的必要性 实验步骤:(高斯消去法,列主元,LU )1顺序高斯消去法2.LU 分解法3.列主元高斯消去法(如下图)(1)高斯消去法运行结果如下(2)对方程的系数矩阵进行LU分解并求出方程组的解(3)列主元高斯消去法实验体会总结:利用gauss消去法解线性方程组的时候,如果没有经过选主元,可能会出现数值不稳定的现象,使得方程组的解偏离精确解。

线性方程组数值解法LU分解法

线性方程组数值解法LU分解法
( 3 ) 解 Ly b 和 Ux y
i1
1 ) y 1 b 1 ; y i b i l ij y j )( i 2 ,..., n ); j1
n
2 ) x n y n / a nm ; x i ( y i u ij x j ) / u ii ( i n 1 ,..., 2 ,1 ); ji1
a(1) i1
a(1) 11
则 (1)行(-li1) (i)行 i 2,3,...,n,其矩阵形式为
1 l2 1 .l.3.1 ln1
1
aa((121111))
01
...
......
...
0 0 ...... 1a(n11)
L1
a(1) ... ... a(1) a(1)
12
a(1) 22
3.2.2 Doolittle分解
此 分 解 在 于 如 何 算 出 L,U 的 各 元 素 , 以 n 3为 例
a11 a12 a13 1
a
21
a22
a
2
3
l
2
1
1
u11 u12 u13
u 22
u
2
3
Байду номын сангаас
a31 a32 a33 l31 l32 1
u 33
k 1时 : a1 j u1 j u1 j a1 j ( j 1, 2, 3)
Doolittle分解
计算 l k 1 k ,..., l nk 由于 i k ,于是由
u1k
a ik
[ li1 ...,
l
ik
1
,1
,
0
...
0
]
u kk 0

数值分析第三章解线性方程组的直接方法演示文稿

数值分析第三章解线性方程组的直接方法演示文稿

省去换列的步骤,每次仅选一列中最大的元。
| aik ,k
|
max
kin|aik Nhomakorabea|
0
§1 Gaussian Elimination – Pivoting Strategies
例:
109
1
1 1
1 2
1 109
1 1
2 1
1 0
1 1
2 1
x2 1 , x1 1 ✓
注:列主元法没有全主元法稳定。
➢ 选主元消去法
例:单精度解方程组
109
x1
x2
1
x1 x2 2
/*
精确解为
x1
1 1 109
8个
1.00...0100...和
x2 2
x1
8个
0.99 ...9899...*/
用Gaussian Elimination计算:
m21 a21 / a11 109 8个 a22 1 m21 1 0.0 ...01109 109 109
b (1)
b
b1(1) ...
bn(1)
Step 1:设a1(11) ,0计算因子
mi1
a (1) i1
/
a (1) 11
(i 2, ..., n)
将增广矩阵/* augmented matrix */ 第 i 行 mi1 第1行,
得到
a (1) 11
a (1) 12
...
a (1) 1n
b(1) ]
a(1) 11
...
a(1) 1n
b1(1)
A b (2) (2)
1
Step n 1:
Ln1Ln2 ... L1

LU解线性方程组

LU 分解法解线性方程组一. 实验目的1.熟练运用已学计算方法求解方程组2.加深对计算方法技巧,选择正确的计算方法来求解各种方程组3.培养使用电子计算机进行科学计算和解决问题的能力二.实验环境VC++6.0 语言:C++三.实验内容编写一个解线性方程组的L U -算法。

算法包括:1. 矩阵的输入输出2. 判断矩阵是否奇异3. 进行分解4. 输出L 、U5. 回带解出y 、x四.实验原理1.若一个线性方程组系数矩阵为n 阶方阵A 且各阶顺序主子式均不为零,则A 的L U -分解存在且唯一。

2.在满足1的条件下可推导得出以下公式 (1):11()j ij ij ik ij ijk l a l u u -==-∑11j j i j i j kk ik u a lu -==-∑(2): 11i i i ik kk y b l y -==-∑1()ni i ik k iik i x y u x u =+=-∑3.公式(1)用于求解矩阵L 、U ,公式(2)用于回带求解y 、x 。

从公式中可以看出:L 对角线上元素为1,U 第一行与A 第一行相同。

4.L U-分解的具体过程和计算顺序如下:(1)第一步分解:1111u a =(2)第二步分解:212111l a u =1212u a=22222112u a l u =-(3)第三步分解:313111l a =3232311222()l a l u =-1313u a = 23232113u a l u =-333331133223u a l u l u =--(n).第n 步分解:依次计算:1.1..n n n in nnl l u u -⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩1112121222121.1.......1n n n n nn u u u l uu l l u ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⨯⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦五.实验流程图1.程序总的流程图2.考虑主要目的这里只给出L U 分解的流程图:六.VC++源程序#include<iostream>using namespace std;double Fun(int n1,double a1[11][11]); //声明求矩阵行列式的递归函数函数double Fun(int n1,double a1[11][11]){int i_1,j_1,c; //c为数组b的行double b[11][11]; //用于存放余子式int p=0,q=0;int sum=0;if(n1==1)return a1[1][1];for(i_1=1;i_1<=n1;i_1++){for(c=1;c<=n1-1;c++){if(c<i_1)p=0;elsep=1;for(j_1=1;j_1<=n1-1;j_1++){b[c][j_1]=a1[c+p][j_1+1];}}if((i_1-1)%2==0)q=1;elseq=(-1);sum=sum+a1[i_1][1]*q*Fun(n1-1,b);}return sum;}//主程序,用于矩阵输入输出,判断,分解,回带void main(){int n,i,j,k;double temp=1.0;double a[11][11]={0};double L[11][11]={0};double b[11]={1};double x[11]={1};double m=0.0;double y[11]={1};double temp1=0.0;double temp2=0.0;//完成系数矩阵与右端项的输入与输出cout<<"!!!请输入待解方程组未知数的个数: n "<<endl; cin>>n;cout<<"!!!请输入待解方程组的系数"<<endl;for(i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}cout<<"!!!请输入待解方程组的系数矩阵如下:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<a[i][j]<<" ";}cout<<endl;}cout<<"!!!请输入待解方程组的右端项"<<endl;//初始化LUfor(int p=1;p<=n;p++){L[p][p]=1;}for(p=1;p<=n;p++){}cout<<endl;for(i=1;i<=n;i++){cin>>b[i];}cout<<"b="<<endl;for(i=1;i<=n;i++){cout<<b[i]<<endl;}for(i=2;i<=n;i++){temp=Fun(i,a);if(temp==0){cout<<endl<<endl;cout<<endl<<"output:temp ="<<temp<<endl;cout<<"矩阵奇异";break;}}cout<<endl;//LU分解if(temp!=0){for(i=1;i<=n;i++){for(j=1;j<=i-1;j++){if(a[j][j]==0)cout<<"请重新输入系数矩阵与右端项:"<<endl;elsem=0.0;for(k=1;k<=j-1;k++){m=m+L[i][k]*U[k][j];}L[i][j]=(a[i][j]-m)/U[j][j];}for(j=1;j<=i;j++){m=0.0;for(k=1;k<=j-1;k++){m=m+L[j][k]*U[k][i];}U[j][i] = a[j][i] - m;}}}if(temp!=0){cout<<"L="<<endl;for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<L[i][j]<<" ";}cout<<endl<<endl;}cout<<endl<<endl<<"U="<<endl; for(i=1;i<=n;i++){for(j=1;j<=n;j++){cout<<U[i][j]<<" ";}cout<<endl<<endl;}//回带求解y[]cout<<"y="<<endl;for(int s=1;s<=n;s++){for(int t=1;t<=s-1;t++){temp1=temp1+L[s][t]*y[t];}y[s]=b[s]-temp1;cout<<" "<<y[s]<<" "<<endl;temp1=0.0;}cout<<endl;//回带求解x[]x[1]=y[1];for(s=n;s>=1;s--){for(int t=s+1;t<=n;t++){temp2=temp2+U[s][t]*x[t];}x[s]=(y[s]-temp2)/U[s][s];temp2=0.0;}cout<<"x="<<endl;for(i=1;i<=n;i++)cout<<" "<<x[i]<<endl;}}七.程序执行结果1.系数矩阵主子式有为0时,随便输入一个矩阵结果如下:2. 系数矩阵各阶主子式不为0时,输入课本70页习题12所示矩阵系数5791068109710895765A⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦与右端项2618229b⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,顺序执行程序,结果经matlab验证无误,结果如下:11 / 12验证:七.实验优缺点此算法可以一定程度上判断是否可解并解出其解,但由于未添加主元选取的步骤,导致对于有的方程组会判断失误并认为方程无解。

数值分析_lec3_解线性方程组_Gauss消去法_1011


,1
如果能把系数矩阵A做同解变换,变换成上三角或下三角矩阵, 便可求出原方程组解!
2.1.1 顺序Gauss消去法
第1步:消元k 1, i 2
(线性方程组写成增广矩阵形式) 乘数
2.1.1 顺序Gauss消去法
第1步:消元k 1, i 3, 4, n
2.1.1 顺序Gauss消去法
(1) a11 [ Ak , b k ]
(k ) (k ) akk 0, 但 | akk |
(1) a1, n
( k 1) ak 1k 1
( k 1) ak 1k (k ) akk
( k 1) ak 1n (k ) ak n
(2) 因此a22 0。
依次类推,可证明充分性。
2.1.1 顺序Gauss消去法
(伪代码)
(1.消元过程)
2.1.1 顺序Gauss消去法
(伪代码)
(2.回带过程)
2.1.1 顺序Gauss消去法
备注:
1. 使用顺序Gauss消去法求解线性方程组前提条件: (1)系数矩阵前n-1个顺序主子式非0 (保证消元) (2)A非奇异(保证回带过程可执行)
下三角矩阵的向前迭代法:
Lx b : x1 b1 / l11 i 1 xi (bi lij x j ) / lii , i 2,3, j 1
,n
2.1.1 顺序Gauss消去法
上三角矩阵的向后迭代法:
Ux b : xn bn / unn n xi (bi uij x j ) / uii , i n 1, n 2, j i 1
2.1.3* 全主元Gauss消去法(补充)

数值分析第二章解线性方程组的直接方法


a2(22) x2 ... a2(2n) xn b2(2) ,
..............
an(nn) xn bn(n) .
对此方程组进行回代,就可求出方程组的解.
xn
xiΒιβλιοθήκη bn(n) (bi(i )
an(nn) ,
n
ai(ji ) x
j i 1
j
)
ai(ii ) ,
i n 1,n 2,,1.
x3 x3
1 1
4x1 2x2 2x3 3
消去后两个方程中的x1得
x1
2 x2 5 x2
x3 1 2x3 2
6x2 6x3 1
再消去最后一个方程的x2得
x1
2 x2 5 x2
x3 1 2x3 2
42 5
x3
7 5
消元结束.
x1
1 2
经过回代得解:
x2
1 3
互换, 因而程序比较复杂, 计算时间较长.
• 列主元素法的精度虽然稍低于全主元素法, 但其
计算简单, 工作量大为减少, 且计算经验与理论实
践均表明, 它与全主元素法同样具有良好的数值稳
定性.
• 列主元素法是求解中小型稠密线性方程组的最好
方法之一.
27
§2 直接三角分解法
Gauss消元法的矩阵表示
a12
a13
a 1 0 a21 a22 a23 a21 aa11 a22 aa12 a23 aa13
b 0 1 a31 a32 a33 a31 ba11 a32 ba12 a33 ba13
28
n=3时Gauss消元法的矩阵表示
a11 a12 a13 A a21 a22 a23

线性方程组的数值解法详解演示文稿


n
非行零交判换断的次元数素最个多数为为::kn1(1nnk1()n12kn)(n
k 1
1)
1 2
n(n
1)
二、矩阵三角分解法
设有线性方程组:AX=b
a11 a12 a1n
x1
b1
A
a21
a22
a2
n
,
X
x2
,
b
b2
.
an1 an2 ann
xn
bn
矩阵三角分解法包括不选主元和选主元两种方法。
1、不选主元三角分解算法 当A非奇异时,可以将A作LU分解:
1 0
0 u11 u12 u1n
A
LU
l21
1
0
0
u22
,
ln1 ln,n1 1 0 0 unn
其中:(矩阵LU分解)
(1) u1 j a1 j (i 1,2,,n), li1 ai1 / u11(i 2,,n),
1
0 0
1
2,y
2 ,
x
0
.
1 1 1 0 0 1
1 1
§3 解线性方程组的迭代法
考虑线性方程组
a11x1 a12x2 a1nxn b1
a21x1
a22x2
a2n xn
b2
an1x1 an2x2 annxn bn
也就是
Ax=b.
进行矩阵分裂
A=M-N,
(2.1) (2.2)
其中
a1(11)
0
0
a1(12) a2(22)
an(22)
a1(1n) a2(2n)
an(2n)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章: (1)Gauss消去法 (2)LU分解法 (3)带状方程组、矩阵条件数与病态方程组 (4)迭代法
第二章(二):LU分解法
2.2.1 LU分解法
矩阵A的LU分解:
A LU
1
若L为单位下三角矩阵:
1 l21 L ln1
1 lnn 1
Doolittle分解
* ** * P2 P 1Qk }(Qk A) U k 1 Qk A Lk -1U k 1
2.2.2* 选主元的LU分解法
一般的,我们有Pn-1Qn 1 Pk 1Qk 1 P2Q2 PQ 1 1 A U , 这里Qk (k 1, 2, , n 1)
为初等置换阵或单位阵,于是有:
2.2.1 LU分解法
(L为单位下三角矩阵,U为上三角矩阵) Doolittle分解算法:
a11 a21 an1
a12 a22 an 2
a1n 1 a2 n l21 1 ann ln1 ln 2
a1 j u1 j ( j 1, 2, , n)
u11 l21 ln1
u12 a22 an 2
u1n 1 a2 n l21 1 ann ln1 ln 2
, n)
u11 u12 u22 1

u1n u2 n unn
* P2 P 1 A QkU k 1 U k 1
2.2.2* 选主元的LU分解法
在执行第k 步之前, 交换第k行与第ik 行, 上式两侧左乘以初等置换矩阵Qk Qk Pk 1
1 1 L* k -1 P 1 P 2 * P2 P 1 A QkU k 1 U k 1
我们注意到乘以Qk 对矩阵U k 1的形式没有影响, 此时L* k -1为
Pn1
于是有:
1 问题: P 1
P2 P 1A U
1 1 Pn P 2 n 1 )U
U为上三角矩阵
1 A (P 1
1 1 Pn 2 P n 1是否为单位上三角阵?
1 Pk
1
(k ) pk 1k
1
(k ) pnk
1
(1) 前n-1顺序主子式非0,保证可以进行n-1次消元(前n-1个主元非0) (2) 唯一性证明(略) (3) 必要性证明 (略)
2.2.1 LU分解法
矩阵A的Crout分解的存在唯一性:
a11 a21 an1
a12 a22 an 2
a1n l11 a2 n l21 l22 ann ln1
r 1
k 1
2.2.1 LU分解法
LU分解求线性方程组(使用Doolittle分解)
A LU
u11 u12 l21 u22 l n1 ln 2
u33 ln 3
Ax b
Ly b Ux y
u1n u2 n u3n unn
u11 u12 l21 u22 l n1 ln 2
比较第k行:
a33 an 3
k 1 r 1
u1n 1 u2 n l21 1 a3n ln1 ln 2 ann
j k, ,n
u11 u12 u22 1
lnn 1
1 u12 1 lnn
u1n un 1n 1
推论: (同顺序Gauss消去法)
矩阵A [aij ]nn (n 2)有唯一的Crout分解的充要条件是 矩阵A的前n 1个顺序主子式Dk 0(k 1, 2, , n -1)
比较第2行:
a2 j l21u1 j u2 j ( j 2,3,
比较第2列:
u2 j a2 j l21u1 j
ai 2 li1u12 li 2u22 (i 3, 4,
, n)

li 2 (ai 2 li1u12 ) / u22
2.2.1 LU分解法
Doolittle分解算法: (把已计算的第二行第二列放入原矩阵相应位置)
,1)
思考: A=LU分解是否存在 ?
2.2.1 LU分解法
回顾Gauss消元法的第k次消元过程: 乘数
(k ) aik 第i行 ( k ) 第k行, (i k 1, akk
, n)
从矩阵运算形式来看,相当于系数矩阵A左乘一个变换矩阵:
1 Pk
k 1 r 1
u1k 1 u2 k 1
u1k u2 k
uk 1k 1 uk 1,k lk ,k 1 akk ln ,k 1 ank
u1n u2 n uk 1,n akn ann
, n)
考虑两种情况:
ukj akj lkr urj , ( j k , k 1,
2.2.1 LU分解法
例:计算矩阵A的Doolittle分解 2 1 1 0 4 3 3 1 A 8 7 9 5 6 7 9 8
2.2.2* 选主元的LU分解法
设矩阵A的Doolittle分解第k-1步已完成,于是有
u11 u12 l 21 u22 A lk 1,1 lk 1,2 lk 1 lk 2 l ln 2 n1
k 1 r 1
(1) ukk 0 (2) | ukk |
, n)
lik (aik lir urk ) / ukk , (i k 1,
0
希望ukk 为较大的数!
2.2.2* 选主元的LU分解法
为了考虑矩阵形式的LU分解,我们引入初等置换矩阵:
1 Qk
1 lnn 1
u11 u12 u22 1
u1n un 1n unn
定理2.3: (同顺序Gauss消去法)
矩阵A [aij ]nn (n 2)有唯一的Doolittle分解的充要条件是 矩阵A的前n 1个顺序主子式Dk 0(k 1, 2, , n -1)
u11 u12 u22 1
u1 j a1 j
u1n u2 n unn
比较第1行: 比较第1列:
ai1 li1u11 (i 2,3,
, n)

li1 ai1 / u11
2.2.1 LU分解法
Doolittle分解算法: (把已计算的第一行第一列放入原矩阵相应位置)1.向前迭代求 Nhomakorabea下三角系统:
y1 b1 i 1 yi bi lit yt t 1
(i 2,3,
, n)
2.向后迭代求解上三角系统:
Ly b Ux y
xn yn unn n xi yi uit xt u ii (i n -1, n - 2, t i 1
定理2.4
若矩阵A R nn非奇异,则存在置换矩阵Q,使得QA可以作Doolittle分解 QA LU 其中L是单位下三角矩阵,U 是上三角矩阵。 (置换矩阵Q Q1Q2 Qr , r n - 1)
1
(k ) pk 1k
1
(k ) pnk
指标为k的初等下三角矩阵 (k ) a (k ) ik , pik ( k ) , (i k 1, , n) akk 1
(k 1, 2,
, n 1 )
2.2.1 LU分解法
因此,整个顺序Gauss消元法的过程,相当于系数矩阵A依次左乘了 一系列初等下三角矩阵:
ukj akj lkr urj
r 1 k 1
u1n u2 n unn
akj lkr urj ukj
k 1 r 1
比较第k列:
aik lir urk lik ukk
i k 1,
,n

lik (aik lir urk ) / ukk
1 1 Pk11Qk 1 P 1 P 2
Pk11Qk
L* k -1非单位下三角阵。 为保持L* k 1的矩阵结构,左乘Qk (做一次行变换)
* 1 1 L** k -1 Qk Lk -1 Qk P 1 P 2
Pk11Qk ( L** k -1为单位下三角阵)
于是, 在执行第k 步之前, 相当于 {Qk Pk 1
Doolittle分解
其中L为单位下三角矩阵,U为上三角矩阵! [课本P21, (2.13)]
使用Doolittle分解法求解线性方程组的条件: (1)前n-1顺序主子式非0; (可进行Doolittle分解) (2)系数矩阵A行列式非0;(U非奇异,能够进行回带运算) 注:Crout分解可以类似的推导出来
1 lk 1k lnk 1 lnn 1
L为单位下三角阵,U 为上三角阵
矩阵A的Doolittle分解的存在性!
2.2.1 LU分解法
矩阵A的Doolittle分解的存在唯一性:
a11 a21 an1
a12 a22 an 2
a1n 1 a2 n l21 ann ln1
2.2.1 LU分解法
因此,整个顺序Gauss消元法的过程,相当于系数矩阵A依次左乘了 一系列初等下三角矩阵:
Pn1
于是有:
1 A (P 1 1 1 Pn P 2 n 1 )U
P2 P 1A U
1
L s.t. A LU
1 l21 L l n1
1 0 1 1 1 0 1 1
相关文档
最新文档