第6章__MATLAB解方程与最优化问题求解
时间:2026-04-25
时间: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))。
下一篇:普通心理学_试卷及答案