用Doolittle分解法求解线性方程组
编程实现doolittle分解方法解方程组

Doolittle分解方法是一种用于解决线性方程组的数值方法,它可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,从而可以方便地求解线性方程组。
在本文中,我们将介绍Doolittle分解方法的原理和实现过程,并用编程语言实现该方法来解方程组。
一、Doolittle分解方法原理1.1 Doolittle分解方法是一种LU分解的特例,它将一个矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。
其中,L 的主对角线元素全为1,U的主对角线以上的元素全为0。
这样的分解可以方便地求解线性方程组Ax=b,其中b是一个已知的列向量。
1.2 Doolittle分解方法的具体实现过程是通过高斯消元法来实现的。
将矩阵A分解为一个下三角矩阵L和一个上三角矩阵U,然后通过回代法求解线性方程组Ax=b。
具体来说,我们首先将矩阵A分解为L 和U,然后用L和U的乘积代替原来的矩阵A,将原来的线性方程组Ax=b变为LUx=b,然后通过两次回代法求解线性方程组Ly=b和Ux=y,最终得到线性方程组的解x。
1.3 Doolittle分解方法的优点是可以方便地求解多个方程组,因为一旦矩阵A被分解为L和U,就可以通过多次回代法来求解不同的线性方程组,而不需要重新分解矩阵A。
1.4 Doolittle分解方法的缺点是需要对原始的矩阵A进行分解,这需要一定的计算量,特别是对于比较大的矩阵来说。
Doolittle分解方法在实际应用中往往需要结合其他数值方法来提高求解线性方程组的效率。
二、Doolittle分解方法的实现过程2.1 我们需要定义一个函数来实现Doolittle分解。
该函数的输入是一个矩阵A,输出是矩阵A的下三角矩阵L和上三角矩阵U。
2.2 接下来,我们需要通过高斯消元法来实现Doolittle分解。
具体来说,我们首先对矩阵A进行行变换和列变换,使得矩阵A的主对角线元素非零,然后逐步消去矩阵A的非主对角线元素,得到下三角矩阵L和上三角矩阵U。
用直接三角分解法解线性方程组

三角阵。等式左边是单位下三角阵,右边是上三角阵,要使等式
成则立L , L只1 ,能U等于U单1,位即矩此阵三I。角于分是解L唯1一L1。
UU
1 1
I,
1 2 1
1 2 1
例7 解:
设 A 3 7
1
,试将A进行三角分解。
1 1 3
由高斯消去法得到
m21
3 1
3,m31
1 1
1
m 32
L1
1 1
0 0 1 2
例:
求
0 1 2
0 1 0
3 0 1
103的PLU分 解 。
解:用1,2, ,n的排列表示n阶置换阵P,其中排列的第i个元素
j,表示P的i行非零元素位于j列。则分解过程如下:
1 0 0 1 2
3 1 1 0 1
3 1 1 0
2 0
43
1 2
0 1 0
3 0 1
0 1 3
Ux j y j
Ly
j
bj
n1
k
n(n 1)
n2
n 次乘法
k 1
2
22
Ux j y j n k n(n 1) n2 n 次乘除法
k 1
2
22
即共需n 2 次乘除法运算。
n 2 次 乘 除 法
三角分解法的存放元素的方法:
以A (a ij )33 为例,
a11 A a21
1 mk1,k 1
k,
Lk1
1 mk1,k 1
k
mnk
1
mn,k
1
A ( L11 L21
L1 n1
)U
LU,1
a (1) 11
doolittle分解法例题

