欢迎来到天天文库
浏览记录
ID:36334600
大小:208.16 KB
页数:54页
时间:2019-05-09
《基础篇-第7章-科学计算》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章MATLAB科学计算7.1方程求解本节将分别讨论线性方程组、非线性方程组和常微分方程三种常见方程的解法。7.1.1线性方程组线性方程组是线性代数中的主要内容之一,也是理论发展最为完整的部分。在MATLAB中也包含多种处理线性方程组的命令,下面详细进行介绍。1.问题描述在实际应用中,经常需要求解如下所示的两类线性方程组,其中第一种更常见。AX=BXA=B按照数学的严格定义,并没有矩阵除法的概念,而MATLAB为了书写简便提供了用除号求解线性方程组解的方式,其具体用法如下:X=AB:左除,计算方程组AX=B的解。X=B/A:右除,
2、计算方程组XA=B的解。下面针对AX=B的形式进行说明。系数矩阵A是mn的矩阵,根据其维数可以分为如下3种情况:m=n为恰定方程组,即方程数等于未知量数。m>n为超定方程组,即方程数大于未知量数。m3、(A)=rank([A,B]),则方程组无解。不难看出,线性方程组解的类型是由对应齐次方程组的解,对应系数矩阵和增广矩阵间的关系决定的。2.解的形式线性方程组AX=B解的形式可以如下描述:首先可以使用null函数求解对应齐次方程组AX=0的基础解系,也可以称为通解,则AX=B的解都可以通过通解的线性组合表示。其次求解非齐次线性方程组AX=B的特解。最后非齐次线性方程组AX=B解的形式为通解的线性组合加上特解。3.除法及求逆的解法(1)除法解法若线性方程组AX=B的系数矩阵可逆,则AB给出方程组的唯一解。【例7-2】使用除法求解系数矩4、阵不可逆的恰定线性方程组。在命令窗口中输入如下语句:A=[137;-144;11018];det_A=det(A)B=[6;4;15]X=ABdet_A=0B=6415Warning:Matrixissingulartoworkingprecision.X=NaNInf-Inf从以上的结果可以看出,MATLAB会显示提示信息,表示该矩阵是奇异矩阵,因此无法得到精确的数值解。【例7-3】使用除法求解欠定线性方程组。在命令窗口中输入如下语句:C=magic(4);A=C(1:3,:)B=[1;0;0];X=AB命令窗口中的输出结果如下5、所示:A=16231351110897612X=0.18630.02940-0.1569(2)求解逆法在例7-1中,已经介绍了通过求逆的方法求解方程组的解,这里着重介绍伪逆的用法。对于系数矩阵而言,它可能是方阵但不可逆,也可能不是方阵,上述情况都导致它的逆不存在或无定义,这就需要引入伪逆的概念。伪逆包含很多种形式(详见矩阵的有关书籍),下面介绍最常用的基于最小二乘意义下的最优伪逆,在MATLAB中通过pinv函数可以实现,即可以使用矩阵A的伪逆矩阵pinv(A)来得到方程的一个解,其对应的数值解为pinv(A)*B。【例7-5】使用伪6、逆矩阵的方法求解奇异矩阵的线性方程的解。在命令窗口中输入如下语句:A=[137;-144;11018];B=[5;2;12];X=pinv(A)*BC=A*X命令窗口中的输出结果如下所示:X=0.3850-0.11030.7066C=5.00002.000012.0000从上面的结果可以看出,通过使用伪逆矩阵的方法,可以求解得到数值解,同时该数值解可以精确地满足结果。上面都是介绍如何计算特解,下面介绍如何计算线性方程组的所有解。【例7-6】使用求逆法计算线性方程组的所有解。在命令窗口中输入如下语句:A=[1234;5678;910117、12];B=[1;1;2];X1=null(A)X2=pinv(A)*B命令窗口中的输出结果如下所示:X1=0.51350.1906-0.82670.12870.1129-0.82900.20030.5098X2=-0.1250-0.02080.08330.1875此时线性方程组的所有解为X=a*X1(:,1)+b*X1(:,2)+X2,其中a、b为任意实数。4.矩阵分解的解法(1)LU分解LU分解又可称为Gauss(高斯)消去法。若系数矩阵为方阵,它可以表示为下三角矩阵和上三角矩阵的乘积,即A=LU,其中L为下三角阵,U为上三角阵。8、在MATLAB中通过lu函数可实现LU分解。针对LU分解,线性方程组AX=B可以表示为LUX=B,由于L和U的特殊性,通过X=U/(L/B)求解可以大大提高运算速度。LU函数的具体语法形式如下:[L,U]=lu(X):X
3、(A)=rank([A,B]),则方程组无解。不难看出,线性方程组解的类型是由对应齐次方程组的解,对应系数矩阵和增广矩阵间的关系决定的。2.解的形式线性方程组AX=B解的形式可以如下描述:首先可以使用null函数求解对应齐次方程组AX=0的基础解系,也可以称为通解,则AX=B的解都可以通过通解的线性组合表示。其次求解非齐次线性方程组AX=B的特解。最后非齐次线性方程组AX=B解的形式为通解的线性组合加上特解。3.除法及求逆的解法(1)除法解法若线性方程组AX=B的系数矩阵可逆,则AB给出方程组的唯一解。【例7-2】使用除法求解系数矩
4、阵不可逆的恰定线性方程组。在命令窗口中输入如下语句:A=[137;-144;11018];det_A=det(A)B=[6;4;15]X=ABdet_A=0B=6415Warning:Matrixissingulartoworkingprecision.X=NaNInf-Inf从以上的结果可以看出,MATLAB会显示提示信息,表示该矩阵是奇异矩阵,因此无法得到精确的数值解。【例7-3】使用除法求解欠定线性方程组。在命令窗口中输入如下语句:C=magic(4);A=C(1:3,:)B=[1;0;0];X=AB命令窗口中的输出结果如下
5、所示:A=16231351110897612X=0.18630.02940-0.1569(2)求解逆法在例7-1中,已经介绍了通过求逆的方法求解方程组的解,这里着重介绍伪逆的用法。对于系数矩阵而言,它可能是方阵但不可逆,也可能不是方阵,上述情况都导致它的逆不存在或无定义,这就需要引入伪逆的概念。伪逆包含很多种形式(详见矩阵的有关书籍),下面介绍最常用的基于最小二乘意义下的最优伪逆,在MATLAB中通过pinv函数可以实现,即可以使用矩阵A的伪逆矩阵pinv(A)来得到方程的一个解,其对应的数值解为pinv(A)*B。【例7-5】使用伪
6、逆矩阵的方法求解奇异矩阵的线性方程的解。在命令窗口中输入如下语句:A=[137;-144;11018];B=[5;2;12];X=pinv(A)*BC=A*X命令窗口中的输出结果如下所示:X=0.3850-0.11030.7066C=5.00002.000012.0000从上面的结果可以看出,通过使用伪逆矩阵的方法,可以求解得到数值解,同时该数值解可以精确地满足结果。上面都是介绍如何计算特解,下面介绍如何计算线性方程组的所有解。【例7-6】使用求逆法计算线性方程组的所有解。在命令窗口中输入如下语句:A=[1234;5678;91011
7、12];B=[1;1;2];X1=null(A)X2=pinv(A)*B命令窗口中的输出结果如下所示:X1=0.51350.1906-0.82670.12870.1129-0.82900.20030.5098X2=-0.1250-0.02080.08330.1875此时线性方程组的所有解为X=a*X1(:,1)+b*X1(:,2)+X2,其中a、b为任意实数。4.矩阵分解的解法(1)LU分解LU分解又可称为Gauss(高斯)消去法。若系数矩阵为方阵,它可以表示为下三角矩阵和上三角矩阵的乘积,即A=LU,其中L为下三角阵,U为上三角阵。
8、在MATLAB中通过lu函数可实现LU分解。针对LU分解,线性方程组AX=B可以表示为LUX=B,由于L和U的特殊性,通过X=U/(L/B)求解可以大大提高运算速度。LU函数的具体语法形式如下:[L,U]=lu(X):X
此文档下载收益归作者所有