【Matlab学习2.1】特殊矩阵

通用性的特殊矩阵

zeros 函数:产生全0矩阵,即零矩阵。
ones 函数:产生全1矩阵,即幺矩阵。
eye 函数:产生对角线为1的矩阵。当矩阵是方阵时,得到一个单位矩阵。
rand 函数:产生 $(0,1)$ 区间均匀分布的随机矩阵。
randn 函数:产生均值为0,方差为1的标准正态分布随机矩阵。

zeros函数的调用格式

zeros(m):产生m×m零矩阵。
zeros(m,n):产生m×n零矩阵。
zeros(size(A)):产生与矩阵A同样大小的零矩阵。 

例2.1.1:

>> A = zeros(2,3)
A =
     0     0     0
     0     0     0
>> zeros(size(reshape(A,3,2)))
ans =
     0     0
     0     0
     0     0

例2.1.2:

首先产生5阶两位随机整数矩阵 A,再产生均值为 0.6、方差为 0.1 的 5 阶正态分布随机矩阵 B,最后验证 $(A+B)I=IA+BI$($I$ 为单位矩阵)。 

提示:
rand 函数:产生(0,1)开区间均匀分布的随机数 x。
fix(a+(b-a+1)*x):产生 [a,b] 区间上均匀分布的随机整数。
randn 函数:产生均值为 0、方差为 1 的标准正态分布随机数 x。
μ+σx:得到均值为 μ、方差为 σ2 的随机数。

答案:

>> A = fix(rand(5)*90 + 10)
>> B = randn(5)*sqrt(0.1) + 0.6
>> I = eye(5)
>> (A+B)*I == I*A + B*I

其中,B 矩阵的推导如下:

方法一:期望和方差的性质 $$ \begin{cases}   E(aX+b)=aE(x)+b \\   D(aX+b)=a^{2}D(X) \\ \end{cases} $$

设 $X$ 为 randn 函数生成的矩阵,可知  $B=aX+b$。

由题意得方式组 $$ \begin{cases}   E(X)=0 \\   D(X)=1 \\   E(aX+b)=aE(X)+b=0.6 \\   D(aX+b)=a^{2}D(X)=0.1 \\ \end{cases} $$

解得  $$ \begin{cases}   a=\sqrt{0.1} \\   b=0.6 \\ \end{cases} $$

$B=aX+b=\sqrt{0.1}X+0.6$

方法二:正态分布的性质

详见下图

>> A = fix(rand(5)*90 + 10)
A =
    88    48    22    86    16
    17    91    88    65    31
    45    26    62    41    21
    33    33    59    56    26
    82    23    23    46    31
>> B = randn(5)*sqrt(0.1) + 0.6
B =
    0.4313    0.5890    1.0273    0.2458    0.3263
   -0.0333    0.3476    0.5289    1.3988    0.5442
    0.9049    0.9221    0.4137    1.1235    0.8503
    0.7645    0.5579    0.5071    0.6973    0.1788
    0.5937    0.3740    0.3319    0.2025   -0.1368
>> I = eye(5)
I =
     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1
>> (A+B)*I == I*A + B*I
ans =
  5×5 logical 数组
   1   1   1   1   1
   1   1   1   1   1
   1   1   1   1   1
   1   1   1   1   1
   1   1   1   1   1

例2.1.2

用于专门学科的特殊矩阵

魔方矩阵——Magic Square

n 阶魔方阵由 1,2,3,…,n2 共 n2 个整数组成,且每行、每列以及主、副对角线上各 n 个元素之和都相等。

n 阶魔方阵每行每列元素的和为 $\cfrac{1+2+3+…+ n^2}{n}$,即 $\cfrac{n+n^3}{2}$。

n>2 时有很多不同的n阶魔方阵,Matlab 函数magic(n)产生一个特定的魔方阵。

例2.1.3:

产生8阶魔方阵,求其每行每列元素的和。

>> M = magic(8)
M =
    64     2     3    61    60     6     7    57
     9    55    54    12    13    51    50    16
    17    47    46    20    21    43    42    24
    40    26    27    37    36    30    31    33
    32    34    35    29    28    38    39    25
    41    23    22    44    45    19    18    48
    49    15    14    52    53    11    10    56
     8    58    59     5     4    62    63     1
>> sum(M(1,:))    #每行元素的和相同,故只需求出第一行即可
ans =
   260
>>  sum(M(:,1))   #每列元素的和相同,故只需求出第一列即可
ans =
   260

范德蒙矩阵

对于向量 $\vec{v}= [v_1,v_2,\ldots,v_n]$, 范得蒙矩阵的一般形式为:

$$ V= \begin{bmatrix} v_1^{n-1} & \cdots & v_1^2 & v_1^1 & 1 \\ v_2^{n-1} & \cdots & v_2^2 & v_2^1 & 1 \\ v_3^{n-1} & \cdots & v_3^2 & v_3^1 & 1 \\ \vdots & \ddots & \vdots & \vdots & \vdots \\ v_n^{n-1} & \cdots & v_n^2 & v_n^1 & 1 \\ \end{bmatrix} $$