doolittle分解法例题什么是Doolittle分解法?Doolittle分解法是求解线性方程组的一种数值分解法,它由Lewis Fry Richardson发明。
它是将线性方程组分解为一系列的低阶和常系数矩阵。
Doolittle分解法可以用于解决对角矩阵差分方程Ax = B中的A,它以Doolittle形式分解为LU矩阵。
Doolittle LU分解有什么优点?Doolittle LU分解最重要的优点在于其效率,它通常比其他行列式分解方法更快。
另一个关于Doolitle LU分解的有点是它也能够求解正定矩阵的线性方程组解。
正定矩阵是与其函数增加的唯一的定义性属性,因此它也是很受欢迎的,也比较容易求解具有正定矩阵特征的线性方程组。
同时,Doolittle LU分解还能够提供一些关于矩阵A特征值的信息,无论它是正定还是非正定矩阵。
Doolittle LU分解的示例题:假设现有线性方程组:2x+y-z=1-3x-y+2z=32x+3y+z=-4我们可以手工将系数矩阵A按Dooolittle分解法表示如下:将系数矩阵A分解如下:A = LU,其中:L=$\left(\begin{array}{ccc}1 & 0 & 0\\-\frac{1}{3} & 1 & 0 \\\frac{2}{3} & -\frac{2}{3} & 1\end{array}\right)$U =$\left(\begin{array}{ccc}2 & 1 & -1 \\0 & -\frac{4}{3} & \frac{2}{3} \\0 & 0 & -\frac{1}{3}\end{array}\right)$Doolittle LU分解的求解步骤:1. 求出矩阵L首先,我们将系数矩阵A写成下三角矩阵L和上三角矩阵U的乘积:$ A = LU$中:L=$\left(\begin{array}{ccc}1 & 0 & 0\\a_{21} & 1 & 0 \\a_{31} & a_{32} & 1\end{array}\right)$其中,$a_{21}$为矩阵A的第2行第1列元素,即$-\frac{1}{3}$;$a_{31}$为矩阵A的第3行第1列元素,即$\frac{2}{3}$;$a_{32}$为矩阵A的第3行第2列元素,即$-\frac{2}{3}$。
利用Doolittle方法解线形方程组

数值分析实验二
一、实验目的
利用Doolittle方法解线形方程组
{
tt=0;
for(int k=0;k<=r-1;k++)
tt=tt+a[i][k]*a[k][r];
a[i][r]=a[i][k]-tt;
}
t=a[r][r];
for(i=r+1;i<=n-1;i++)
if(fabsm=i;
}
printf("\n");
for(j=0;j<=n+1;j++)
if(m!=r)
{
t1=a[r][j];
a[r][j]=a[m][j];
a[m][j]=t1;
}
for(j=r+1;j<=n-1;j++)
{
tt=0;
for(int k=0;k<=r-1;k++)
tt=tt+a[r][k]*a[k][j];
a[r][j]=a[r][j]-tt;
{
tt=0;
for(int k=i+1;k<=n-1;k++)
tt=tt+a[i][k]*a[k][j];
a[i][j]=(a[i][j]-tt)/a[i][i];
}
}
printf("\n");
doolittle分解法求解方程组

doolittle分解法求解方程组
Doolittle分解法是一种求解多元一次方程组的数学工具,它把方程组转变为
三角形阵。
它可以确定一个线性方程组的解,而且不需要进行迭代法。
doolittle
分解法也被称为LU分解法,因为它将一个方程组拆分为两种分解法:一种是费马
整体分解法,即上三角阵分解法;另一种是克莱斯勒整体分解法,即下三角阵分解法。
Doolittle分解法依赖实际情况。
如果一个线性方程组有一个解,这种方法便
可以帮助计算出这个解。
同时,这种分解方法可以使方程组更具健壮性,有助于更大限度地计算出方程组的解。
在使用Doolittle分解法求解方程组时,首先将要求解的方程组表示为一个线
性方程组,比如Ax=B,其中A为系数矩阵,B为常数向量,以及x为一个未知向量。
其中,A矩阵将被进行LU分解法法。
接下来,你需要检查矩阵A是否可逆,即求
解Ax=b是否有唯一解。
接着,采用LU分解法,我们可以把矩阵A拆分成上三角阵U和下三角阵L,
即A=LU。
这两个三角阵的乘积是原始矩阵A,这两个拆分的三角阵可以用足够多的
0填充。
接着,我们可以先求解L向量,然后求解U。
最后,将得到的L向量和U
向量求积,得出答案。
总之,Doolittle分解法是一种求解多元一次方程组的有效数学工具,通过将
线性方程拆分成L和U,可以节省计算时间,得到高效的解。
doolittle三角分解法的相关原理及概念

