计算方法 解线性方程组的直接法
解线性方程组的直接方法
解线性方程组的直接方法一、高斯消元法高斯消元法是解线性方程组最常用的方法之一、它通过一系列的消元操作,将线性方程组转化为阶梯型方程组,从而求解未知数的值。
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可逆。
数值分析--解线性方程组的直接方法
值 为A的特征值,x为A对应的特征向量,A的全体特征值
分 析
称为A的谱,计作 ( A),即 ( A) {i ,i 1,2,, n}, 则称
》
( A)
max
1in
|
i
|
为矩阵A的谱 半 径.
三、特殊矩阵
第5章 解线性方程组的直接方法
1) 对角矩阵
2) 三对角矩阵
3) 上三角矩阵
4) 上海森伯(Hessenberg)阵
分 析
1.00x 1.00y 2.00
》 解法1: 1.00105 x 1.00 y 1.00
(1.00 1.00105) y (2.00 1.00105)
1.00105 x 1.00 y 1.00
1.00
105
y
1.00
105
x 0.00,
y 1.00
第5章 解线性方程组的直接方法
1
Ly b y 3,Ux y x 1.
2
1
第5章 解线性方程组的直接方法
§3 高斯主元素消去法
若ak(kk) 0,或ak(kk)很接近于0,会导致其他元素数量级严重 增长和舍入误差的扩散,使得计算结果不可靠.
《例3’采用3位十进制,用消元法求解
数 值
1.00105 x 1.00y 1.00
L21L1 U2U11
L21L1
U
U 1
21
I
(因为上式右边为上三角矩阵,左边为单位下三角矩阵
从而上式两边都必须等于单位矩阵)
《 数
L1 L2 , U1 U2
1 1 1
值分例2
析
.例1中,A
0
4
-1,将A作LU分解。
计算方法2线性方程组直接法
04
矩阵的三角分解法
LU分解法
定义:将系数矩阵A分解为一个下三角 矩阵L和一个上三角矩阵U的乘积,即 A=LU。
适用范围:适用于所有可逆矩阵,特别 适用于中小型稠密矩阵。
迭代法收敛性判断
在迭代法求解方程组时,可以通过观察迭代过程中解向量的范数的变化情况来判断迭代法 是否收敛。如果解向量的范数逐渐减小并趋于零,则表明迭代法收敛。
方程组性态分析
方程组的性态是指方程组解的存在性、唯一性和稳定性等方面的性质。通过分析方程组的 系数矩阵的范数,可以对方程组的性态进行初步的判断。例如,如果系数矩阵的谱半径( 即最大特征值的模)较小,则方程组往往具有较好的性态。
03
线性方程组在科学研究、工程技术和经济管理等领域具有广 泛的应用。
直接法的定义与分类
1
直接法是一种通过有限步四则运算求解线性方程 组的方法,具有计算精度高、稳定性好的特点。
2
直接法可分为高斯消元法、列主元消元法、全主 元消元法等多种方法,其中高斯消元法是最基本 的方法。
3
各种直接法的主要区别在于选主元和消元的过程 中采用不同的策略,以达到提高计算精度和稳定 性的目的。
对系数矩阵A进行Crout分解,得到下三角矩阵L和单位 上三角矩阵U。
利用后向代入法求解Ux=y,得到向量x。
求解步骤
利用前向代入法求解Ly=b,得到向量y。
适用范围:适用于所有可逆矩阵,特别适用于中小型稠 密矩阵。与LU分解法和Doolittle分解法相比,Crout 分解法在某些情况下具有更高的计算效率。
性质
线性方程的概念与解法
线性方程的概念与解法线性方程是我们在数学中经常遇到的一类方程,其基本形式为ax + b = 0,其中a和b是已知的实数,x是未知数。
解线性方程的目标是找到满足方程的x的值。
解线性方程的方法有多种,下面将介绍常见的几种解法。
直接法:对于简单的线性方程,我们可以直接通过变量的运算来解得x的值。
例如,对于方程3x + 2 = 5,我们可以通过减去2,再除以3的操作来求解x,即x = (5-2)/3 = 1。
消元法:对于一般的线性方程组,我们可以通过消元法来求解。
消元法的基本思想是通过逐步的变换,使得方程组中的某个变量逐渐消失,从而简化方程组的解法。
我们可以通过适当的加减法来将方程组化为更简单的形式,直到最后得到只包含一个变量的方程,从而求解出该变量的值。
例如,考虑方程组:2x + 3y = 74x - y = 5我们可以通过消元法来求解该方程组。
首先,我们可以将第二个方程中的y的系数变为3,即将第二个方程乘以3,得到:12x - 3y = 15然后,我们可以将第一步得到的新方程与第一个方程相减,消去y 这个变量,得到新的方程:10x = 8最后,我们可以将方程两边同时除以10,求解出x的值为0.8。
将x的值代入方程2x + 3y = 7,可以求出y的值为2.2。
因此,该方程组的解为x = 0.8,y = 2.2。
矩阵法:对于包含多个方程的线性方程组,我们可以利用矩阵的方法求解。
矩阵法的基本思想是将线性方程组表示成矩阵的形式,然后通过矩阵的运算求解未知数。
考虑以下线性方程组:2x + 3y - z = 4x - 2y + 3z = 13x + y - 2z = 5我们可以将其表示为矩阵形式:⎡ 2 3 -1 ⎤⎡ x ⎤⎡ 4 ⎤⎢ 1 -2 3 ⎥ ·⎢ y ⎥ = ⎢ 1 ⎥⎣ 3 1 -2 ⎦⎣ z ⎦⎣ 5 ⎦然后,我们可以对这个矩阵进行行变换,将它化为上三角矩阵的形式。
通过适当的行变换操作,我们可以将第一列下方的元素变为0。
解线性方程组的直接方法实验报告
解线性方程组的直接方法实验报告解线性方程组的直接方法实验报告1.实验目的:1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。
2.实验过程:实验代码:#include "stdio.h"#include "math.h"#includeusing namespace std;//Gauss法void lzy(double **a,double *b,int n){int i,j,k;double l,x[10],temp;for(k=0;k<n-1;k++){for(j=k,i=k;j<n;j++){if(j==k)temp=fabs(a[j][k]);else if(temp<fabs(a[j][k])) {temp=fabs(a[j][k]);i=j;}}if(temp==0){cout<<"无解" ; return;}else{for(j=k;j<n;j++){temp=a[k][j];a[k][j]=a[i][j];a[i][j]=temp;}temp=b[k];b[k]=b[i];b[i]=temp;}for(i=k+1;i<n;i++){l=a[i][k]/a[k][k];for(j=k;j<n;j++)a[i][j]=a[i][j]-l*a[k][j];b[i]=b[i]-l*b[k];}}if(a[n-1][n-1]==0){cout<<"无解" ; return;}x[n-1]=b[n-1]/a[n-1][n-1]; for(i=n-2;i>=0;i--){temp=0;for(j=i+1;j<n;j++)temp=temp+a[i][j]*x[j];x[i]=(b[i]-temp)/a[i][i];}for(i=0;i<n;i++){printf("x%d=%lf ",i+1,x[i]);printf(" ");}}//平方根法void pfg(double **a,double *b,int n) {int i,k,m;double x[8],y[8],temp;for(k=0;k<n;k++){temp=0;for(m=0;m<k;m++)temp=temp+pow(a[k][m],2);if(a[k][k]<temp)return;a[k][k]=pow((a[k][k]-temp),1.0/2.0);for(i=k+1;i<n;i++){temp=0;for(m=0;m<k;m++)temp=temp+a[i][m]*a[k][m]; a[i][k]=(a[i][k]-temp)/a[k][k]; }temp=0;for(m=0;m<k;m++)temp=temp+a[k][m]*y[m];y[k]=(b[k]-temp)/a[k][k];}x[n-1]=y[n-1]/a[n-1][n-1];for(k=n-2;k>=0;k--){temp=0;for(m=k+1;m<n;m++)temp=temp+a[m][k]*x[m];x[k]=(y[k]-temp)/a[k][k];}for(i=0;i<n;i++){printf("x%d=%lf ",i+1,x[i]);printf(" ");}}//追赶法void zgf(double **a,double *b,int n){int i;double a0[10],c[10],d[10],a1[10],b1[10],x[10],y[10]; for(i=0;i<n;i++) {a0[i]=a[i][i];if(i<n-1)c[i]=a[i][i+1];if(i>0)d[i-1]=a[i][i-1];}a1[0]=a0[0];for(i=0;i<n-1;i++){b1[i]=c[i]/a1[i];a1[i+1]=a0[i+1]-d[i+1]*b1[i];}y[0]=b[0]/a1[0];for(i=1;i<n;i++)y[i]=(b[i]-d[i]*y[i-1])/a1[i];x[n-1]=y[n-1];for(i=n-2;i>=0;i--)x[i]=y[i]-b1[i]*x[i+1];for(i=0;i<n;i++){printf("x%d=%lf ",i+1,x[i]);printf(" ");}}int main{int n,i,j;double **A,**B,**C,*B1,*B2,*B3;A=(double **)malloc(n*sizeof(double)); B=(double **)malloc(n*sizeof(double));C=(double **)malloc(n*sizeof(double));B1=(double *)malloc(n*sizeof(double));B2=(double *)malloc(n*sizeof(double));B3=(double *)malloc(n*sizeof(double));for(i=0;i<n;i++){A[i]=(double *)malloc((n)*sizeof(double)); B[i]=(double *)malloc((n)*sizeof(double)); C[i]=(double *)malloc((n)*sizeof(double)); } cout<<"第一题(Gauss列主元消去法):"<<endl<<endl; cout<<"请输入阶数n:"<<endl;cin>>n;cout<<" 请输入系数矩阵: ";for(i=0;i<n;i++)for(j=0;j<n;j++){。
计算方法-解线性方程组的直接法实验报告
cout<<endl;
for(k=i+1;k<m;k++)
{
l[k][i]=a[k][i]/a[i][i];
for(r=i;r<m+1;r++) /*化成三角阵*/
a[k][r]=a[k][r]-l[k][i]*a[i][r];
}
}
x[m-1]=a[m-1][m]/a[m-1][m-1];
{
int i,j;
float t,s1,s2;
float y[100];
for(i=1;i<=n;i++) /*第一次回代过程开始*/
{
s1=0;
for(j=1;j<i;j++)
{
t=-l[i][j];
s1=s1+t*y[j];
}
y[i]=(b[i]+s1)/l[i][i];
}
for(i=n;i>=1;i--) /*第二次回代过程开始*/
s2=s2+l[i][k]*u[k][r];
l[i][r]=(a[i][r]-s2)/u[r][r];
}
}
printf("array L:\n");/*输出矩阵L*/ for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%7.3f ",l[i][j]);
printf("\n");
{
s2=0;
for(j=n;j>i;j--)
解线性方程组直接法
第三章 解线性方程组的直接法3.1 引言许多科学技术问题要归结为解含有多个未知量x 1, x 2, …, x n 的线性方程组。
例如,用最小二乘法求实验数据的曲线拟合问题,三次样条函数问题,解非线性方程组的问题,用差分法或有限元法解常微分方程、偏微分方程的边值等,最后都归结为求解线性代数方程组。
关于线性方程组的数值解法一般有两类:直接法和迭代法。
1. 直接法直接法就是经过有限步算术运算,可求得线性方程组精确解的方法(假设计算过程中没有舍 入误差)。
但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解。
本章将阐述这类算法中最基本的高斯消去法及其某些变形。
2. 迭代法迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法,迭代法需要的计算机存储 单元少、程序设计简单、原始系数矩阵在计算过程中不变,这些都是迭代法的优点;但是存在收敛性和收敛速度的问题。
迭代法适用于解大型的稀疏矩阵方程组。
为了讨论线性方程组的数值解法,需要复习一些基本的矩阵代数知识。
3.1.1 向量和矩阵 用nm ⨯R表示全部n m ⨯实矩阵的向量空间,nm C⨯表示全部n m ⨯复矩阵的向量空间。
此实数排成的矩形表,称为m 行n 列矩阵。
⎪⎪⎪⎪⎪⎭⎫⎝⎛=⇔∈n n x x x 21x R x x 称为n 维列向量矩阵A 也可以写成其中 a i 为A 的第i 列。
同理 其中Ti b 为A 的第i 行。
矩阵的基本运算:(1) 矩阵加法 )( ,n m nm R C ,R B ,R A B A C ⨯⨯⨯∈∈∈+=+=n m ij ij ij b a c .(2) 矩阵与标量的乘法 ij j a ci αα== ,A C(3) 矩阵与矩阵乘法 p nk kj ikb acij ⨯⨯⨯=∈∈∈==∑m p n n m R C ,R B ,R A AB C ( ,1(4) 转置矩阵 ji ij T n m a c ==∈⨯ , ,A C R A (5) 单位矩阵 ()nn ⨯∈=Re ,,e ,e I n 21 ,其中()T k e 0,0,1,0,0 = k=1,2,…,n(6) 非奇异矩阵 设n n ⨯∈R A ,n n ⨯∈R B 。
线性方程组的直接解法
线性方程组的直接解法
线性方程组(linear equation system)是一类几何问题,也是解决线性系统和代数问题的重要方法,线性方程组由多个联立方程组成,这些方程中也可能含有未知量。
直接解法是把数学模型转换为数值模型,并给出实现其解题步骤的算法,它不同于间接求解的方法,既不做任何假设,也不处理不确定性问题,只是简单地直接求解线性方程组。
解线性方程组的直接解法主要分为三种,分别是高斯消元法、列主元消去法和列坐标变换法。
高斯消元法是一种比较常用的方法,主要是把线性方程组的未知量从左到右一步步求出来,其中用到的主要技术是把矩阵中部分元素消去为零,以便求解不定线性方程组的未知量。
而列主元消去法则是以一列为主元,去消除其他联立方程中出现的此列中的变量,从而最终求出其他未知变量的值。
最后,列坐标变换法是将线性方程组转换为一个更有利于求解的矩阵,其中未知量可以直接求得解答。
除了这三种常见方法外,还有一些更特殊的直接解法,比如要解常微分方程的未知函数,可以用拉格朗日方法和分部积分方法,再比如求解雅各比方程的根,可以通过主副方程互解求解,这种方法也叫作特征根法。
综上,解线性方程组的直接解法有高斯消元法、列主元消去法、列坐标变换法等;特殊问题可以采用拉格朗日方法、分部积
分法和特征根法等。
每种方法都有自己的优势,因此在使用时,可以根据问题的特点,选择适合的方法来解决。
计算方法实验报告2
实验报告2:解线性方程组的直接法姓名:杜娟学号:08012324 班级:勘查08-3班一.上机题目用高斯列主元消去法和LU分解法解线性方程组二.目的要求掌握用高斯列主元消去法和LU分解法设计程序,从而实现解线性方程组。
三.方法原理1.如果在一列中选取按模最大的元素,将其调到主干方程位置再做消元,则称为列主元消元法。
调换方程组的次序是为了使运算中做分母量的绝对值尽量地大,减少舍入误差的影响。
2.由高斯消元法得到启发,对消元的过程相当于将分解为一个上三角矩阵和一个下三角矩阵的过程。
如果直接分解得到和,。
这时方程化为,令,由解出;再由,解出。
这就是直接分解法。
四.算法步骤列主元消元法算法1.输入:方程组阶数n,方程组系数矩阵A和常数向量项b。
2.for k=1 to n-1 //选主元的消元过程{//选择{s=|a kk|,m=kfor u=k+1 to nif |a uk|>s then{m=u,s=| a uk|}for v=k to n //交换第k行和第m行{t=a kv; a kv=a mv; a mv=t}t=b k;b k=b m;b m=t}for i=k+1 to n{t=a ik/a kkfor j=k+1 to n{a ij=a ij-t*a kj}b i=b i-t*a kj}}3.for i:=n TO 1 //回代求解4.输出方程组的解 x i, i=1,2,…,n。
如果对于第k步,从k行至n行和从k列至n列中选取按模最大的,对第行和第行交换,对第列和第v列交换,这就是全主元消元法。
在k列和第v列交换时,还要记录下v的序号,以便恢复未知量xk和xv的位置。
LU分解法1计算的第一行元素要计算,则列出式(3.20)等号两边的第1行第1列元素的关系式:故。
一般地,由的第一行元素的关系式得到2计算的第一列元素要计算,则列出式(3.20)等号两边的第2行第1列元素的关系式:故。
计算方法第三章线性方程组的直接解法
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
第3章 线性方程组求解的直接解法
线性方程组求解的直接法5.2线性方程组直接解法概述直接解法就是利用一系列公式进行有限步计算,直接得到方程组的精确解的方法.当然,实际计算结果仍有误差,譬如舍入误差,而且舍入误差的积累有时甚至会严重影响解的精度.这是一个众所周知的古老方法,但用在计算机上仍然十分有效.求解线性方程组最基本的一种直接法是消去法.消去法的基本思想是,通过将一个方程乘以或除以某个常数,以及将两个方程相加减这两种手段,逐步减少方程中的变元的数目,最终使每个方程仅含一个变元,从而得出所求的解.高斯(Gauss )消去法是其中广泛应用的方法,其求解过程分为消元过程和回代过程两个环节.消元过程将所给的方程组加工成上三角方程组,所归结的方程组再通过回代过程得出它的解.Gauss 消去法由于添加了回代的过程,算法结构稍复杂,但这种改进的算法明显减少了计算量.直接法比较适用于中小型方程组.对高阶方程组,即使系数矩阵是稀疏的,但在运算中很难保持稀疏性,因而有存储量大,程序复杂等不足.5.3直接解法5.3.1Gauss 消去法Gauss 消去法是一个古老的求解线性方程组的方法,由它改进而来的选主元法是目前计算机上常用的有效的求解低阶稠密矩阵线性方程组的方法.例5.1用Gauss 消去法解方程组1231231232221(5.3.1)1324 (5.3.2)2539(5.3.3)2x x x x x x x x x ⎧++=⎪⎪++=⎨⎪++=⎪⎩解〖JP4〗第1步,式35.3.12⨯-()()加到式(5.3.2)上,式()15.3.1()2⨯-加到式(5.3.3)上,得到等价方程组123232322211(5.4.4)282(5.4.5)x x x x x x x ⎧++=⎪⎪-+=-⎨⎪⎪+=⎩第2步,式()2⨯5.3.4加到式(5.3.5)上得等价的方程组12323322211100(5.3.6)x x x x x x ++=⎧⎪-+=-⎨⎪=⎩第3步,回代法求解方程组(5.3.6),即可求得该方程组的解为32110,1,.2x x x ===-.用矩阵描述其约化过程即为233(2)22221011100100r r r ⨯+⇒⎡⎤⎢⎥--⎢⎥⎢⎥⎣⎦→[]122133(1)3()21()222212221,3241/201111395/20282r r r r r r A b ⨯-+⇒⨯-+⇒⎡⎤⎡⎤⎢⎥⎢⎥=--⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦→.这种求解过程称为具有回代的Gauss 消去法.由此例可见,Gauss 消去法的基本思想是:用矩阵的初等行变换将系数矩阵A 化为具有简单形式的矩阵(如上三角阵、单位矩阵等),而三角形方程组是很容易回代求解的.一般地,设有n 个未知数的线性方程组为11112211211222221122n n n n n n nn n na x a x a xb a x a x a x b a x a x a x b +++=⎧⎪+++=⎪⎨⎪⎪++=⎩L L MM M L (5.3.7)1212)(,,)(,,)T T ij n n n n A a X x x x b b b b ⨯===L L (,,,则方程组(5.3.7)化为AX b =.方便起见,记()(1)det 0A AA ==≠,(1)b b =,且()1A的元素记为()()11,ij a b ,的元素记为()1i b ,则消去法的步骤如下:第1步:1110a≠(),,计算(1)11(1)11(2,3,4),i i a m i n a ==L 用()1i m -乘方程组(5.3.7)中的第1个方程加到第i个方程中()2,3,i n =L ,即进行行初等变换()112,3,i i i R m R R i n -⋅→=L ,消去第2个到第n个方程中的未知数1,x ,得等价方程组111121(2)(2)(2)22222(2)(2)(2)2inn n n nn n x a a b x a a b ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦LMM LM M L (5.3.8)记为(2)(2)A X b =,其中(2)(1)(1)(2)(1)(1)1111(,2,3),2,3,ij ij i j i i i a a m a i j n b b m b i n =-==-=L L ,,第k 步()1,2,1k n =-L:继续上述消元过程.第1步到第1k -步计算已完成,且得到与原方程组等价的方程组(1)(1)(1)(1)1112111(2)(2)(2)222223()()()()()()nn k k k kkkn k n k k k nk nn n a a a b x a a b xx aa b x a a b ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎣⎦⎣⎦L L LLOM L M MMM L(5.3.9)记为()(()K k A X b =,进行第k 步消元:设()0k kka≠,计算乘数()()(1,)k ikk ik kka m k k n a ==+L ,用ik m -乘方程组(5.3.9)中第k 个方程加到第i 1)i k n =+L (,,,个方程上消去方程组(5.3.9)中第i 1)i k n =+L (,,个方程的未知数k x ,得到与原方程组等价的方程组:(1)()()(1)()()(1)(1)()(,1,)( 1.)k k k ij ij ik kj k k k i i ik k k k k k a a m a i j k n b b m b i k n A A k b b k ++++⎧=-=+⎪=-=+⎨⎪⎩L L ()与前行元素相同,与前个元素相同 (5.3.10) 记为(1)(1)k k A X b ++=其中(1)(1,k k A b ++)中元素计算公式为(1)()()(1)()()(1)(1)()(,1,)( 1.)k k k ij ij ik kj k k k i i ik k k k k k a a m a i j k n b b m b i k n A A k b b k ++++⎧=-=+⎪=-=+⎨⎪⎩L L ()与前行元素相同,与前个元素相同 (5.3.11)重复上述过程,且设()0(1,2,1)k kk a k n ≠=-L ,共完成1n -步消元计算,得到与方程组(5.3.7)等价的三角形方程组1111211(2)(2)(2)22222()()n n n n n nn n x a a b x a b ⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦LMOM M (5.3.12)再用回代法求方程组(5.3.12)的解,计算公式为()()()()1()(),(1,2,1)n n n nn n i i i ij j j i i i ii b x a b a x x i n n a =+⎧=⎪⎪⎨-⎪==--⎪⎩∑L (5.3.13)元素()k kka 称为约化的主元素.将方程组(5.3.7)化为方程组(5.3.12)的过程称为消元过程.方程组(5.3.12)的求解过程(5.3.13)称为回代过程.由消元过程和回代过程求解线性方程组的方法称为Gauss 消去法.定理5.1(Gauss 消去法)设AX b =。
实验2_求解线性方程组直接法(完成版)
数值分析实验报告二求解线性方程组的直接方法(2学时)一 实验目的1.掌握求解线性方程组的高斯消元法及列主元素法; 2. 掌握求解线性方程组的克劳特法; 3. 掌握求解线性方程组的平方根法。
二 实验内容1.用高斯消元法求解方程组(精度要求为610-=ε):1231231233272212240x x x x x x x x x -+=⎧⎪-+-=-⎨⎪-+=⎩ 2.用克劳特法求解上述方程组(精度要求为610-=ε)。
3. 用平方根法求解上述方程组(精度要求为610-=ε)。
4. 用列主元素法求解方程组(精度要求为610-=ε):1231231233432222325x x x x x x x x x -+=⎧⎪-+-=⎨⎪--=-⎩ 三 实验步骤(算法)与结果1. 高斯消元法求解根据算法思想用C 语言编程(源程序见附录2.1) 编译结果如下图:2. 克劳特法求解根据算法思想用C 语言编程(源程序见附录2.2)编译结果如下图:3平方根法求解根据算法思想用C语言编程(源程序见附录2.3)编译结果如下图:4列主元素法求解根据算法思想用C语言编程(源程序见附录2.4)编译结果如下图:四实验收获与教师评语1.实验收获:对于这次实验,我可以锻炼到上机实验的能力,并且第一次感受到数学知识在现实生活中的应用,也是第一次运用计算机解决数学问题。
另外,正是因为这次上机实验,让我重温了有些遗忘的编程知识。
2.教师评语:附录:2.1至2.4源程序代码2.1 #include <stdio.h>#define N 8void main(){floatsum,a[N][N]={0},u[N][N]={0},l[N][ N]={0},z[N]={0},x[N]={0};int n,i,j,k;printf("input the number of roots:");/*方程的个数小于8*/scanf("%d",&n);printf("input xishu matrix:\n"); for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<=n;i++)l[i][i]=1;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i>j){for(k=0,sum=0;k<=j-1;k++)sum+=l[i][k]*u[k][j];l[i][j]=(a[i][j]-sum)/u[j][j];}else{for(k=0,sum=0;k<=i-1;k++)sum+=l[i][k]*u[k][j];u[i][j]=a[i][j]-sum; }}for(i=1,j=n+1;i<=n;i++){for(k=0,sum=0;k<=i;k++)sum+=l[i][k]*z[k];z[i]=a[i][j]-sum;}for(i=n;i>=1;i--){sum=0;for(k=i+1;k<=n;k++)sum+=u[i][k]*x[k]; x[i]=(z[i]-sum)/u[i][i];}printf("changing fangcheng xi shu is:\n");for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%-10g",u[i][j]); printf("%-10g\n",z[i]);}for(i=1;i<=n;i++)printf("x(%d)=%-g\n",i,x[i]); getch();}2.2#include <conio.h>#include <stdio.h>#define N 8void main(){floatsum,a[N][N]={0},u[N][N]={0},l[N][ N]={0},z[N]={0},x[N]={0};int n,i,j,k;printf("input the number of roots:");/*方程的个数小于8*/scanf("%d",&n);printf("input xishu matrix:\n"); for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<=n;i++)u[i][i]=1;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i>=j){for(k=0,sum=0;k<=j-1;k++)sum+=l[i][k]*u[k][j];l[i][j]=a[i][j]-sum; }else{for(k=0,sum=0;k<=i-1;k++)sum+=l[i][k]*u[k][j];u[i][j]=(a[i][j]-sum)/l[i][i];}}for(i=1,j=n+1;i<=n;i++){for(k=0,sum=0;k<=i;k++)sum+=l[i][k]*z[k];z[i]=(a[i][j]-sum)/l[i][i];}for(i=n;i>=1;i--){sum=0;for(k=i+1;k<=n;k++)sum+=u[i][k]*x[k];x[i]=z[i]-sum;}printf("changing fangcheng xi shu is:\n");for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%-10g",u[i][j]); printf("%-10g\n",z[i]);}for(i=1;i<=n;i++)printf("x(%d)=%-g\n",i,x[i]); getch();}2.3#include <conio.h>#include <stdio.h>#include <math.h>#define N 8void main(){floatsum,a[N][N]={0},u[N][N]={0},l[N][ N]={0},z[N]={0},x[N]={0};int n,i,j,k;printf("input the number of roots:");/*方程的个数小于8*/ scanf("%d",&n);printf("input xishu matrix:\n"); for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i>j){for(k=0,sum=0;k<=j-1;k++)sum+=l[i][k]*l[j][k];l[i][j]=(a[i][j]-sum)/l[j][j];u[j][i]=l[i][j];}if(i==j){for(k=0,sum=0;k<=i-1;k++)sum+=l[i][k]*l[i][k];l[i][i]=sqrt(a[i][i]-sum);u[i][i]=l[i][i];}}for(i=1,j=n+1;i<=n;i++){for(k=0,sum=0;k<=i;k++)sum+=l[i][k]*z[k];z[i]=(a[i][j]-sum)/l[i][i];}for(i=n;i>=1;i--){sum=0;for(k=i+1;k<=n;k++)sum+=u[i][k]*x[k];x[i]=(z[i]-sum)/l[i][i];}printf("changing fangcheng xi shu is:\n");for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%-10g",u[i][j]); printf("%-10g\n",z[i]);}for(i=1;i<=n;i++)printf("x(%d)=%-g\n",i,x[i]); getch();}2.4#include <stdio.h>#include <math.h>#define N 8void main(){ int i,j,k,n;floata[N][N],l[N][N],u[N][N],z[N],x1[N ],max,x;for(i=0;i<N;i++)for(j=0;j<N;j++)a[i][j]=u[i][j]=l[i][j]=0;z[0]=0; printf("input the number of roots:");scanf("%d",&n);printf("input xishu matrix:\n");for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)scanf("%f",&a[i][j]);for(i=1;i<n;i++){ max=fabs(a[i][i]);k=i;for(j=i+1;j<=n;j++)if(fabs(a[j][i])>max){ max=fabs(a[j][i]);k=j;} for(j=i;j<=n+1;j++){ x=a[i][j];a[i][j]=a[k][j];a[k][j]=x;}for(j=i+1;j<=n;j++){ l[j][i]=a[j][i]/a[i][i];a[j][i]=0;for(k=i+1;k<=n+1;k++) a[j][k]=a[j][k]-l[j][i]*a[i][k]; }z[i]=a[i][n+1];}z[n]=a[n][n+1];for(i=1;i<=n;i++)for(j=1;j<=n;j++)u[i][j]=a[i][j];for(i=n;i>0;i--){ k=i+1;x=0;while(k<=n){ x+=u[i][k]*x1[k];k++;}x1[i]=(z[i]-x)/u[i][i];}for(i=1;i<=n;i++)for(j=1;j<=n;j++){ printf("%-10g",u[i][j]);if(j==n)printf("%-10g\n",z[i]);}for(i=1;i<=n;i++)printf("x%d=%-10g\n",i,x1[i]);getch();}。
数值计算方法-第5章_解线性方程组的直接法
本章讲解直接法
5.1 消元法
我们知道,下面有3种方程的解我们可以直接求出:
①
n次运算
A
diag(a11, a22 ,
, ann )
xi
bi aii
,i
1,
,n
②
(n+1)n/2次运算
l11
A
l21 ln1
l22 ln2
(aik
k 1
liklkr ) r 1 lkk
,i k 1, , n
因此不常用
又 l11
1
l11
l21 l22
ln1
ln2
lnn
l '21 l 'n1
1 l'n2
1
l22
lnn
则有
A L~D~D~T L~T LDLT
L~
D~
1
L
l21 ln1
lnn
xi
bi
i 1
lij x j
j 1
lii
,i
1,
,n
③
(n+1)n/2次运算
u11
A
u12 u22
u1n
u2n unn
xi
bi
n
uij x j
j i 1
uii
,i
n,
,1
对方程组,作如下的变换,解不变 ①交换两个方程的次序 ②一个方程的两边同时乘以一个非0的数 ③一个方程的两边同时乘以一个非0数,加到另一个方程
1 ln2
1
d1
D
d2
dn
a11 a12
a21 a22
数值分析第五章解线性方程组的直接法
数值分析第五章解线性方程组的直接法解线性方程组是数值分析中的一个重要问题,对于大规模的线性方程组来说,直接法是一种常用的求解方法。
本文将介绍解线性方程组的直接法,包括高斯消元法和LU分解法,并对其稳定性和计算复杂度进行讨论。
高斯消元法是一种常用的直接法,用于求解非奇异线性方程组。
其基本思想是通过初等行变换将线性方程组转化为上三角方程组,然后通过回代求解得到方程的解。
高斯消元法的步骤如下:1.将线性方程组表示为增广矩阵[A,b],其中A是系数矩阵,b是常数向量。
2.从第一行开始,选择一个非零元素作为主元,通过行变换将主元下方的元素全部消为零。
3.重复第2步,直到矩阵变为上三角矩阵。
4.通过回代求解上三角矩阵,得到方程组的解。
高斯消元法的主要优点是简单直接,容易实现,但存在一些问题。
首先,如果系数矩阵A是奇异矩阵,即行列式为零,那么高斯消元法无法得到方程组的解。
其次,如果系数矩阵A的其中一行或几行接近于线性相关,那么在消元过程中会引入大量的舍入误差,导致计算结果不准确。
这也说明了高斯消元法的稳定性较差。
为了提高稳定性,可以使用LU分解法来解线性方程组。
LU分解法将系数矩阵A分解为两个矩阵L和U的乘积,其中L是下三角矩阵,U是上三角矩阵。
这样,原始的线性方程组可以表示为LUx=b,进而可以通过两个步骤来求解方程组:1.进行LU分解,将系数矩阵A分解为L和U。
2.分别用前代和回代的方法求解方程组Ly=b和Ux=y。
LU分解法相对于高斯消元法的优点是,可以在求解多个右端向量时,避免重复计算LU分解,从而提高计算效率。
同时,LU分解法的稳定性也较高,对于多个右端向量求解时,舍入误差的累积相对较小。
然而,LU分解法也存在一些问题。
首先,LU分解法的计算复杂度较高,需要进行两次矩阵乘法和一次矩阵向量乘法,而且LU分解过程中需要对系数矩阵A进行大量的行变换,增加了计算量。
其次,当系数矩阵A的一些元素非常小或非常大时,LU分解法容易出现数值不稳定的情况,即舍入误差的累积较大,导致计算结果不准确。
解线性方程组的直接方法
解线性方程组的直接方法一、高斯消元法高斯消元法是解线性方程组的一种常用且直接的方法。
它的基本思想是通过一系列的代数运算,将方程组化为一个三角方程组,然后从最后一行开始,逐步回代求解未知数。
下面以一个二元一次方程组为例,说明高斯消元法的具体步骤:例如,给定方程组:a₁₁x₁+a₁₂x₂=b₁a₂₁x₁+a₂₂x₂=b₂其中,a₁₁,a₁₂,a₂₁,a₂₂,b₁,b₂为已知系数。
1.检查a₁₁的值是否为0,若为0则交换第一行与非零行。
2.将第一行的每个元素除以a₁₁,使a₁₁成为13.将第一行乘以(-a₂₁)并加到第二行上,使第二行的第一个元素变为0。
4.引入一个新的未知数y₂=a₂₁x₁+a₂₂x₂,并代入第二行,化简方程组。
5.使用回代法求解方程组。
高斯消元法的优势在于其直接的解题思路和较高的计算精度,但是其缺点是计算复杂度较高,对于大规模的方程组不太适用。
二、逆矩阵法逆矩阵法是解线性方程组的另一种直接方法,它通过求解方程组的系数矩阵的逆矩阵,并将其与方程组的常数向量相乘,得到方程组的解向量。
下面以一个三元一次方程组为例,说明逆矩阵法的具体步骤:例如,给定方程组:a₁₁x₁+a₁₂x₂+a₁₃x₃=b₁a₂₁x₁+a₂₂x₂+a₂₃x₃=b₂a₃₁x₁+a₃₂x₂+a₃₃x₃=b₃其中,a₁₁,a₁₂,a₁₃,a₂₁,a₂₂,a₂₃,a₃₁,a₃₂,a₃₃,b₁,b₂,b₃为已知系数。
1.计算系数矩阵A的行列式D=,A。
2. 求解系数矩阵A的伴随矩阵Adj(A)。
3. 计算逆矩阵A⁻¹=Adj(A)/D。
4.将常数向量b用列向量表示。
5.计算解向量x=A⁻¹b。
逆矩阵法的优势在于其求解过程相对简单,计算量较小,并且不需要对系数矩阵进行消元操作。
但是逆矩阵法的限制在于当系数矩阵不可逆时无法使用。
三、克莱姆法则克莱姆法则是解线性方程组的另一种直接方法,它通过定义克莱姆行列式和克莱姆向量,利用行列式的性质求解方程组的解向量。
计算方法实验:解线性方程组的直接法
实验二解线性方程组的直接法一、实验目的用列主元素高斯消去法和三角分解法解线性方程组Ax=b。
式中,A为n阶非奇异方阵,x,b是n阶列向量,并分析选主元素的重要性。
二、实验方法(1)列主元素高斯消去法通过变换,将系数矩阵换成等价的上三角矩阵,在每步消元过程中,选列主元素。
对k=1,2,……n-1,逐次计算l ik=a ik(k-1)/a kk(k-1) (i=k+1,k+2,……,n)a ij(k)=a ij(k-1)-l ik a kj(k-1) (i,j=k+1,k+2,……,n)b i(k)=b i(k-1)-l ik b k(k-1) (i=k+1,k+2,……,n)逐步回代气的原方程组的解X n=b i(n-1)/a nn(n-1)X k=(b k(k-1)_a kj(k-1)x j)/a kk(k-1) (k=n-1,n-2, (1)(2)直接三角分解法由于两个矩阵相等就是它们的对应元素相等,因此通过比较A与LU的对应元素,即可得到直接计算L,U的元素的公式。
设A=L×U,其中U的第一行、L的第一列的元素分别为对(依次:U的第二行,L的第二列,U的第三行,L的第三列……),有由上述两种方法得到矩阵A的LU分解后,求解Ly=b与Ux=y的计算公式为∑+=n1kj三、实验内容解下列方程组·=四、实验程序(1)列主元素高斯消去法(2)直接三角分解法0147.06721.109998.42371.13142.17643.89217.44129.35435.15330.27875.15301.04017.31651.18326.31348.14321xxxx9237.164231.183941.65342.9五、实验结果(仅供参考)精确解为:(1,1,1,1)T六、结果分析实验的数学原理很容易理解,也容易上手。
把运算的结果带入原方程组,可以发现符合的还是比较好。
这说明列主元消去法计算这类方程的有效性。
计算方法二实验二 解方程组的直接法
山西大学计算机与信息技术学院实验报告
六、实验分析
1全主元计算量很大,只使用列主元就可,列主元是一列的最大的。
全主元就是所有元素找最大的放在顺序主子阵左上角。
2高斯消去法是一个古老的求解线性方程组的方法,但由它改进得到的选主元的高斯消去法则是目前计算机上常用的解低阶稠密矩阵方程组的有效方法。
问题主要集中在循环控制中,循环次数多了一次或者缺少了一次,导致数据错误,一些基本的编程语句在语法上也会由于生疏而产生许多问题,但是语句的错误由于系统会提示,比较容易进行修改,数据计算过程中的一些逻辑错误,比如循环变量的控制,这些系统不会提示错误,需要我们细心去发现错误,不断修正,调试。
教师
评语。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 2 21 4
高斯消去法的基本思想: • 利用矩阵行的初等变换将原方程组Ax=b系数矩 阵化为上三角形矩阵,然后从最后一个方程开始, 依次向前代入求出未知变量:
xn , xn1 , … , x1
• 这种求解上三角方程组的方法称为回代, 通过一 个方程乘或除以某个常数, • 将两个方程相加减,逐步减少方程中的变元数, 最终将方程组化成上三角方程组,一般将这一过 程称为消元,然后再回代求解。
① ② ③
解:高斯消去法包括如下的消元和迭代的两个过程。
(1)消元过程
第1步:将方程①乘上(-2)加到方程 ②上去,将方程 3个方程的
1 ①乘上( ) 加到方程 ③上去,这样就消去了第2、 2
x1 项,于是就得到等价方程组
4x2 x 3 2 5 3 13 x2 x3 2 2 2
| a11 | (| a12 | | a13 | | a1n |) | a22 | (| a21 | | a23 | | a2n |)
……
| ann | (| an1 | | an2 | | an(n-1) |)
定理1.1 若方程组 Ax b 的系数矩阵A为严格
0.001 2.000 3.000 1.000 r3 r2 ( - 4001) 0 2004 3005 1002 2004 0 0 5.000 2.000
计算解为:
x (0.400, 0.09980,0.4000)
T
解法2。变换行,避免绝对值小的主元做除数
其精确解为(舍入到4位有效数字):
T x* (0.4904, 0.05104,0.3675)
解法1 使用Gauss消去法求解
0.001 2.000 3.000 1.000 (A | b) - 1.000 3.712 4.623 2.000 - 2.000 1.072 5.643 3.000
计算方法 (Numerical Analysis)
第8次 线性方程组的直接解法
本讲内容
1)高斯消去法 2)高斯主元素消去法 3)方程组的性态 4) 高斯消去法算法构造(编程)
高斯消去法
解线性方程组的直接法
§5.1 引言
在工程技术、自然科学和社会科学中,许多问
题最终都可归结为求解线性方程组的数学问题。
(1) (2) (3) (4)
x2 2
将结果代入(1), 得 x1 1
§ 5.2 高斯消去法 5.2.1 高斯消去法的基本思想 先用一个简单实例来说明Gauss法的基本思想
例5.1 解线性方程组
2x1 x 2 3x3 1 4x1 2x2 5x3 4 x 7 1 2x2
可简记为 Ax=b,其中
( 6.1 )
a11a12 ...a1n x1 b1 a21a22 ...a2n x2 b2 A ,x ,B ...... ... ... an1an2 ...ann xn bn
2x1 x 2 3x3 1
④
⑤
5 第2步:将方程 ④乘上 ( ) 加到方程 ⑤上去,这样 8
就消去了第3个方程的
x 2 项,于是就得到等价方程组
2x1 x 2 3x3 1 4x2 x 3 2 7 21 x3 8 4
⑥
这样,消元过程就是把原方程组化为上三角形方 程组,其系数矩阵是上三角矩阵。
经变换得到的上三角形方程组的顺序主子式
Am
(m =1,2,…,n)所以能实现高斯消去法求解
定义5.1 设矩阵 A (aij )n 每一行对角元素的绝对
值都大于同行其他元素绝对值之和
| aii |
| a
j 1 j i
n
ij
|,
i 1, 2, , n
则称A为严格对角占优矩阵。
上述条件展开以后为:
改变系数矩阵顺序主子式的值。
设方程组系数矩阵 A ( aij )n ,其顺序主子式
a11 Am am1
(1) a11
… a1m … 0 (m =1,2,…,n) amm …
(1) a12 a(2) 22 (1) … a1m … a(2) (1) (2) … 2m a11 a22 a(m) mm 0 ... … (m) amm
- 2.000 1.072 5.643 r1 r3 (A | b) - 1.000 3.712 4.623 0.001 2.000 3.000 1 r2 r1 (- ) - 2.000 1.072 5.643 2 0 3.176 1.801 1 r3 r1 ( ) 0 2.001 3.003 2000 - 2.000 1.072 5.643 0 3.176 1.801 2.001 0 0 1.868 r3 r2 () 3.176 3.000 2.000 1.000
§ 5.2 高斯消去法 例子:求解如下的上三角线性方程组:
x1 x 2 x 3 x 4 10 x 2 x3 x 4 9 x 3 x4 7 x4 4 解:由(4),得 x 4 4 将(4)带入(3),得 x3 3
将结果代入(2), 得
3.000 0.5000 1.002
3.000 0.5000 0.6870
T *
解为:x (0.4900, 0.05113,0.3678) x 这个解比解法1更加接近真实的解。
§5.3 高斯主元素消去法(续) • 交换原则:通过方程或变量次序的交换,使在对角 线位置上获得绝对值尽可能大的系数作为akk(k),称 这样的akk(k) 为主元素,并称使用主元素的消元法 为主元素法
线性方程组的求解对于实际问题是极其重要的。
解线性方程组的直接法
常见的nxn线性方程组,一般形式为
a11 x1 a12x 2 ... a1nx n b1 a21 x1 a22x 2 ... a2nx n b2 ...... a x a x ... a x b n2 2 nn n n n1 1
解:选择-20作为该列的主元素,交换方程(1)和(2)得
- 20x1 40x2 x 3 4 10x1 - 19x2 - 2x3 3 x 1 4x2 5x3 5
m21 =10/-20=-0.5 (5) m31=1/-20=-0.05
(4)
(6)
(5)- m21(4), (6)- m31(4)得
6 6 - 1 15 - 3 9 18
1
1
3 1 1 6 3 ~ A A b 0 6 - 1 15 0 2 - 3 9 18 0
1 6 11 3
1 -1 25 3
6 15 14
3 1 1 6 3 0 6 - 1 15 0 0 - 11 25 42 0
• 根据主元素选取范围分为:
– 列主元素法 – 行主元素法(不讲) – 全主元素法(不讲)
5.3.2 列主元素法 • 列主元素法就是在待消元的所在列中选取主元(选取
一列中绝对值最大的元素当主元),经方程的行交换,
置主元于对角线位置后进行消元的方法。
例5.4 用列主元素法解下列线性方程组
10x1 - 19x2 - 2x3 3 - 20x1 40x2 x 3 4 x 1 4x2 5x3 5 (1) (2) (3)
因此,需要对上述的高斯算法进行修改,首先应该研
究原来的矩阵A在何条件下能够保证
… a(k) kk 0, 对k 1,2, , n 1
定理1 若方程组系数矩阵的顺序主子式全不为0,则
高斯消去法能实现方程组的求解,即:
a
(k) kk
… ,n 1 0, 对k 1,2,
证明:上三角形方程组是从原方程组出发,通过逐次 进行“一行乘一数加到另一行”而得出的,该变换不
(2)回代过程 将上述三角形方程组自下而上求解得:
x3 6 x2 1 x1 9
从而求得原方程组的解:
x1 9, x2 1, 6
前述的消元过程相当于对原方程组的增广矩阵进行 下列行变换
~ A Ab r2 ( 2)r1 1 r3 ( )r1 2
a 对角占优,则用高斯消去法求解时,
因此,可以使用高斯消去法求解。
(k) kk 全不为0。
练习:用高斯消去法求解如下的线性方程组
3x1
x2 x3 6 6x2 x 3 15
(1) (2) (3)
2x1 3x2 9x3 18
解:增广矩阵为
3 ~ A Ab 0 2
2 4 1
1 2 2
3 5 0
2 0 0
1 4 5 2
3 1 3 2
1 4 7 1 2 13 2
同样可得到与 原方程组等价
的方程组 ⑥
5 r3 ( )r2 2 8
0 0
1 4 0
3 1 7 8
线性方程组的数值解法一般有两类:
1. 直接法:就是经过有限步算术运算,可求得方程组 精确解的方法(若计算过程中没有舍入误差),如 克莱姆法则就是一种直接法,直接法中具有代表性
的算法是Gauss消去法。
2. 迭代法: 就是用某种极限过程去逐步逼近线性方程
组的精确解的方法。也就是从解的某个近似值出发
,通过构造一个无穷序列去逼近精确解的方法。(一 般有限步内得不到精确解)