matlab基础 四、求解线性方程组

一、利用左除运算求解线性方程组
对于线性方程组Ax=b,可以利用左除运算符“\”求解:

x=A\b

  • 当系数矩阵A为NxN的方阵时,matlab会自行用高斯消元法求解线性方程组。若右端b为Nx1的列向量,则x=A\b可获得方程组的数值解x(Nx1的列向量);若右端为NxM的矩阵,则x=A\b可同时获得系数矩阵A相同的M个线性方程组的数值解x(为NxM的矩阵),即x(:,j)=A\b(:,j),j=1,2,…,M。注意,如果矩阵A是奇异的或接近奇异的,则Matlab会给出警告信息。

    在这里插入图片描述

  1. 解法1
A = [1,-1,1;5,-4,3;2,1,1];
b1 = [2;-3;1];
b2 = [3;4;-5];
x = A\b1
y = A\b2
  1. 解法2
A = [1,-1,1;5,-4,3;2,1,1];
b = [2,3;-3,4;1,-5];
xy = A\b

xy =

-3.8000 -3.6000
1.4000 -2.2000
7.2000 4.4000

二、利用矩阵的逆矩阵求解线性方程组
在线性方程组两边Ax=b各左乘A-¹有:A-¹Ax=A-¹b,由A-¹A=I的x=A-¹b
在这里插入图片描述

A = [1,2,3;1,4,9;1,8,27];
b = [5;-2;6];
x = inv(A)*b

三、利用矩阵分解求解线性方程组
矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。
1、LU分解
Matlab提供lu函数用于矩阵的LU分解,其格式为:[L,U]=lu(X),
产生一个上三角矩阵U和一个下三角矩阵L(行交换),使X=LU。注意矩阵X必须为方阵。
[L,U,P]=lu(X),产生一个上三角矩阵U和一个下三角矩阵L以及一个置换矩阵P,使PX=LU。注意矩阵X必须为方阵。
利用LU分解求解Ax=b则LUx=b或LUx=Pb即x=U(L\b)或x=U(L\Pb),这样可以大大提高运行速度。
2、QR分解
[Q,R]=qr(X),产生一个正交矩阵Q和一个上三角矩阵R,使X=QR,X必须为方阵
[Q,R,E]=qr(X),产生一个正交矩阵Q和一个上三角矩阵R以及一个置换矩阵E,使XE=QR,
X必须为方阵
QR分解后,线性方程组Ax=b的解为x=R(Q\b)或x=E(R(Q\b))。
3、Cholesky分解
如果矩阵X是对称正定的,则Cholesky分解将矩阵X分解成一个下三角矩阵和一个上三角矩阵的乘积。设上三角矩阵为R,则下三角矩阵为其转置,即X=R’R。Matlab函数chol(X)用于对矩阵进行Cholesky分解,其格式为:R=chol(X),产生一个上三角矩阵R使得R’R=X。若X为非对称正定,则输出一个错误信息。
[R,p]=chol(X),这个命令格式讲不输出错误信息。当X为对称正定的,则P=0,R与R=chol(X)得到的结果相同;否则P为一个正整数。
Cholesky分解后,线性方程组Ax=b变为R’Rx=b,即x=R(R’\b)。
在这里插入图片描述

A = [3,1,-4,1;1,-3,0,2;0,2,1,-1;1,6,-1,-3];
b = [12,-6,4,0]';
[L,U] = lu(A);
x = U\(L\b)

x =

-16.4444
20.6667
-1.1111
36.2222

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值