第6章__MATLAB解方程与最优化问题求解

时间:2026-04-25

MATLAB程序设计教程(第二版)刘卫国 主编

中国水利水电出版社

第6章 MATLAB解方程与最优化问题求解

MATLAB线性方程组求解 MATLAB非线性方程数值求解

MATLAB常微分方程初值问题的数值解法MATLAB最优化问题求解

背景– 经济与工程中的许多问题最后都可以转化为求解线 性方程组 – 许多数值计算问题(如样条函数、常微分方程数值 解、差分方程等)的研究也往往归结为此类问题

线性方程组的数值法– 直接法——经过有限次算法运算求出精确解,最常 用的是:高斯消元法、矩阵LU分解 – 迭代法——从初值出发,用递推的方法,给出近似 解序列。常用的方法:雅可比迭代法、高斯-赛德 尔迭代法。

列昂杰夫的“投入-产出”模型:列昂惕夫 用线性代数研究经济数学模型,1949年曾 用计算机计算出了由美国统计局的25万条 经济数据所组成的42个未知数42个方程的 方程组。 投入产出分析的方法基础包括:线性方程 组和矩阵运算(静态模型)、微分方程和 差分方程(动态模型)、电子计算机。

设有n个经济部门,xi为部门i的总产出,cij为部 门j单位产品对部门i产品的消耗,di为外部对部 门i的需求,fj为部门j新创造的价值。 n 分配平衡方程组 消耗平衡方程组

xi cij x j dij 1n i 1

x j x j cij f j i =1,2,…,n第三章

投入产出分析令 C =(cij),X = (x1, …, xn)',D = (d1, …, dn)’,F= (f1, …, fn)’, 则 X=CX+D 令 A = E-C,E为单位矩阵,则 AX = D C称为直接消耗矩阵 A称为列昂杰夫(Leontief)矩阵。

第三章

7

2013-9-11

x1 B=C

x2

xn

B表示各部门间 的投入产出关 系,称为投入 产出矩阵。

Y = [1,1,…,1] B Y表示各部门的总投入,称为投入向量。 新创造价值向量 F=X –Y '第三章

所谓一般线性方程组是指具有形式:

矩阵形式: AX b a11 a 其中21 A am 1 a12 a22 am 2

a11 x1 a12 x2 a1n xn b1 a x a x a x b 21 1 22 2 2n n 2 am1 x1 am 2 x2 amn xn bm a1n a2 n amn

x1 x x 2 xn

b1 b b 2 常数项 bm

由m个方程n个未知量的线性方程构成的方程组

6.1 线性方程组求解 6.1.1 直接解法 1.利用左除运算符的直接解法 对于线性方程组可以利用左除运算符“\”求解: x=A\b; (1) 若A为n×n方阵,自动利用高斯消元法求解,若b 是n×1的列向量,则解x为n×1的列向量,若b是n×m的矩 阵,可得到m个以A为系数矩阵的线性

方程组的数值解x (n×m的矩阵),即x(:,j)=A\b(:,j),j=1,2,…,m. (2) 当A不是方阵时, Ax=b称为欠定方程组或超定方程 组,MATLAB会在最小二乘意义下解

例6-1 用直接解法求解下列线性方程组。

2 x1 x2 5 x3 x4 13, x 5x 7 x4 9, 1 2 2 x2 x3 x4 6, x1 6 x2 x3 4 x4 0. 命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]';%右边常数项应该是列向量

x=A\b

2.利用矩阵的分解求解线性方程组

矩阵分解是指根据一定的原理用某种算法将 一个矩阵分解成若干个矩阵的乘积。常见 的矩阵分解有LU分解、QR分解、Cholesky 分解,以及Schur分解、Hessenberg分解、 奇异分解等。优点:运算速度快,节省存储空间

(1) LU分解

矩阵的LU分解就是将一个矩阵表示为一个交换下 三角矩阵和一个上三角矩阵的乘积形式。线性 代数中已经证明,只要方阵A是非奇异的,LU 分解总是可以进行的。

MATLAB提供的lu函数用于对矩阵进行LU分解,其调用格式为:

(1)[L,U]=lu(X):产生一个上三角阵U和一个变换形式的下三 角阵L(行交换),使之满足X=LU。注意,这里的矩阵X必须 是方阵。 此时矩阵L往往不是下三角阵,但通过行交换后使之成为一 个下三角阵(2)[L,U,P]=lu(X):产生一个上三角阵U和一个下三角阵L以及 一个置换矩阵P,使之满足PX=LU。当然矩阵X同样必须是 方阵。 实现LU分解后,线性方程组Ax=b的解x=U\(L\b)或 x=U\(L\Pb),这样可以大大提高运算速度。

矩阵LU分解,设

1 1 1 5 4 3 A 2 1 1

命令如下: A=[1,-1,1;5,-4,3;2,1,1]; [L,U]=lu(A) %第(1)种格式 LU=L*U %检验分解是否正确 [L,U ,P]=lu(A) LU=L*U %检验分解是否正确 LU=inv(P)*L*U %检验分解是否正确

例6-2 用LU分解求解例6-1中的线性方程组。 命令如下: A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]';

[L,U]=lu(A);x=U\(L\b)%或采用LU分解的第2种格式,命令如下:

[L,U ,P]=lu(A); x=U\(L\P*b)

(2) QR分解对矩阵X进行QR分解,就是把X分解为一个正交矩阵 Q和一个上三角矩阵R的乘积形式。QR分解只能对 方阵进行。MATLAB的函数qr可用于对矩阵进行 QR分解,其调用格式为:

(1) [Q,R]=qr(X):产生一个一个正交矩阵Q和一个上 三角矩阵R,使之满足X=QR。(2) [Q,R,E]=qr(X):产生一个一个正交矩阵Q、一个上 三角矩阵R以及一个置换矩阵E,使之满足XE=QR。 实现QR分解后,线性方程组Ax=b的解x=R\(Q\b)或 x=E(R\(Q\b))。

第6章__MATLAB解方程与最优化问题求解.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219