范德蒙(Vandermonde)矩阵是法国数学家范德蒙提出的一种特殊矩阵。范得蒙矩阵的最后一列全为1,即向量v各元素的零次方,倒数第二列为指定的向量v,即向量v各元素的一次方, 其他各列是其后列与倒数第二列的点乘积。

在 Matlab 中,函数vander(V)生成以向量V为基础的范得蒙矩阵。

例2.1.4:

>> A = vander(1:5)
A =
     1     1     1     1     1
    16     8     4     2     1
    81    27     9     3     1
   256    64    16     4     1
   625   125    25     5     1

范德蒙矩阵常用在各种通信系统的纠错编码中,例如,常用的Reed-Solomon编码即以范德蒙矩阵为基础。

希尔伯特矩阵

n 阶希尔伯特(Hilbert)矩阵的一般形式为:

$$ H= \begin{bmatrix} 1 & \cfrac{1}{2} & \cfrac{1}{3} & \cdots & \cfrac{1}{n} \\ \cfrac{1}{2} & \cfrac{1}{3} & \cfrac{1}{4} & \cdots & \cfrac{1}{n+1} \\ \cfrac{1}{3} & \cfrac{1}{4} & \cfrac{1}{5} & \cdots & \cfrac{1}{n+2} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \cfrac{1}{n} & \cfrac{1}{n+1} & \cfrac{1}{n+2} & \cdots & \cfrac{1}{2n-1} \\ \end{bmatrix} $$

希尔伯特矩阵的元素为$H(i,j) = \cfrac{1}{i+j-1}$。

在 Matlab 中,生成n阶希尔伯特矩阵的函数是hilb(n)

例2.1.5:

>> 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

希尔伯特矩阵是著名的病态矩阵,即任何一个元素发生较小的变动,整个矩阵的值和逆矩阵都会发生很大变化。病态程度和矩阵的阶数相关,随着阶数的增加病态越严重。

伴随矩阵

设多项式 $p(x) = a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0$,则多项式的伴随矩阵是:

$$ A= \begin{bmatrix} -\cfrac{a_{n-1}}{a_n} & -\cfrac{a_{n-2}}{a_n} & -\cfrac{a_{n-3}}{a_n} & \cdots & -\cfrac{a_1}{a_n} & -\cfrac{a_0}{a_n} \\ 1 & 0 & 0 & \cdots & 0 & 0 \\ 0 & 1 & 0 & \cdots & 0 & 0 \\ 0 & 0 & 1 & \cdots & 0 & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & 0 & \cdots & 0 & 0 \\ 0 & 0 & 0 & \cdots & 1 & 0  \\ \end{bmatrix} $$

$p(x)$ 称为 $A$ 的特征多项式,方程 $p(x)=0$ 的根称为 $A$ 的特征值。

Matlab生成伴随矩阵的函数是compan(p),其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。

例2.1.6:

生成多项式 $x^3-2x^2-5x+6$ 的伴随矩阵。 

>> p = [1,-2,-5,6]
p =
     1    -2    -5     6
>> A = compan(p)
A =
     2     5    -6
     1     0     0
     0     1     0

可以求出伴随矩阵的特征值,该特征值等于多项式方程的根。

帕斯卡矩阵

$$ A= \begin{bmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 \\ 1 & 3 & 6 & 10 & 15 & 21 & 28 & 36 \\ 1 & 4 & 10 & 20 & 35 & 56 & 84 & 120 \\ 1 & 5 & 15 & 35 & 70 & 126 & 210 & 330 \\ 1 & 6 & 21 & 56 & 126 & 252 & 462 & 792 \\ 1 & 7 & 28 & 84 & 210 & 462 & 924 & 1716 \\ 1 & 8 & 36 & 120 & 330 & 792 & 1716 & 3432 \\ \end{bmatrix} $$

根据二项式定理,(x+y)n 展开后的系数随着n的增大组成一个三角形表,这个三角形称为杨辉三角形。
把二项式系数依次填写在矩阵的左侧对角线上,然后提取左侧的n行n列元素即为n阶帕斯卡(Pascal)矩阵。

帕斯卡矩阵

帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上面元素相加,即 $P(i,j)=P(i,j-1)+P(i-1,j)$,且 $P(i,1)=1,P(1,j)=1$。

函数pascal(n)生成一个 n 阶帕斯卡矩阵。 

帕斯卡矩阵2

例2.1.7:

生成5阶帕斯卡矩阵,验证它的逆矩阵的所有元素也为整数。

>> format rat
>> P = pascal(5)
P =
       1              1              1              1              1       
       1              2              3              4              5       
       1              3              6             10             15       
       1              4             10             20             35       
       1              5             15             35             70       
>> inv(P)
ans =
       5            -10             10             -5              1       
     -10             30            -35             19             -4       
      10            -35             46            -27              6       
      -5             19            -27             17             -4       
       1             -4              6             -4              1   
posted @ 2023-01-30 00:13  SplendidCrepuscule  阅读(271)  评论(0编辑  收藏  举报