3、线性代数方程组的直接解法
- 格式:ppt
- 大小:947.50 KB
- 文档页数:41
解线性方程组的直接方法一、高斯消元法高斯消元法是解线性方程组最常用的方法之一、它通过一系列的消元操作,将线性方程组转化为阶梯型方程组,从而求解未知数的值。
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可逆。
第二章线性代数方程组的直接解法教学U标:1•了解线性代数方程组的结构、基本理论以及相关解法的发展历程;2•掌握高斯消去法的原理和计算步骤,理解顺序消去法能够实现的条件,并在此基础上理解矩阵的三角分解(即LU分解),能应用高斯消去法熟练计算简单的线性代数方程组;3•在理解高斯消去法的缺点的基础上,掌握有换行步骤的高斯消去法,从而理解和掌握选主元素的高斯消去法,尤其是列主元素消去法的理论和计算步骤,并能灵活的应用于实际中。
教学重点:1.高斯消去法的原理和讣算步骤;2•顺序消去法能够实现的条件;3・矩阵的三角分解(即LU分解);4.列主元素消去法的理论和计算步骤。
教学难点:1.高斯譎去法的原理和汁算步骤;2.矩阵的三角分解(即LU分解);3・列主元素消去法的理论和计算步骤。
教学方法:教具:在自然科学和匸程技术中,许多问题的解决常常归结为线性方程组的求解,有的问题的数学模型中虽不直接表现为线性方程组,但它的数值解法中将问题“离散化”或“线性化”为线性方程组。
例如,电学中的网络问题、船体数学放样中建立三次样条函数问题、最小二乘法用于求解实验数据的曲线拟合问题. 求解非线性方程组问题、用差分法或有限元法求解常微分方程边值问题及偏微分方程的定解问题,都要导致求解一个或若干个线性方程组的问题。
U前,计算机上解线性方程组的数值方法尽管很多,但归纳起来,大致可以分为两大类:一类是直接法(也称精确解法);另一类是迭代法。
例如线性代数中的Cramer法则就是一种直接法,但其对高阶方程组计算量太大,不是一种实用的算法。
实用的直接法中具有代表性的算法是高斯(Gauss)消元法,其它算法都是它的变形和应用。
在数值计算历史上,直接法和迭代法交替生辉。
一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。
一般说来,对同等规模的线性方程组,直接法对讣算机的要求高于迭代法。
对于中、低阶5<200)以及高阶带形的线性方程组,山于直接法的准确性和可靠性高,一般都用直接法求解。
线性方程组的直接解法
线性方程组(linear equation system)是一类几何问题,也是解决线性系统和代数问题的重要方法,线性方程组由多个联立方程组成,这些方程中也可能含有未知量。
直接解法是把数学模型转换为数值模型,并给出实现其解题步骤的算法,它不同于间接求解的方法,既不做任何假设,也不处理不确定性问题,只是简单地直接求解线性方程组。
解线性方程组的直接解法主要分为三种,分别是高斯消元法、列主元消去法和列坐标变换法。
高斯消元法是一种比较常用的方法,主要是把线性方程组的未知量从左到右一步步求出来,其中用到的主要技术是把矩阵中部分元素消去为零,以便求解不定线性方程组的未知量。
而列主元消去法则是以一列为主元,去消除其他联立方程中出现的此列中的变量,从而最终求出其他未知变量的值。
最后,列坐标变换法是将线性方程组转换为一个更有利于求解的矩阵,其中未知量可以直接求得解答。
除了这三种常见方法外,还有一些更特殊的直接解法,比如要解常微分方程的未知函数,可以用拉格朗日方法和分部积分方法,再比如求解雅各比方程的根,可以通过主副方程互解求解,这种方法也叫作特征根法。
综上,解线性方程组的直接解法有高斯消元法、列主元消去法、列坐标变换法等;特殊问题可以采用拉格朗日方法、分部积
分法和特征根法等。
每种方法都有自己的优势,因此在使用时,可以根据问题的特点,选择适合的方法来解决。
第三章 解线性方程组的直接法3.1 引言许多科学技术问题要归结为解含有多个未知量x 1, x 2, …, x n 的线性方程组。
例如,用最小二乘法求实验数据的曲线拟合问题,三次样条函数问题,解非线性方程组的问题,用差分法或有限元法解常微分方程、偏微分方程的边值等,最后都归结为求解线性代数方程组。
关于线性方程组的数值解法一般有两类:直接法和迭代法。
1. 直接法直接法就是经过有限步算术运算,可求得线性方程组精确解的方法(假设计算过程中没有舍 入误差)。
但实际计算中由于舍入误差的存在和影响,这种方法也只能求得线性方程组的近似解。
本章将阐述这类算法中最基本的高斯消去法及其某些变形。
2. 迭代法迭代法就是用某种极限过程去逐步逼近线性方程组精确解的方法,迭代法需要的计算机存储 单元少、程序设计简单、原始系数矩阵在计算过程中不变,这些都是迭代法的优点;但是存在收敛性和收敛速度的问题。
迭代法适用于解大型的稀疏矩阵方程组。
为了讨论线性方程组的数值解法,需要复习一些基本的矩阵代数知识。
3.1.1 向量和矩阵 用nm ⨯R表示全部n m ⨯实矩阵的向量空间,nm C⨯表示全部n m ⨯复矩阵的向量空间。
()⎪⎪⎪⎪⎪⎭⎫⎝⎛==⇔∈⨯nn n n n n ij nm a a aa a aa a a a212222111211A R A 此实数排成的矩形表,称为m 行n 列矩阵。
⎪⎪⎪⎪⎪⎭⎫⎝⎛=⇔∈n n x x x 21x R x x 称为n 维列向量矩阵A 也可以写成)(n 21a ,,a ,a A = 其中 a i 为A 的第i 列。
同理⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=T T T n 21b b b A其中T i b 为A 的第i 行。
矩阵的基本运算:(1) 矩阵加法 )( ,n m n m 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 kjik b acij ⨯⨯⨯=∈∈∈==∑m p n n m R C ,R B ,R A AB C ( ,1(4) 转置矩阵 ji ij T nm a c ==∈⨯ , ,A C RA(5) 单位矩阵 ()n n ⨯∈=R e ,,e ,e I n 21 ,其中 ()Tk e 0,0,1,0,0 = k=1,2,…,n(6) 非奇异矩阵 设nn ⨯∈RA ,nn ⨯∈RB 。
第一章 解线性代数方程组的直接法1.1 引 言在自然科学与社会科学的研究中,常常需要求解线性代数方程组,如实验数据的曲线、曲面的拟合和用差分法或有限元法解偏微分方程等都要用到线性代数方程组的求解。
由于从不同的问题导出的线性代数方程组的系数矩阵不同,比如:矩阵阶数的大小、矩阵中的非零元稠密情况等,粗略地,系数矩阵可以分为低阶稠密矩阵和大型稀疏矩阵。
关于线性代数方程组的求解,主要分为直接法和迭代法两大类,在理论上,用直接法可以通过有限步的计算得到精确解,而迭代法是通过逐次迭代逼近来求得近似解,实际上,由于舍入误差的影响,由直接法得到的解也不精确,因此,在某些需要高精度解的问题中,常常把由直接法得到的解再运用迭代法迭代若干步,以提高解的精度,一般地说,对于低阶稠密的线性代数方程组以及大型带形方程组的求解,采用直接法比较有效,而对于大型稀疏(非带形)方程组则用迭代法求解比较有利。
当然,采用直接法,还是迭代法,还是直接法与迭代法交替运用,要根据具体情况确定。
本章主要讨论一些最基本的直接法,并在此基础上讨论它的变形情况,对于求解线性代数方程组的迭代法,我们将在下一章中介绍。
1.2 高斯(Gauss )消去法考虑n 阶线性代数方程组⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++nn nn n n n n n n b x a x a x a b x a x a x a b x a x a x a 22112222212********* (1.1)采用矩阵和向量记号,我们可以把式(1.1)改写成b Ax =(1.2)其中⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=nn n n n n a a a a a a a a a A 212222111211,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n b x x x 21,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=n b b b b 21.现在,我们给出用高斯消去法求解式(1.2)的计算过程。
算法1.1 求解线代数方程组(1.2)的高斯消去法 我们先分别记矩阵A A=)1(,向量b b =)1(,它们的元素分别为 ij ij a a =)1( ),,2,1,(n j i =,i i a b =)1(),,2,1(n i =.(1)消元过程第一步:若0)1(11≠a ,可对n i ,,3,2 =进行如下计算,用)1(11)1(11a a m i i -=乘方程(1.2)两边的第一行加到第i 行中去,得到⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡)2()2(3)2(2)1(1321)2()2(3)2(2)2(3)2(33)2(32)2(2)2(23)2(22)1(1)1(13)1(12)1(11000n n nn n n nn nb b b b x x x x a a a a a a a a a a a a a, (1.3)这里,),,3,2,(,)1(11)1()2(n j i a m a a i i ij ij =⋅+=, ),,3,2( ,)1(11)1()2(n i b m a a i i i =⋅+=.第二步:若0)2(22≠a ,可对n i ,,3 =进行如下计算,用)2(22)2(22a a m i i -=乘方程组(1.3)两边的第二行加到第i 行中去,得到⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡)3()3(3)2(2)1(1321)3()3(3)3(3)3(33)2(2)2(22)1(1)1(12)1(1100000n n nn n nn nb b b b x x x x a a a a a a a a a, 这里),,3,(,)2(22)2()3(n j i a m a a j i ij ij =⋅+=, ),,3( ,)2(22)2()3(n i b m b b i i i =⋅+=.依次下去,……,一直做到第)1(-n 步,即:.000)()1(1)2(2)1(1121)()1(,1)1(1,1)2(2)2(1,2)2(22)1(1)1(1,1)1(12)1(11⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡----------n n n n n n n nn n n n n n n n n n n b b b b x x x x a a a a a a a a a a (2)回代过程若0)(≠n nn a ,我们可以从式(1.4)逐次回代计算出方程(1.2)的解:⎪⎩⎪⎨⎧-=-==∑+=).1,2,,1( ,)()(1)()()()( n k a x a b x a b x k kk n k s s k ks k k k n nn n n n 如果在消元过程的第一步中,0)1(11=a ,由于矩阵A 非奇,所以在)1(A 的第一列中至少有一个元素011≠i a ,于是可以通过对方程两边进行第一行与第1i 行的行交换,将11i a 调到(1,1)位置,然后进行消元计算。
数值分析方法中方程求解的直接法和迭代法第3章 解线性方程组的直接法一、消元法1. 高斯消元法(加减消元):首先将A 化为上三角阵,再回代求解。
11121121222212n n n n nnn a a a b a a a b a a a b ⎛⎫⎪ ⎪⎪⎪⎝⎭ (1)(1)(1)(1)(1)11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()00000n n nn n nnn a a a a b a a a b a a b a b ⎛⎫⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭步骤如下:第一步:1111,2,,i a i i n a -⨯+=第行第行11121121222212n n n n nnn a a a b a a a b a a a b ⎛⎫⎪ ⎪⎪⎪⎝⎭ 111211(2)(2)(2)2222(2)(2)(2)200n nn nnn a a a b a a b a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭第二步:(2)2(2)222,3,,i a i i n a -⨯+=第行第行 111211(2)(2)(2)2222(2)(2)(2)200nnn nnn a a a b a a b a a b ⎛⎫⎪ ⎪ ⎪ ⎪⎝⎭11121311(2)(2)(2)(2)222322(3)(3)(3)3333(3)(3)(3)300000n n n n nn n a a a a b a a a b a a b a a b ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭类似的做下去,我们有:第k 步:()()k ,1,,k ikk kka i i k n a -⨯+=+第行第行。
n -1步以后,我们可以得到变换后的矩阵为:11121311(2)(2)(2)(2)222322(3)(3)(3)3333()()00000n n nn n nnn a a a a b a a a b a a b a b ⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭注意到,计算过程中()k kk a 处在被除的位置,因此整个计算过程要保证它不为0。