资源描述:
《解线性方程组的直接解法ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、科学计算与MATLAB主讲:段柏华中南大学材料科学与工程学院2013.10第九讲 解线性方程组的直接解法内容提要引言Gauss消元法列主元素消元法误差分析MATLAB的线性方程组求解函数1小结1、引言例:小行星轨道问题:天文学家要确定一小行星的轨道,在轨道平面建立以太阳为原点的直角坐标系.在坐标轴上取天文测量单位(一天文单位为地球到太阳的平均距离:9300万哩),对小行星作5次观察,测得轨道上5个点的坐标数据如下:x5.76406.28606.75907.16807.4800y0.64801.20201.82302.52603.3600椭圆的一般方程:a1x
2、2+a2xy+a3y2+a4x+a5y+1=0将数据逐个代入,可得五个方程的方程组,求解该线性方程组即可得行星轨道方程。对一般线性方程组:Ax=b,其中当且仅当矩阵A行列式不为0时,即A非奇异时,方程组存在唯一解,可根据克莱姆法则求解,其算法设计如下:(1)输入系数矩阵A和右端向量b;(2)计算系数矩阵A的行列式值D,如果D=0,则输出错误信息,结束,否则进行第(3)步;(3)对k=1,2,···,n,用b替换A的第k列数据,并计算替换后矩阵的行列式值Dk;(4)计算并输出x1=D1/D,x2=D2/D,····,xn=Dn/D,结束。克莱姆法则只适用于低阶
3、方程组,高阶方程组工作量太大,故一般用数值方法求解。数值方法分两类:直接解法:在计算过程中,如果所有运算都是精确的,在理论上,经过有限次运算就可以得到精确解,适用于变量较少的方程组。迭代解法:近似解法,运算次数因要求的计算精度而变化。迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。迭代方法的使用:确定迭代变量。建立迭代关系式。给定初值对迭代过程进行控
4、制。对迭代结果判定2、Gauss消元法2.1基本思想:逐步消去未知元,将方程组化为与其等价的上三角方程组求解。2.2分两步:第一步:消元过程,将方程组消元化为等价的上三角形方程组;第二步:回代过程,解上三角形方程组,得原方程组的解。2.3Gauss消元的目的a11x1+a12x2+····+a1nxn=b1a21x1+a22x2+····+a2nxn=b2·········································an1x1+an2x2+····+annxn=bn原始方程组约化方程组2.4.1消元过程(化一般方程组为上三角方程组)以四阶
5、为例:其系数增广矩阵为:第一轮消元:计算3个数:[m21m31m41]T=[a21a31a41]T/a11用-m21乘矩阵第一行后加到矩阵第二行;用-m31乘矩阵第一行后加到矩阵第三行;用-m41乘矩阵第一行后加到矩阵第四行;其系数增广矩阵变为:第二轮消元:计算2个数:[m32m42]T=[a32(1)a42(1)]T/a22(1)用-m32乘矩阵第二行后加到矩阵第三行;用-m42乘矩阵第二行后加到矩阵第四行;其系数增广矩阵变为:第三轮消元:计算:m43=a43(2)/a33(2)用-m43乘矩阵第三行后加到矩阵第四行;其系数增广矩阵变为:其对应的上三角方程
6、组为若对于一般的线性方程组Ax=b,其消元过程的计算公式为:(k=1,2,…,n-1)2.4.2回代过程(解上三角方程组)上三角方程组的一般形式为:其中a11…ann≠0回代过程的计算公式:2.5工作量计算:消去过程:“÷”:第k步,n-k次,共(n-1)+(n-2)+……+1=n(n-1)/2“×”:第k步,(n-k)(n-k+1)次,共(n-1)n+(n-2)(n-1)+……+1×2=(n3-n)/3总工作量:s1=n(n-1)/2+(n3-n)/3回代过程:“÷”:n“×”:1+2+……+(n-1)=n(n-1)/2总工作量:s2=n+n(n-1)/2
7、=n(n+1)/2故Gauss消元法的总工作量为:s=s1+s2=n2+(n3-n)/3克莱姆法则求解的工作量为:“×”:(n+1个n阶行列式的值)(n+1)(n-1)n!“÷”:n故总工作量为:[(n+1)(n-1)]n!+n当n=6时,Gauss消元法工作量为106;而克莱姆法则求解工作量为25206。function[U,x]=Gauss(A,b)%顺序Gauss消去法求解线性方程组%输入参数:%---A:线性方程组的系数矩阵%---b:线性方程组的右端项%输出参数:%---U:消元后的上三角方程组的增广矩阵%---x:线性方程组的解n=length(
8、b);%消元过程fork=1:n-1m=A(k+1: