解线性方程组的直接解法
- 格式:doc
- 大小:65.50 KB
- 文档页数:6
求解线性方程组的直接解法5.2LU分解① Gauss消去法实现了LU分解顺序消元结束时的上三角矩阵U和所用的乘数,严格下三角矩阵。
将下三角矩阵的对角元改成1,记为L,则有A=LU,这事实是一般的,我们不难从消去的第k个元素时的矩阵k行及k列元素的历史得到这一点.因为从消元的历史有u kj=a kj-m k1u1j- m k2u2j -…- m k,k-1u k-1,j, j=k,k+1,…,nm ik=(a ik-m i1u1k- m i2u2k -…-m i,k-1u k-1,k>/u kk i=k+1,k+2,…,n于是a kj=m k1u1j+m k2u2j+…+m k,k-1u k-1,j+u kj, j=k,k+1,…,na ik=m i1u1k+m i2u2k+…+m i,k-1u k-1,k+m ik u kk i=k+1,k+2,…,n从前面两个式子我们可以直接计算L和U(见下段>.将矩阵分解为单位下三角矩阵和上三角矩阵之积称为矩阵的LU分解.顺序消元实现了LU分解,同时还求出了g, Lg=b的解.②直接LU分解上段我们得到(l ij=m ij>u kj=a kj-l k1u1j-l k2u2j -…- l k,k-1u k-1,j, j=k,k+1,…,nl ik=(a ik-l i1u1k-l i2u2k -…-l i,k-1u k-1,k>/u kk i=k+1,k+2,…,n2诸元素对应乘积,只不过算L的元素时还要除以同列对角元.这一规律很容易记住.可写成算法(L和U可存放于A>:for k=1:n-1for j=k:nu kj=a kj-l k1u1j-l k2u2j -…- l k,k-1u k-1,jendfor i=k+1:nl ik=(a ik-l i1u1k-l i2u2k -…-l i,k-1u k-1,k>/u kkendend这一算法也叫Gauss消去法的紧凑格式,可一次算得L,U的元素,不需逐步计算存储.考察上面的表格会发现还可安排其它计算次序,只要在这一次序下每个元素左边的L的元素与上方的U的元素已计算在先。
求解线性方程组的直接解法5.2 LU 分解① Gauss 消去法实现了LU 分解顺序消元结束时的上三角矩阵U 和所用的乘数,严格下三角矩阵。
将下三角矩阵的对角元改成1,记为L ,则有A =LU ,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-613322121121542774322这事实是一般的,我们不难从消去的第k 个元素时的矩阵k 行及k 列元素的历史得到这一点.因为从消元的历史有 u kj =a kj -m k 1u 1j - m k 2u 2j -…- m k ,k-1u k-1,j , j=k ,k+1,…,n m ik =(a ik -m i 1u 1k - m i 2u 2k -…-m i ,k-1u k-1,k )/u kk i=k+1,k+2,…,n 于是 a kj =m k 1u 1j +m k 2u 2j +…+m k ,k-1u k-1,j +u kj , j=k ,k+1,…,n a ik =m i 1u 1k +m i 2u 2k +…+m i ,k-1u k-1,k +m ik u kk i=k+1,k+2,…,n 从前面两个式子我们可以直接计算L 和U (见下段).将矩阵分解为单位下三角矩阵和上三角矩阵之积称为矩阵的LU 分解.顺序消元实现了LU 分解,同时还求出了g , Lg =b 的解.② 直接LU 分解上段我们得到(l ij =m ij ) u kj =a kj -l k 1u 1j -l k 2u 2j -…- l k ,k-1u k-1,j , j=k ,k+1,…,n l ik =(a ik -l i 1u 1k -l i 2u 2k -…-l i ,k-1u k-1,k )/u kk i=k +1,k+2,…,n2诸元素对应乘积,只不过算L 的元素时还要除以同列对角元.这一规律很容易记住.可写成算法(L 和U 可存放于A ): for k =1:n -1 for j=k :n u kj =a kj -l k 1u 1j -l k 2u 2j -…- l k ,k-1u k-1,jendfor i=k+1:nl ik =(a ik -l i 1u 1k -l i 2u 2k -…-l i ,k-1u k-1,k )/u kk end end这一算法也叫Gauss 消去法的紧凑格式,可一次算得L ,U 的元素,不需逐步计算存储.考察上面的表格会发现还可安排其它计算次序,只要在这一次序下每个元素左边的L 的元素与上方的U 的元素已计算在先。
数值分析第三章线性方程组解法在数值分析中,线性方程组解法是一个重要的主题。
线性方程组是由一组线性方程组成的方程组,其中未知数的次数只为一次。
线性方程组的解法包括直接解法和迭代解法两种方法。
一、直接解法1.1矩阵消元法矩阵消元法是求解线性方程组的一种常用方法。
这种方法将方程组转化为上三角矩阵,然后通过回代求解得到方程组的解。
1.2LU分解法LU分解法是将系数矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,然后通过解两个三角方程组求解线性方程组。
这种方法可以减少计算量,提高计算效率。
1.3 Cholesky分解法Cholesky分解法是对称正定矩阵进行分解的一种方法。
它将系数矩阵A分解为一个下三角矩阵L和它的转置的乘积,然后通过解两个三角方程组求解线性方程组。
Cholesky分解法适用于对称正定矩阵的求解,具有较高的精度和稳定性。
二、迭代解法2.1 Jacobi迭代法Jacobi迭代法是一种迭代求解线性方程组的方法。
它通过分解系数矩阵A为一个对角矩阵D和一个余项矩阵R,然后通过迭代更新未知数的值,直至达到一定精度要求为止。
Jacobi迭代法简单易懂,容易实现,但收敛速度较慢。
2.2 Gauss-Seidel迭代法Gauss-Seidel迭代法是一种改进的Jacobi迭代法。
它通过使用新计算出的未知数值代替旧的未知数值,达到加快收敛速度的目的。
Gauss-Seidel迭代法是一种逐步逼近法,每次更新的未知数值都会被用于下一次的计算,因此收敛速度较快。
2.3SOR迭代法SOR迭代法是一种相对于Jacobi和Gauss-Seidel迭代法更加快速的方法。
它引入了一个松弛因子,可以根据迭代的结果动态地调整未知数的值。
SOR迭代法在理论上可以收敛到线性方程组的解,而且收敛速度相对较快。
三、总结线性方程组解法是数值分析中的一个重要内容。
直接解法包括矩阵消元法、LU分解法和Cholesky分解法,可以得到线性方程组的精确解。
第三章 解线性方程组的直接法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 。
数值分析小论文线性方程组的直接解法线性方程组的直接解法是指通过一系列的代数运算直接求解线性方程组的解。
线性方程组是数值分析中非常重要的问题,广泛应用于工程、科学、计算机图形学等领域。
在线性方程组的直接解法中,最常用的方法是高斯消元法,它是一种基于矩阵变换的方法。
高斯消元法将线性方程组表示为增广矩阵,并通过一系列的行变换将增广矩阵转化为行阶梯形矩阵,从而得到方程组的解。
高斯消元法的主要步骤包括消元、回代和得到方程组的解。
消元是高斯消元法的第一步,通过一系列的行变换将增广矩阵的元素转化为上三角形式。
在消元过程中,我们首先找到主元素,即矩阵的对角线元素,然后将其它行的元素通过消元操作转化为0,从而使得矩阵逐步变成上三角形矩阵。
回代是高斯消元法的第二步,通过一系列的回代操作求解线性方程组。
回代操作是从上三角形矩阵的最后一行开始,通过依次求解每个未知数的值,最终得到方程组的解。
高斯消元法的优点是算法简单易于实现,可以在有限的步骤内求解线性方程组,适用于一般的线性方程组问题。
但是高斯消元法也存在一些问题,例如当矩阵的主元素为0时,无法进行消元操作,此时需要通过行交换操作来避免这种情况。
另外,高斯消元法对病态矩阵的求解效果较差,容易引起舍入误差累积,导致解的精度下降。
在实际应用中,为了提高求解线性方程组的效率和精度,人们常常使用一些改进的直接解法,例如列主元高斯消元法和LU分解法。
列主元高斯消元法通过选择最大主元来避免主元为0的情况,进一步提高了求解线性方程组的精度。
LU分解法将矩阵表示为两个矩阵的乘积,从而将线性方程组的求解问题转化为两个三角形矩阵的求解问题,提高了求解效率。
综上所述,线性方程组的直接解法是一种基于矩阵变换的方法,通过一系列的代数运算求解线性方程组的解。
高斯消元法是最常用的直接解法之一,它简单易于实现,适用于一般的线性方程组问题。
在实际应用中,可以通过改进的直接解法来进一步提高求解效率和精度。
线性方程组的直接解法程序设计一、高斯消元法高斯消元法是解线性方程组最常用的方法之一、它通过消元和回代的方式,将线性方程组转化为上三角形式,进而求解未知数的值。
程序设计步骤如下:1.读入线性方程组的系数矩阵A和常数向量b;2.进行初等行变换,将系数矩阵A转化为上三角矩阵U,并同时对常数向量b进行相应的变换;3.判断是否有唯一解,如果主对角线上存在零元素,则方程组无解;如果主对角线上所有元素都非零,则方程组有唯一解;4.进行回代计算,求解未知数的值。
高斯消元法的优点是简单直观,容易理解和实现。
但是在一些情况下,会出现主对角线上有零元素的情况,此时需要进行行交换,增加了额外的计算量。
二、LU分解法LU分解法是另一种常用的线性方程组直接解法。
它将系数矩阵A分解为下三角矩阵L和上三角矩阵U的乘积,即A=LU。
程序设计步骤如下:1.读入线性方程组的系数矩阵A和常数向量b;2.进行LU分解,找到下三角矩阵L和上三角矩阵U;3.解第一个方程Ly=b,先求解向前替代方程,计算出y的值;4.解第二个方程Ux=y,再求解向后替代方程,计算出x的值。
LU分解法的优点是可以在多次需要解线性方程组的情况下重复使用LU分解的结果,提高计算效率。
但是LU分解法需要找到L和U的值,增加了额外的计算量。
三、数学实验在进行数学实验时,需要注意以下几点:1.线性方程组的系数矩阵应该是满秩的,以保证方程组有唯一解;2.对于大规模的线性方程组,可以使用稀疏矩阵存储和计算,减少内存和计算时间的消耗;3.在求解过程中,需要判断方程组是否有解,并且考虑特殊情况的处理;4.通过数学实验可以验证直接解法的正确性和有效性,分析计算结果的误差和稳定性。
综上所述,线性方程组的直接解法程序设计在计算方法和数学实验中都是重要的研究内容。
高斯消元法和LU分解法是常用的直接解法,通过编写程序并进行数学实验,可以深入理解和应用这些方法。
这些方法的有效性和稳定性对于解决实际问题具有重要意义。
第二章线性代数方程组的直接解法教学目标:1.了解线性代数方程组的结构、基本理论以及相关解法的发展历程;2.掌握高斯消去法的原理和计算步骤,理解顺序消去法能够实现的条件,并在此基础上理解矩阵的三角分解(即LU分解),能应用高斯消去法熟练计算简单的线性代数方程组;3.在理解高斯消去法的缺点的基础上,掌握有换行步骤的高斯消去法,从而理解和掌握选主元素的高斯消去法,尤其是列主元素消去法的理论和计算步骤,并能灵活的应用于实际中。
教学重点:1. 高斯消去法的原理和计算步骤;2. 顺序消去法能够实现的条件;3. 矩阵的三角分解(即LU分解);4. 列主元素消去法的理论和计算步骤。
教学难点:1. 高斯消去法的原理和计算步骤;2. 矩阵的三角分解(即LU分解);3. 列主元素消去法的理论和计算步骤。
教学方法:教具:引言在自然科学和工程技术中,许多问题的解决常常归结为线性方程组的求解,有的问题的数学模型中虽不直接表现为线性方程组,但它的数值解法中将问题“离散化”或“线性化”为线性方程组。
例如,电学中的网络问题、船体数学放样中建立三次样条函数问题、最小二乘法用于求解实验数据的曲线拟合问题、求解非线性方程组问题、用差分法或有限元法求解常微分方程边值问题及偏微分方程的定解问题,都要导致求解一个或若干个线性方程组的问题。
目前,计算机上解线性方程组的数值方法尽管很多,但归纳起来,大致可以分为两大类:一类是直接法(也称精确解法);另一类是迭代法。
例如线性代数中的Cramer法则就是一种直接法,但其对高阶方程组计算量太大,不是一种实用的算法。
实用的直接法中具有代表性的算法是高斯(Gauss)消元法,其它算法都是它的变形和应用。
在数值计算历史上,直接法和迭代法交替生辉。
一种解法的兴旺与计算机的硬件环境和问题规模是密切相关的。
一般说来,对同等规模的线性方程组,直接法对计算机的要求高于迭代法。
对于中、低阶(200n )以及高阶带形的线性方程组,由于直接法的准确性和可靠性高,一般都用直接法求解。
解线性方程组的直接解法一、实验目的及要求关于线性方程组的数值解法一般分为两大类:直接法与迭代法。
直接法是在没有舍入误差的情况下,通过有限步运算来求方程组解的方法。
通过本次试验的学习,应该掌握各种直接法,如:高斯列主元消去法,LU分解法和平方根法等算法的基本思想和原理,了解它们各自的优缺点及适用范围。
二、相关理论知识求解线性方程组的直接方法有以下几种:1、利用左除运算符直接求解线性方程组为bx\=即可。
AAx=,则输入b2、列主元的高斯消元法程序流程图:输入系数矩阵A,向量b,输出线性方程组的解x。
根据矩阵的秩判断是否有解,若无解停止;否则,顺序进行;对于1p:1-=n选择第p列中最大元,并且交换行;消元计算;回代求解。
(此部分可以参看课本第150页相关算法)3、利用矩阵的分解求解线性方程组(1)LU分解调用matlab中的函数lu即可,调用格式如下:[L,U]=lu(A)注意:L往往不是一个下三角,但是可以经过行的变换化为单位下三角。
(2)平方根法调用matlab 中的函数chol 即可,调用格式如下:R=chol (A )输出的是一个上三角矩阵R ,使得R R A T =。
三、研究、解答以下问题问题1、先将矩阵A 进行楚列斯基分解,然后解方程组b Ax =(即利用平方根法求解线性方程组,直接调用函数):⎪⎪⎪⎪⎪⎭⎫ ⎝⎛--------=19631699723723312312A ,⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-=71636b 解答:程序:A=[12 -3 2 1;-3 23 -7 -3;2 -7 99 -6;1 -3 -6 19];R=chol(A)b=[6 3 -16 7]';y=inv(R')*b %y=R'\bx=inv(R)*y %x=R\y结果:R =3.4641 -0.8660 0.5774 0.28870 4.7170 -1.3780 -0.58300 0 9.8371 -0.70850 0 0 4.2514y =1.73210.9540-1.59451.3940x =0.54630.2023-0.13850.3279问题 2、先将矩阵A 进行LU 分解,然后解方程组b Ax =(直接调用函数):⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----=8162517623158765211331056897031354376231A ,⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-=715513252b解答:程序:A=[1/3 -2 76 3/4 5;3 1/sqrt(3) 0 -7 89;56 0 -1 3 13;21 65 -7 8 15;23 76 51 62 81];b=[2/sqrt(5);-2;3;51;5/sqrt(71)];[L,U]=lu(A)y=inv(L)*bx=inv(U)*y结果:L = 0.0060 -0.0263 1.0000 0 00.0536 0.0076 -0.0044 0.1747 1.00001.0000 0 0 0 00.3750 0.8553 -0.6540 1.0000 00.4107 1.0000 0 0 0U =56.0000 0 -1.0000 3.0000 13.00000 76.0000 51.4107 60.7679 75.66070 0 77.3589 2.3313 6.91370 0 0 -43.5728 -50.06310 0 0 0 96.5050y =3.0000-0.63880.859850.9836-11.0590x =0.13670.90040.0526-1.0384-0.1146问题3、利用列主元的高斯消去法,求解下列方程组:⎪⎪⎩⎪⎪⎨⎧=+--=--+=-+-=+-+01002010100511.030520001.0204321432143214321x x x x x x x x x x x x x x x x解答:程序:function [RA,RB,n,X]=liezhu(A,b)B=[A b];n=length(b);RA=rank(A);RB=rank(B);zhica=RB-RA;if zhica>0disp('Çë×¢Ò⣺RA~=RB£¬ËùÒÔ´Ë·½³Ì×éÎ޽⡣')returnendif RA==RBif RA==ndisp('Çë×¢Ò⣺ÒòΪRA=RB=n,ËùÒÔ´Ë·½³Ì×éÓÐΨһ½â¡£')X=zeros(n,1);C=zeros(1,n+1);for p=1:n-1[Y ,j]=max(abs(B(p:n,p)));C=B(p,:);for k=p+1:nm=B(k,p)/B(p,p);B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1)endendb=B(1:n,n+1);A=B(1:n,1:n);X(n)=b(n)/A(n,n);for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);endelsedisp('Çë×¢Ò⣺ÒòΪRA=RB¡´n£¬ËùÒÔ´Ë·½³ÌÓÐÎÞÇî¶à½â¡£') endend键入A=[1 20 -1 0.0012 -5 30 -0.15 1 -100 -102 -100 -1 1];b=[0;1;0;0];[RA,RB,n,X]=liezhu(A,b)结果:请注意:因为RA=RB=n,所以此方程组有唯一解。
B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00005.0000 1.0000 -100.0000 -10.0000 02.0000 -100.0000 -1.0000 1.0000 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 -99.0000 -95.0000 -10.0050 02.0000 -100.0000 -1.0000 1.0000 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 -99.0000 -95.0000 -10.0050 00 -140.0000 1.0000 0.9980 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 -140.0000 1.0000 0.9980 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 0 -98.5556 1.3153 -3.1111B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 0 0 7.1432 -1.8002 RA =4RB = 4n =4X =0.0604-0.00160.0282-0.2520请注意:因为RA=RB=n,所以此方程组有唯一解。
B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00005.0000 1.0000 -100.0000 -10.0000 02.0000 -100.0000 -1.0000 1.0000 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 -99.0000 -95.0000 -10.0050 02.0000 -100.0000 -1.0000 1.0000 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 -99.0000 -95.0000 -10.0050 00 -140.0000 1.0000 0.9980 0B = 1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 -140.0000 1.0000 0.9980 0B =1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 0 -98.5556 1.3153 -3.1111B =1.0000 20.0000 -1.0000 0.0010 00 -45.0000 32.0000 -0.1020 1.00000 0.0000 -165.4000 -9.7806 -2.20000 0 0 7.1432 -1.8002 RA =4RB =4n =4X = 0.0604-0.00160.0282-0.2520四、实验结果分析在用LU法,调用matlab中的函数lu中,L往往不是一个下三角,但可以直接计算不用它的结果来计算,不用进行行变换。