doolittle三角分解法的相关原理及概念doolittle三角分解法是一种数值计算方法,它将一个长方形矩阵分解为三角形矩阵,以求解线性方程组。
在数学和工程学中,三角分解法在求解线性方程组,特别是多元线性回归方程时占有重要地位。
doolittle三角分解法是在20世纪50年代提出来的,是由美国著名数学家James Doolittle发展而来的,它也可以称为LU分解法。
Doolittle三角分解法可以将一个多元连续的矩阵的分解分解成一系列的三角形矩阵,其中下三角矩阵的元素都为1,上三角矩阵元素都为0.矩阵的上三角部分,可以将连续的多元方程组分解为单元方程组,从而使得计算量大大减少,从而提高效率,使得计算结果更加快速可靠。
doolittle三角分解法有以下几个主要特点:首先,其分解方式采用的是自上而下分解,得到的结果是三角矩阵,这样可以大大减少求解方程组的计算量,使求解过程变得更加有效简单。
其次,它可以解决系数矩阵和常数项满秩的线性方程组,并保证解的可靠性。
第三,它有较好的数学性质,它的结果可以保证收敛,因此拥有较快的计算速度,不容易出现收敛问题。
最后,它具有较强的稳定性,即使系数矩阵和常数项中有一定的误差,也可以保证求解出来的解的准确性。
doolittle三角分解法的基本步骤如下:首先,根据系数矩阵的特点,分解出上三角和下三角的两个矩阵。
其次,根据解的唯一性,求解上三角矩阵的变量,即求出上三角矩阵的解。
然后,将下三角矩阵的解和上三角矩阵的解求和,得到最终的解。
最后,依据矩阵的特点,进行矩阵的逆运算,求出线性方程组的最终解。
在数学和工程学中,doolittle三角分解法在求解线性方程组,特别是多元线性回归方程时占有重要地位,它具有较快的计算速度,较好的数学性质,较强的稳定性,是一种极具实用性的方法。
doolittle三角分解法的主要应用有:一是在数值分析中应用,如在求解多项式拟合问题、热力学问题、积分计算等问题中,通过doolittle三角分解法,可以更快速准确地求解问题;二是在线性规划问题中应用,通过doolittle三角分解法可以求解线性规划问题,使该问题变得更具可行性。
matlab doolittle分解法代码
matlab doolittle分解法代码在MATLAB中,Doolittle分解法(也称为LU分解)是一种常用的求解线性方程组的方法。
以下是一个使用MATLAB实现Doolittle分解法的示例代码:```MATLAB生成一个随机矩阵AA = rand(3, 3);初始化L和U矩阵为0L = eye(3);U = eye(3);采用Doolittle分解法分解矩阵Afor i = 1:3for j = 1:3if i == jU(i, j) = A(i, j);elseL(i, j) = A(i, j);endend寻找最大值并交换行max_idx = find(max(A(:, i)));L(:, i) = L(:, i) / A(max_idx, i);U(:, i) = U(:, i) / A(max_idx, i);end打印L和U矩阵disp('L矩阵:');disp(L);disp('U矩阵:');disp(U);验证分解是否正确A_original = A;L_original = eye(3);U_original = eye(3);[L_original, U_original] = doolittle(A_original);打印原始的L和U矩阵disp('原始的L矩阵:');disp(L_original);disp('原始的U矩阵:');disp(U_original);计算分解后的矩阵乘积与原矩阵是否相等result = L_original * U_original;disp('分解后的矩阵:');disp(result);检查分解后的矩阵是否与原矩阵相等isequal(A_original, result)```以上代码首先生成一个3x3的随机矩阵A,然后使用Doolittle分解法对其进行分解,并打印出分解后的L和U矩阵。
线性方程组的算法
用Doolittle分解法求线性方程组的解求解线性方程组的解,首先每一个线性方程组都可以矩阵的乘法的形式就,即AX=B。
A 是是系数矩阵,B是常数向量,他们的长度与X的个数有关。
现在用Doolittle分解法求其解。
Doolittle分解法:方程组AX=B 其中这就是整个分解法的求解过程。
程序的编写PROGRAM HW4INTEGER N,I,J,T,KREAL S1,S2REAL,DIMENSION(:,:),ALLOCATABLE::A,L,U !定义二维动态数组A,U,LREAL,DIMENSION(:),ALLOCATABLE::B,X,Y !定义一维动态数组B,X,YPRINT*,"输入变量个数:"!输入变量个数100READ*,NALLOCATE(A(N,N),L(N,N),U(N,N),B(N),X(N),Y(N)) !确定动态数组上下界S1=0.0S2=0.0PRINT*,"输入方程组系数矩阵,按行输入"DO I=1,NDO J=1,NREAD*,A(I,J) !输入方程组系数矩阵ENDDOENDDOPRINT*,"输入常数向量"!输入常数向量DO I=1,NREAD*,B(I)ENDDODO J=1,N !确定L,U矩阵中各个元素的值U(1,J)=A(1,J)ENDDODO I=2,NDO J=1,I-1S1=0DO T=1,J-1IF(J>1)THENS1=S1+L(I,T)*U(T,J)ELSES1=0ENDIFENDDOL(I,J)=(A(I,J)-S1)/U(J,J)ENDDODO J=I,NS2=0DO T=1,I-1S2=S2+L(I,T)*U(T,J)ENDDOU(I,J)=A(I,J)-S2ENDDOENDDOY(1)=B(1) !解Y的值DO I=2,NS1=0DO J=1,I-1S1=S1+L(I,J)*Y(J)ENDDOY(I)=B(I)-S1ENDDO!解X得值X(N)=Y(N)/U(N,N)DO I=N-1,1,-1S1=0DO J=I+1,NS1=S1+U(I,J)*X(J)ENDDOX(I)=(Y(I)-S1)/U(I,I)ENDDOPRINT*,"方程组的解是:"!输出方程组解X PRINT*,XGOTO 100END。
直接三角分解法、高斯消去法、高斯列主元消去法解线性方程组
将高斯消去法的计算结果与实际结果比较可知,高斯消去法的计算,结果也是正确的。
将高斯列主元消去法的计算结果与实际结果比较可知,高斯消去法的计算结果是正确的。
3、同理,根据例4的题目以及给出的A,b的取值,可分别调用直接三角分解法(Doolittle法)、高斯消去法、高斯列主元消去法的函数来求解值;具体的输入以及运行结果如下所示:
如对于直接三角分解法(Doolittle法),有
即(malu为求Doolittle的函数,可直接使用函数名直接调用)
对于高斯消去法和高斯列主元消去法,有
3、编写完函数代码后,便可直接通过定义的函数名,输入相关的取值范围,便可验证书后的例子。具体实验输入和结果看实验数据。
实验内容
编写程序代码,在MATLAB的实验环境下,分别使用直接三角分解法(Doolittle法)、高斯消去法、高斯列主元消去法验证教材书后的P42~P47的例1、例3、例4这3个例子:
由直接三角分解法的计算结果与实际结果比较可知,直பைடு நூலகம்三角分解法的计算结果是显示出来时一个不确定的值NaN,这说明利用直接三角分解法来求解该问题存在着很大的误差,因此解决该类问题,我们将不采用直接三角分解法。
同样由高斯消去法的计算结果与实际结果比较可知,高斯消去法的计算结果也是不确定的值NaN,这说明利用高斯消去法来求解该问题同样也存在着很大的误差。
例1:用Doolittle法解方程组:
例3:用部分选主元的Doolittle法解方程组
例4:用部分选主元的Doolittle法紧凑格式解矩阵方程AX=B,其中
实验数据
1、根据例1的题目以及给出的A,b的取值,可分别调用直接三角分解法(Doolittle法)、高斯消去法、高斯列主元消去法的函数来求解值;具体的输入以及运行结果如下所示:
Doolittle分解
矩阵数值分析实验报告专业信息与计算科学班级学号姓名指导教师Doolittle 分解法一、实验目的在Gauss 消元法中,对于n 阶方程组,应用消去发经过n-1步消元之后,得到一个与Ax=b 等价的代数线性方程组)1()1(--=n n b x A ,而且)1(-n A 为一个上三角矩阵.所以我们想是否能把矩阵A 分解成一个下三角阵与一个上三角阵的乘积 A=LR,其中L 为下三角阵,R 为上三角阵.就变成了两个三角形方程组⎩⎨⎧==yRx b Ly , 的求解问题。
二、算法思想Setp1:利用for 循环求出r[k][j]=a[k][j]-∑-=1k 1p ]kp [r ]kp [l ,l[ik]=(a[ik]-∑-=1k 1p ]ip [r ]ip [l )/r[k][k]。
Step2:y[i]=b[i]-∑-=1i 1k ]k [y ]ik [l ,得出x[i]=(y[i]-∑+=n1i k ]k [x ]ik [r )/r[i][i].三、程序代码#include <stdio.h>#include <stdlib.h>#define N 10 //矩阵大小范围float getmx(float a[N][N], float x[N], int i, int n) {float mx = 0;int r;for(r=i+1; r<n; r++){mx += a[i][r] * x[r];}return mx;}float getmy(float a[N][N], float y[N], int i, int n) {float my = 0;int r;for(r=0; r<n; r++){if(i != r) my += a[i][r] * y[r];}return my;}float getx(float a[N][N], float b[N], float x[N], int i, int n) {float result;if(i==n-1) //计算最后一个x的值result = (float)(b[i]/a[n-1][n-1]);else //计算其他x值(对于公式中的求和部分,需要调用getmx()函数) result = (float)((b[i]-getmx(a,x,i,n))/a[i][i]);return result;}float gety(float a[N][N], float b[N], float y[N], int i, int n) {float result;if(i==0) //计算第一个y的值result = float(b[i]/a[i][i]);else //计算其他y值(对于公式中的求和部分,需要调用getmy()函数) result = float((b[i]-getmy(a,y,i,n))/a[i][i]);return result;}void main(){float l[N][N]={0}; //定义L矩阵float u[N][N]={0}; //定义U矩阵float y[N]={0}; //定义数组Yfloat x[N]={0}; //定义数组Xfloat a[N][N]={{0},{0},{0}}; //定义系数矩阵float b[N]={0}; //定义右端项float sum=0;int i,j,k;int n=0;int flag=1;//用户手工输入矩阵while(flag){printf("请输入系数矩阵的大小:");scanf("%d", &n);if(n>N){printf("矩阵过大!\n");continue;}flag=0;}printf("请输入系数矩阵值:\n");for(i=0; i<n; i++){for(j=0; j<n; j++){printf("a[%d][%d]: ", i, j);scanf("%f", &a[i][j]);}}printf("请输入右端项数组:\n");for(i=0; i<n; i++){printf("b[%d]: ", i);scanf("%f", &b[i]);}/*显示原始矩阵*/printf("原始矩阵:\n");for(i=0; i<n; i++){for(j=0; j<n; j++)printf("%0.3f ",a[i][j]);printf("\n");}printf("\n\n");/*初始化矩阵l*/for(i=0; i<n; i++){for(j=0; j<n; j++){if(i==j) l[i][j] = 1;}}/*开始LU分解*//*第一步:对矩阵U的首行进行计算*/for(i=0; i<n; i++){u[0][i] = (float)(a[0][i]/l[0][0]); }/*第二步:逐步进行LU分解*/for(i=0; i<n; i++){/*对“L列”进行计算*/for(j=i+1; j<n; j++){for(k=0,sum=0; k<n; k++){if(k != i) sum += l[j][k]*u[k][i];}l[j][i] = (float)((a[j][i]-sum)/u[i][i]); }/*对“U行”进行计算*/for(j=i+1; j<n; j++){for(k=0,sum=0; k<n; k++){if(k != i+1) sum += l[i+1][k]*u[k][j]; }u[i+1][j] = (float)((a[i+1][j]-sum));}}/*输出矩阵l*/printf("矩阵L:\n");for(i=0; i<n; i++){for(j=0; j<n; j++){printf("%0.3f ", l[i][j]);}printf("\n");}/*输出矩阵u*/printf("\n矩阵U:\n");for(i=0; i<n; i++){for(j=0; j<n; j++){printf("%0.3f ", u[i][j]);}printf("\n");}/*回代方式计算数组Y*/for(i=0; i<n; i++){y[i] = gety(l,b,y,i,n);}/*显示数组Y*/printf("\n\n数组Y:\n");for(i=0; i<n; i++){printf("y%d = %0.3f\n", i+1,y[i]); }/*回代方式计算数组X*/for(i=n-1; i>=0; i--){x[i] = getx(u,y,x,i,n);}/*显示数组X*/printf("\n\n数组X:\n");for(i=0; i<n; i++){printf("x%d = %0.3f\n", i+1,x[i]); }}四、运行结果五、参考文献[1]刑志栋,矩阵数值分析,陕西:陕西科学技术出版社, 2005。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
增广矩阵第i行第 i个方程
对方程组Ax=b的增广矩阵作同解变换 对其增广矩阵 左乘一系列的初等矩阵
三、Gauss消元法
消元法基本思想:对Ax=b的增广矩阵(A|b)进行初等变换,变 成可直接求解的三种形式之一,再求解
❖ Gauss消元法:将A化为上三角阵 回代求解
=
a11 a12
a21 a22
2) 特点:它可靠且效率高,但它只适用于中小型方程组。
❖ 迭代法:
1) 思想:构造适当的初始近似解向量x,按一定的法则,使 之逐步逼近精确解,得到一个满足精度要求的近似解。 即是用某种极限过程逐步逼近准确解的方法。
2) 主要方法:Jaccobi迭代法,Gauss-Sidel迭代法等
3.1.1 GAUSS 消元法
回 代
xn = bn / unn xn-1 = (bn-1 - un-1,n xn ) / un-1,n-1
n
xi = (bi -
ui, j x j ) / ui,i
j=i+1
二、同解变换 1. 初等方阵:
1
0
0
0
1
0
E(i, j) =
0
1
0
0
0
1
: ri rj
1
0
E
A E
列变换
E A
-1
2. 对方程组Ax=b作如下的变换,解不变:
① 交换两个方程的次序 ② 一个方程的两边同时乘以一个非0数 ③ 一个方程的两边………………………,再将之加到另一
个方程
将方程组Ax=b对应 的增广矩阵(A, b),作如下变换,解不变
① 交换矩阵的两行
② 某行乘以一个非0数 ③ 某行乘以一个非0数,加到另一行
分类:据方程的个数与未知数的个数间关系,分为:
❖ m<n,即方程的个数小于未知数的个数,称为亚定方程组, 有无穷多组解
❖ m>n,即方程的个数大于未知数的个数,称为超定方程组, 或矛盾方程组。它没有一般意义下的解,但可以求其广义
解。 ❖ m=n,一般意义下的方程组,本章主要讨论的重点
面临的问题:
概述 消元法 三角分解法 平方根法 向量与范数 方程组的性态与误差分析 迭代法
3.1 概述
大量实际计算问题=>一组线性方程组=>如何求解?
1. 术语
❖ 非齐次线性方程组:
aa1211
x1 x1
+ a12 x2 + a22 x2
+ +
L L
+ a1n xn + a2n xn
= b1 = b2
一. 几种可以直接求解的线性方程组
① 对角矩阵:
a11
A
=
a22
ann
Ax
=
b的解为: xi
=
bi aii
(aii
0)
=> n次除法
② 下三角矩阵:
l11 0
A
=
l21 ln1
l22 ln2
0
0
0 lnn
即:Ax = b
即: l11x1=b1
l21x1+l22x2=b2
L ani -1 bn ani +1
L a1n M
L ann
❖ 结论:Crammer法则计算量非常大,需算n+1个n阶行列 式。如:n=100,1000次/秒的计算机要算10120年
3 线性方程组的数值解法:
❖ 直接法:
1) 思想:经有限步运算求得精确解 的方法:舍入误差, 因此也是近似解 高斯消元法及其变形
an1
an2
a1n b1
a2n b2
ann
bn
a11 a12
0 a22
0 0
0
0
a1n-1 a2n-1
an-1n-1 0
a1n a2n
an-1n ann
b1
b2
bn-1
bn
用高斯消去法解下列线性方程组
2x1 + x2 + x3 = 4
x1
+
3x2
+
2x3
a2n
ann
x2 xn
=
b2 bn
初始状态:
a(1) 11
a(1) 12
A(1)
a(1) 21
a(1) 22
a(1) n1
a(1) n2
a(1) 1n
a(1) 2n
=
A
a(1) nn
b1
b(1)
=
b2
bn
① 第一次消元:消去对角线下第1列元素(a11≠0) 方法:
L L L L L L L L L L L
am1 x1 + am2 x2 + L + amn xn = bm
(1.1)
❖ 若记:
a11 a12
A
=
a21 M
a22 M
am1 am2
L L
L
a1n
a2n M
am n
x1
x
=
x2 M
xn
b1
b
=
b2 M
bm
则: (1.1)式可表示为 Am×nx=b---线性方程组的矩阵表示
=
6
x1
+
2x2
+
2x3
=
5
原方程组对应的增广矩阵为:
2 1 1 4 2 1 5 4
1
2
2
5
0
0
0.6 0.6
1. 消元步骤
方程组AX=b的矩阵表示为:A(1) x=b(1)
a11 a12
a21 a22
an1 an2
a1n x1 b1
❖ 方程组Ax=b有没有解? ❖ 有多少解? ❖ 如何求解?
2. Crammer法则求解An×nx=b
❖ 方程组Ax=b有唯一解的充要条件是: |A|≠0 A可逆 A是非奇异矩阵
❖ Ax=b在A可逆时,存在唯一解
xi
=
Di D
,D
=|
A |, Di
a11 =M
an1
L a1i -1 b1 a1i +1 MMM
l31x1+l32x2+l33x3=b3 ……
代 入
li1x1+li2x2+……+liixi=bi
……
ln1x1+ln2x2+……+lnnxn=bn
x1
=
b1 l11
x2 = (b2 - l21 x1 ) l22
i -1
xi = (bi - li, j x j ) j=1
li,i
③ 上三角矩阵:
a) 消去对角线下第1列元素为0 ,即ri-r1×ai1/a11: (i=2, 3, …
(i(k
))
=
0
k
0
0
0
1
: ri *k
1 0
0
0
E(i(k), j) =
1
: rj +k*ri
k 1
0
0
0
1
注
❖ 对矩阵A实施初等行变换 对A左乘初等方阵 ❖ 初等方阵是可逆的,多个初等方阵的积仍然可逆 ❖ 可逆阵A经有限次初等行变换单位矩阵
( A, E ) 行变换(E,A-1 )
u11 u12
A
=
0 0
u22 0
即:
u11x1+u12x2+………+u1nxn=b1 u22x2+………+u2nxn=b2 ……
uiixi+ui,i+1xi+1+…+ui,nxn=bi un-1,n-1xn-1+un-1,nxn=bn-1 un,nxn=bn
u1n u2n unn