第7章Matlab与线性代数.docx
- 文档编号:3238047
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:18
- 大小:59.59KB
第7章Matlab与线性代数.docx
《第7章Matlab与线性代数.docx》由会员分享,可在线阅读,更多相关《第7章Matlab与线性代数.docx(18页珍藏版)》请在冰豆网上搜索。
第7章Matlab与线性代数
第7章Matlab在线性代数中的应用
7.1矩阵的基本函数运算
矩阵的函数运算是矩阵运算中最为实用的部分。
它主要包括矩阵的逆运算、矩阵的行列式、特征值运算、矩阵秩、迹的运算、求正交矩阵运算、向量组的最大无关组等。
7.1.1矩阵的逆运算
矩阵的逆运算是矩阵运算中很重要的一种运算。
它在线性代数及计算方法中都有很多的论述。
而在Matlab中,众多的复杂理论只变成了一个简单的命令——inv或A^(-1)。
例如:
a=[21-3-1;3107;-124-2;10-15];
inv(a)
ans=
-0.04710.5882-0.2706-0.9412
0.3882-0.35290.48240.7647
-0.22350.2941-0.0353-0.4706
-0.0353-0.05880.04710.2941
7.1.2.矩阵的行列式运算
矩阵的行列式的值可由det函数计算得出。
例如:
a1=det(a);
a2=det(inv(a));
a1*a2
ans=
1.0000
7.1.3.迹函数
矩阵所有对角线上元素的和称为矩阵的迹,在Matlab中可由trace函数计算得出。
例如:
trace(A)
ans=
15
7.1.4向量的点乘(内积)
维数相同的两个向量的点乘可由函数dot得出。
例如:
X=[-102];
Y=[-2-11];
Z=dot(X,Y)
Z=
4
还可用另一种算法:
sum(X.*Y)
ans=
4
7.1.5向量叉乘
在数学上,两个向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。
在Matlab中,用函数cross实现。
例如:
c=cross(X,Y)
c=
2-31
7.1.6混合积
混合积由以上两函数实现。
例如:
求X·(Y×c)
d=dot(X,cross(Y,c))
d=
14
7.2符号矩阵的运算
7.2.1四则运算
符号矩阵的四则运算同数值矩阵的四则运算完全相同。
7.2.2其它一些基本运算
符号矩阵的其它一些基本运算也与数值矩阵的运算格式相同。
这些运算包括矩阵的转置(′)、行列式(det)、逆(inv)、秩(rank)、幂(^)和指数(exp和expm等)运算。
7.2.3符号矩阵的简化
符号工具箱中还提供了符号矩阵因式分解、展开、合并、简化及通分等符号操作函数。
下面将一一进行介绍。
7.2.3.1因式分解
factor(s)符号表达式因式分解函数,s为符号矩阵或符号表达式,常用于多项式的因式分解。
例7-1:
将x9-1分解因式。
symsx
factor(x^9-1)
ans=
(x-1)*(x^2+x+1)*(x^6+x^3+1)
例7-2:
问
为何值时,齐次方程组
有非0解?
symsk
A=[1-k-24;23-k1;111-k];
det(A)
ans=
-6*k+5*k^2-k^3
factor(det(A))
ans=
-k*(k-2)*(-3+k)
从而得到:
当k=0、k=2、k=3时,原方程组有非0解。
7.2.3.2符号矩阵的展开
expand(s)符号表达式展开函数,s为符号矩阵或符号表达式,常用于多项式的因式分解中,也常用于三角函数,指数函数和对数函数的展开中。
例7-3:
将(x+1)3,sin(x+y)展开。
symsxy
p=expand((x+1)^3)
p=
x^3+3*x^2+3*x+1
q=expand(sin(x+y))
q=
sin(x)*cos(y)+cos(x)*sin(y)
7.2.3.3同类项合并
collect(s,v)将s中的变量v的同幂项系数合并。
collect(s)s为矩阵或表达式,此命令对由命令findsym函数返回的默认变量进行同类项合并。
7.2.3.4符号简化
simple(s)s为矩阵或表达式,寻找符号矩阵或符号表达式的最简型。
说明:
simple(s)将表达式的长度化到最短。
若还想让表达式更加精美,可使用函数pretty。
pretty(s)使表达式更加精美。
例7-4:
计算行列式
的值。
symsabcd
A=[1111;abcd;a^2b^2c^2d^2;a^4b^4c^4d^4];
d1=det(A)
d1=
b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*d^2*c^4+a*b^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*c^4+a^2*b^4*d-a^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2*c
d2=simple(d1)
d2=
-(d-c)*(b-c)*(b-d)*(-c+a)*(a-d)*(a-b)*(a+d+c+b)
pretty(d2)
-(d-c)(b-c)(b-d)(-c+a)(a-d)(a-b)(a+d+c+b)
7.3秩与线性相关性
7.3.1矩阵和向量组的秩以及向量组的线性相关性
矩阵的秩是矩阵A中最高阶非零子式的阶数,向量组的秩通常由该向量组构成的矩阵来计算。
rank(A)A为矩阵,rank为矩阵求秩函数。
例7-5:
求向量组a1=(1,-2,2,3),a2=(-2,4,-1,3),a3=(-1,2,0,3),a4=(0,6,2,3)的秩,并判断其线性相关性。
A=[1-223;-24-13;-1203;0623];
rank(A)
ans=
3
由于秩为3<向量的个数,因此向量组线性相关。
7.3.2向量组的最大无关组
矩阵可以通过初等行变换化成行最简形,从而找出列向量组的最大无关组,Matlab将矩阵化成行最简形的命令是:
rref。
格式:
rref(A)A为矩阵
例7-6:
求向量组a1=(1,-2,2,3),a2=(-2,4,-1,3),a3=(-1,2,0,3),a4=(0,6,2,3),a5=(2,-6,3,4)的一个最大无关组。
a1=[1,-2,2,3]';
a2=[-2,4,-1,3]';
a3=[-1,2,0,3]';
a4=[0,6,2,3]';
a5=[2,-6,3,4]';
A=[a1a2a3a4a5]
A=
1-2-102
-2426-6
2-1023
33334
formatrat%以有理格式输出
B=rref(A)%求A的行最简形
B=
101/3016/9
012/30-1/9
0001-1/3
00000
从B中可以得到:
向量组a1,a2,a4是其中一个最大无关组。
7.4线性方程组的求解
7.4.1求线性方程组的唯一解或特解
这类问题的求法分为两类:
一类主要用于解低阶稠密矩阵——直接法;另一类是解大型稀疏矩阵——迭代法。
7.4.1.1利用矩阵除法求线性方程组的特解(或一个解)
方程:
AX=b
解法:
X=A\b
说明:
如果A为平方矩阵,则除了算法不同,A\b与inv(A)*b大致相当。
如果A是一个n×n的矩阵,b是一个具有n个元素的列向量或具有多个此类列向量的矩阵,则X=A\b为用Gauss消元法得到的方程AX=b的解。
如果A奇异,则会给出警告信息。
如果A为m×n的矩阵(m≠n),且b为具有m个元素的列向量或具有多个此类列向量的矩阵,则X=A\b为等式系统AX=b的最小二乘意义上的解。
例7-7:
求方程组的解
A=[56000;15600;01560;00156;00015];
b=[10001]';
R_A=rank(A)
R_A=
5
X=A\b
X=
2.2662
-1.7218
1.0571
-0.5940
0.3188
这就是方程组的解。
例7-8:
求方程组的一个特解
A=[11-3-1;3-1-34;15-9-8];
b=[140]';
X=A\b
Warning:
Rankdeficient,rank=2tol=8.8373e-015.
X=
0
0
-8/15
3/5
formatshort
X=
0
0
-0.5333
0.6000
7.4.1.2利用矩阵的LU、QR和cholesky分解求解方程组的解
1.LU分解
LU分解又称为Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行变换)和上三角矩阵的乘积。
即A=LU,L为下三角矩阵的基本变换,U为上三角阵。
则:
A*X=b变成L*U*X=b
所以X=U\(L\b)这样可以大大提高运算速度。
命令[L,U]=lu(A)
例7-9:
求解方程组的一个特解
A=[42-1;3-12;1130];
b=[2108]';
D=det(A)
D=
0
[L,U]=lu(A)
L=
0.3636-0.50001.0000
0.27271.00000
1.000000
U=
11.00003.00000
0-1.81822.0000
000.0000
X=U\(L\b)
Warning:
Matrixisclosetosingularorbadlyscaled.
Resultsmaybeinaccurate.RCOND=2.018587e-017.
X=
1.0e+016*
-0.4053
1.4862
1.3511
说明:
结果中的警告是由于系数行列式为零产生的。
可以通过A*X验证其正确性。
2.Cholesky分解
若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即:
A=R’*R其中R为上三角矩阵。
方程A*X=b变成R’*R*X=b
所以X=R\(R’\b)
命令R=chol(A)
3.QR分解
对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:
A=QR
方程A*X=b变成QRX=b
所以X=R\(Q\b)
命令[Q,R]=qr(A)
例7-10:
求方程组的一个特解
A=[11-3-1;3-1-34;15-9-8];
b=[140]';
[Q,R]=qr(A)
Q=
-0.30150.1421-0.9428
-0.9045-0.35530.2357
-0.30150.92390.2357
R=
-3.3166-0.90456.3317-0.9045
05.116
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章 Matlab与线性代数 Matlab 线性代数