MATLAB特殊矩阵
目录
MATLAB是由早期专门用于矩阵运算的科学计算软件发展而来的。
有一类具有特殊形式的矩阵被称为特殊矩阵,这些特殊矩阵在应用中具有通用性,还有一类在专门学科中得到应用。
通用的特殊矩阵
产生通用特殊矩阵的函数有以下几个。
(1) zeros:产生全0矩阵,也就是零矩阵
(2) ones:产生全1矩阵,也就是幺矩阵
(3) eye:产生单位矩阵
(4) rand:产生(0,1)区间均匀分布的随机矩阵
(5) randn:产生均值为0,方差为1的标准正态分布随机矩阵
这几个函数的调用格式相似,例:
zeros(m) 产生m
m大小的零矩阵
zeros(m,n) 产生m
n大小的零矩阵
zeros(size(A)) 产生和A矩阵相同大小的零矩阵
zeros
ans =
0
ones
ans =
1
eye
ans =
1
rand
ans =
0.6324
randn
ans =
-1.3077
zeros(3)
ans =
0 0 0
0 0 0
0 0 0
zeros(3,2)
ans =
0 0
0 0
0 0
A=[1,1,1,1;1,1,1,1;1,1,1,1;1,1,1,1];
zeros(size(A))
ans =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
用于专门学科的特殊矩阵
1、魔方矩阵
magic(n) 生成一个n阶的魔方矩阵
魔方矩阵的一个有趣性质——对于n阶魔方矩阵,其元素由1、2、3、...、共
个整数组成,并且每行、每列以及两条对角线上的元素和都等于
magic(3)
ans =
8 1 6
3 5 7
4 9 2
magic(5)
ans =
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
M=100+magic(5)
M =
117 124 101 108 115
123 105 107 114 116
104 106 113 120 122
110 112 119 121 103
111 118 125 102 109
2、范德蒙德(Vandermonde)矩阵
函数 vander(V)生成以向量V为基础向量的范德蒙德矩阵
A=vander([1;2;3;5])
A =
1 1 1 1
8 4 2 1
27 9 3 1
125 25 5 1
>> vander([1,2,3,4])
ans =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1
3、希尔伯特(Hilbert)矩阵
生成希尔伯特矩阵的函数是 hilb(n)
有一个专门求n阶希尔伯特矩阵的逆矩阵的函数 invhilb(n)
希尔伯特矩阵是一种数学变换矩阵,他的每个元素是
值得一提的是希尔伯特矩阵是一个高度病态的矩阵,任何一个元素微小的变动,整个矩阵的值和逆矩阵都会发生很大的变化。
因为我们一般认为良性的矩阵应该是小的扰动产生一个小的偏差。
format rat %以有理形式输出
H=hilb(4)
H =
1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7
H=invhilb(4)
H =
16 -120 240 -140
-120 1200 -2700 1680
240 -2700 6480 -4200
-140 1680 -4200 2800
format %恢复默认输出格式
4、托普利兹(Toeplitz)矩阵
生成托普利兹矩阵的函数是 toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。如果x和y等长,可以用toeplitz(x)生成一个对称的托普利兹矩阵。
toeplitz((1:6),(1:5))
ans =
1 2 3 4 5
2 1 2 3 4
3 2 1 2 3
4 3 2 1 2
5 4 3 2 1
6 5 4 3 2
toeplitz(1:6)
ans =
1 2 3 4 5 6
2 1 2 3 4 5
3 2 1 2 3 4
4 3 2 1 2 3
5 4 3 2 1 2
6 5 4 3 2 1
5、伴随矩阵
注意此处的伴随矩阵不是线性代数里的伴随矩阵,他是伴随着一个多项式的矩阵,这个多项式称为是这个伴随矩阵的特征多项式,多项式的根就是这个伴随矩阵的特征值。
生成一个多项式p(x)的伴随矩阵的函数是compan(p)
p=[1,0,-7,6];
A=compan(p)
A =
0 7 -6
1 0 0
0 1 0
>> eig(A)
ans =
-3.0000
2.0000
1.0000
roots(p)
ans =
-3.0000
2.0000
1.0000
6、帕斯卡(Pascal)矩阵
帕斯卡矩阵可用于求二项式展开的系数。我们知道展开的系数随着n的增大组成一个三角形表,也就是杨辉三角。帕斯卡矩阵的第一行和第一列元素都是1,其余位置的元素是该元素的左边元素和上一行的对应位置元素相加,也就是
函数pascal(n)生成一个n阶的帕斯卡矩阵
注意了,如果要求的二项式展开系数那么应该用pascal(n+1), 然后依次取副对角线的元素就是所要的系数
pascal(6)
ans =
1 1 1 1 1 1
1 2 3 4 5 6
1 3 6 10 15 21
1 4 10 20 35 56
1 5 15 35 70 126
1 6 21 56 126 252
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律