数学建模与MATLAB-11
前言
世事苍苍,谁能真正掌握自己的命运呢?我现在能做的就是尽量让我的弥留之际能少一点后悔多一些坦然与从容。
以上都是些最近的所思所想,大家自行略去
今天我们来讲矩阵更深一部分的知识!有难度的,需要一定的基本的!大家要注意哦!
当然大家放心,我是会尽可能地讲清楚的!
矩阵的特征与线性代数
下面介绍矩阵的一些基本操作,包括矩阵的特征值、三角阵、对角阵、矩阵的翻转等,例如矩阵的迹、矩阵的秩和矩阵的范数等,最后介绍了矩阵的超越函数。
方阵的行列式
把一个方阵看成一个行列式,对其按行列式的规制求值,所得到的值就称为矩阵所对应行列式的值。
在MATLAB中,采用函数det()求矩阵的行列式,该函数的调用格式为:det(X),得到方阵X的行列式。
我们下面来看一个示例:
clear all; A=magic(3) B=[1:3;2 5 7;3 8 7] y1=det(A) y2=det(B)
结果为:
A =
8 1 6 3 5 7 4 9 2
B =
1 2 32 5 7 3 8 7
y1 =
-360
y2 =
-4
由上面我们可以看到行列式是具体的一个值。
特征值、特征向量和特征多项式
在MATLAB中,计算矩阵A特征值和特征向量的函数是eig(),该函数的调用格式为:
下面我们来看一个程序,
clear all; A=magic(3) E=eig(A) [V,D]=eig(A)
结果为:
A =
8 1 6 3 5 7 4 9 2
E =
15.00004.8990 -4.8990
V =
-0.5774 -0.8131 -0.3416 -0.5774 0.4714 -0.4714 -0.5774 0.3416 0.8131
D =
15.0000 0 0 0 4.8990 0 0 0 -4.8990
此外呢!这个还可以求方程的根。
clear all; p=[3 5 2 1] A=compan(p) x1=eig(A) x2=roots(p)
结果为:
p =
3 5 2 1
A =
-1.6667 -0.6667 -0.3333 1.0000 0 0 0 1.0000 0
x1 =
-1.3563 + 0.0000i -0.1552 + 0.4708i -0.1552 - 0.4708i
x2 =
-1.3563 + 0.0000i -0.1552 + 0.4708i -0.1552 - 0.4708i
对于上面的示例,我们应该知道的是A是他的伴随矩阵,X1 X2的结果是一样的。
对角阵
下面我们来看一个程序:
clear all; A=rand(3,4) b1=diag(A) b2=diag(A,1) b3=diag(A,2)
结果为:
A =
0.8147 0.9134 0.2785 0.9649 0.9058 0.6324 0.5469 0.1576 0.1270 0.0975 0.9575 0.9706
b1 =
0.8147 0.6324 0.9575
b2 =
0.9134 0.5469 0.9706
b3 =
0.2785 0.1576
上三角阵和下三角阵
我们来看一个程序:
clear all; A=rand(3,3) B1=triu(A) B2=tril(A) B3=tril(A,1)
结果为:
A =
0.9572 0.1419 0.7922 0.4854 0.4218 0.9595 0.8003 0.9157 0.6557
B1 =
0.9572 0.1419 0.7922 0 0.4218 0.9595 0 0 0.6557
B2 =
0.9572 0 0 0.4854 0.4218 0 0.8003 0.9157 0.6557
通过这个结果就可以和容易地发现上三角阵和下三角阵是以对角线进行划分的!
矩阵的逆和伪逆
我们再来看一个示例:
clear all; A=magic(3) B=[1 3;2 6] C=inv(A) C*A inv(B) D=pinv(B) B*D*B
结果为:
A =
8 1 6 3 5 7 4 9 2
B =
1 32 6
C =
0.1472 -0.1444 0.0639 -0.0611 0.0222 0.1056 -0.0194 0.1889 -0.1028
ans =
1.0000 -0.0000 -0.0000 0 1.0000 0 0 0.0000 1.0000
警告: 矩阵为奇异工作精度。
In chap3_64 (line 9)
ans =
Inf Inf Inf Inf
D =
0.0200 0.0400 0.0600 0.1200
ans =
1.0000 3.0000 2.0000 6.0000
矩阵的秩
下面我们来看一个示例:
clear all; A=magic(3) B=[1 2 4;2 3 5;2 4 8] r1=rank(A) r2=rank(B)
结果为:
A =
8 1 6 3 5 7 4 9 2
B =
1 2 4 2 3 5 2 4 8
r1 =
3
r2 =
2
矩阵的迹
下面我们来看一个示例:
clear all; A=magic(3) t1=trace(A) eig(A) t2=sum(eig(A))
结果为:
A =
8 1 6 3 5 7 4 9 2
t1 =
15
ans =
15.00004.8990 -4.8990
t2 =
15.0000
由上面可知,对角线元素之和与特征值之和是相等的!
矩阵的范数
下面我们来看一个示例:
clear all; A=[1 2 3;3 5 7;2 5 8] n1=norm(A,1) n2=norm(A) n3=norm(A,inf) n4=norm(A,'fro') n5=normest(A)
结果为:
A =
1 2 33 5 7 2 5 8
n1 =
18
n2 =
13.7529
n3 =
15
n4 =
13.7840
n5 =
13.7529
矩阵的条件数
我们来看一个示例:
clear all; A=[1 2 3;3 5 7;9 5 8] c1=cond(A,1) c2=cond(A,2) c3=cond(A,inf)
结果为:
A =
1 2 33 5 7 9 5 8
c1 =
190.2857
c2 =
124.5801
c3 =
188.5714
矩阵的标准正交基
下面我们来看一个程序:
clear all; A=[1 2 3;3 5 7;9 5 8] B=magic(3) C=orth(A) D=orth(B) C'*C eye(rank(A))
结果为:
A =
1 2 33 5 7 9 5 8
B =
8 1 6 3 5 7 4 9 2
C =
-0.2210 -0.3608 -0.9061 -0.5489 -0.7220 0.4213 -0.8062 0.5904 -0.0385
D =
-0.5774 0.7071 0.4082 -0.5774 0.0000 -0.8165 -0.5774 -0.7071 0.4082
ans =
1.0000 -0.0000 -0.0000 -0.0000 1.0000 -0.0000 -0.0000 -0.0000 1.0000
ans =
1 0 0 0 1 0 0 0 1
矩阵的超越函数
下面我们来看一下程序:
clear all; A=[3 2 3;6 5 7;9 5 8] X=sqrtm(A) B=X*X
结果为
A =
3 2 36 5 7 9 5 8
X =
0.6630 + 0.0000i 0.5409 - 0.0000i 0.7619 - 0.0000i -0.1565 + 0.0000i 1.8958 - 0.0000i 1.8436 - 0.0000i 3.4717 - 0.0000i 0.8085 + 0.0000i 1.9658 + 0.0000i
B =
3.0000 + 0.0000i 2.0000 + 0.0000i 3.0000 + 0.0000i 6.0000 + 0.0000i 5.0000 + 0.0000i 7.0000 + 0.0000i 9.0000 - 0.0000i 5.0000 - 0.0000i 8.0000 - 0.0000i
下面我们再来看一个示例:
clear all; A=[3 2 3;6 5 7;9 5 8] X1=expm(A) Y1=logm(X1) X2=logm(A) Y2=expm(X2) [V,D]=eig(A) V*diag(exp(diag(D)))/V
j结果为
A =
3 2 36 5 7 9 5 8
X1 =
1.0e+06 *
1.2615 0.8142 1.2347 2.9253 1.8880 2.8631 3.3824 2.1830 3.3105
Y1 =
3.0000 2.0000 3.0000 6.0000 5.0000 7.0000 9.0000 5.0000 8.0000
警告: 没有为包含非正实数特征值的 A 定义主矩阵对数。返回了非主矩阵对数。
In logm (line 78)
In chap3_71 (line 8)
X2 =
-32.6991 + 3.1416i 6.9543 - 0.6283i 7.2079 - 0.6283i -95.1864 + 9.4248i 19.3856 - 1.8850i 21.1166 - 1.8850i 98.9900 - 9.4248i -18.0737 + 1.8850i -18.5368 + 1.8850i
Y2 =
3.0000 + 0.0000i 2.0000 + 0.0000i 3.0000 + 0.0000i 6.0000 + 0.0000i 5.0000 + 0.0000i 7.0000 + 0.0000i 9.0000 + 0.0000i 5.0000 + 0.0000i 8.0000 + 0.0000i
V =
-0.2715 -0.2294 -0.0459 -0.6296 -0.6882 -0.8118 -0.7279 0.6882 0.5822
D =
15.6811 0 0 0 -0.0000 0 0 0 0.3189
ans =
1.0e+06 * 1.2615 0.8142 1.2347 2.9253 1.8880 2.8631 3.3824 2.1830 3.3105
总结
本文涉及到了一些数学知识,但是难度并不是很高。
- 数学建模 | MATLAB学习 | 排队论
- 数学建模 Matlab 学习vol.2
- Matlab--数学建模
- 【数学建模集训系列】公交查询系统的matlab实现-问题重述
- 数学建模 MATLAB的取整函数
- 数学建模(MATLAB入门)
- 数学建模(14)——MATLAB实现最小生成树(Prim与Kruskal算法)
- 数学建模常用Matlab/Lingo/c代码总结系列——非线性拟合
- 数学建模常用Matlab/Lingo/c代码总结系列——Matlab图形绘制函数汇总
- MATLAB数学建模练习(1)-线性规划
- 数学建模(matlab)学习笔记--线性规划
- 2017年研究生数学建模竞赛-E题 MATLAB 作战区域道路示意图
- 数学建模常用Matlab/Lingo/c代码总结系列——hamilton回路
- Matlab 数学建模方法(七): 连续模型求解(目标跟踪问题实例)
- 【转载】数学建模——MATLAB寻找最短路径(Dijkstra算法和Floyd算法)
- 数学建模 - 01背包问题多种解法 | C语言、Matlab、Lingo
- 数学建模 | MATLAB学习 | 蒙特卡洛算法
- Matlab数学建模工具箱(mathmodl),国赛必备
- 用matlab解决数学建模中的微积分问题
- 【数学建模集训系列】公交查询系统的matlab实现-公交站点和线路对应矩阵