资源描述:
《数值分析(08)解线性代数方程组的直接解法.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第二节高斯消元法及其计算机实现第三节用矩阵分解法求解线性方程组第四节误差分析和解的精度改进第五节大型稀疏方程组的迭代法第三章线性代数方程组的数值解法第一节求解线性代数方程组的基本定理第六节极小化方法线性代数方程组的一般形式第一节求解线性代数方程组的基本定理MATLAB实现:x=Ab数值求解方法有以下三条途径(三种框架)迭代法:构造迭代格式,产生迭代序列,通过无限次迭代过程求解。有限次截断得近似解。极小化方法:构造二次模函数,用迭代过程求二次模函数的极小化问题,即变分法(经n次运算,理论上得精确解)要求A对称正定(S.P.D)直接法:利用Gauss消元或矩阵分解,通过有限次运算可求出精确
2、解。第二节高斯消元法及其计算机实现AbUg三角形方程组包括上三角形方程组和下三角形方程组,是最简单的线性方程组之一。上三角方程组的一般形式是:一、三角形方程组的解法为求解上三角方程组,从最后一个方程入手,先解出xn=bn/ann,然后按方程由后向前的顺序,从方程中依次解出xn-1,xn-2,…,x1。这样就完成了上三角方程组的求解过程。这个过程被称为回代过程其计算步骤如下:functionX=backsub(A,b)%Input—Aisann×nupper-triangularnonsingullarmatrix%---bisann×1matrix%Output—Xisthesoluti
3、ontothesystemAX=b函数名返回变量参数表n=length(b);X=zeros(n,1);X(n)=b(n)/A(n,n);fori=n-1:-1:1X(i)=(b(i)-A(i,i+1:n)*X(i+1:n))/A(i,i);endA的第i行、第i+1到n列元素构成的行向量高斯消元法是一个古老的直接法,由它改进得到的选主元法,是目前计算机上常用于求低阶稠密矩阵方程组的有效方法,其特点就是通过消元将一般线性方程组的求解问题转化为三角方程组的求解问题。高斯消元法的求解过程,可大致分为两个阶段:首先,把原方程组化为上三角形方程组,称之为“消元”过程;然后,用逆次序逐一求出上三角
4、方程组(原方程组的等价方程组)的解,称之为“回代”过程.高斯“消元”过程可通过矩阵运算来实现。具体过程如下:二、高斯消元法解:将方程组Ax=b的系数矩阵与右端项合并为进行到第k步消元时用回代过程求解上三角方程组,即可得解向量(x1*,x2*,…,xn*)T.求解的全过程包括两个步骤:消元和回代2.回代求解1.顺序消元消元过程全部完成后,原来的二维数组中存放的元素实际上是一个新的矩阵,记为functionX=gauss(A,b)%Input—Aisann×nnonsingullarmatrix%---bisann×1matrix%Output—Xisthesolutiontothesyst
5、emAX=bMATLABForGaussianElimination[nn]=size(A);%确定A的维数X=zeros(n,1);fork=1:n-1fori=k+1:n%消元过程m=A(i,k)/A(k,k);%A(k,k)≠0A(i,k+1:n)=A(i,k+1:n)-m*A(k,k+1:n);b(i)=b(i)-m*b(k);endendX=backsub(A,b);%回代求解functionX=gauss(A,b)%Input—Aisann×nnonsingullarmatrix%---bisann×1matrix%Output—Xisthesolutiontothesyst
6、emAX=bMATLABForGaussianElimination[nn]=size(A);%确定A的维数X=zeros(n,1);fork=1:n-1fori=k+1:n%消元过程A(i,k)=A(i,k)/A(k,k);%A(k,k)≠0A(i,k+1:n)=A(i,k+1:n)-A(i,k)*A(k,k+1:n);b(i)=b(i)-A(i,k)*b(k);endendX=backsub(A,b);%回代求解高斯消元法的计算量分析高斯消元法的乘除总运算分析为消元次数k消元乘法次数消元除法次数回代乘除法次数1n(n-1)n-12(n-1)(n-2)n-2.k(n-k+1)(n-k)
7、n-k.n-12*11n(n+1)/2高斯消元法的计算量为乘除回代当n充分大时为N〜n3/3消元法是解线性方程组的基本方法,具有计算简单的优点,但有时由于主元过小,使得计算结果严重失真,实际中常采用选主元高斯消元法。例4:讨论下面方程组的解法0.0001x1+x2=1x1+x2=2假设求解是在四位浮点十进制数的计算机上进行0.100010-3x1+0.1000101x2=0.10001010.1000101x1+0.1000