当前位置:   article > 正文

MATLAB程序设计与应用 3.1 特殊矩阵_希尔伯特矩阵

希尔伯特矩阵

MATLAB程序设计与应用

3. 第3章 MATLAB矩阵处理

正如 MATLAB 的名字——“矩阵实验室”的含义一样,MATLAB是由早期专门用于矩阵运算的科学计算软件发展而来的。矩阵是MATLAB最基本的数据形式,MATLAB 的大部分运算或命令都是在矩阵运算的意义下执行的,而且这种运算定义在复数域上。正因为如此,MATLAB 的矩阵运算功能非常丰富,许多含有矩阵运算的复杂计算问题,在MATLAB中很容易得到解决。

因为向量可以看成是仅有一行或一列的矩阵,单个数据(标量)可以看成是仅含一个元素的矩阵,故向量和单个数据都可以作为矩阵的特例来处理。

3.1 特殊矩阵

有一类具有特殊形式的矩阵称为特殊矩阵。常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这些特殊矩阵在应用中具有通用性;还有一类特殊矩阵在专门学科中得到应用,如有名的魔方矩阵、范德蒙(Vandermonde)矩阵、希尔伯特(Hilbert)矩阵等。MATLAB 提供了相应的函数,可以更方便地生成特殊矩阵。

3.1.1 通用的特殊矩阵

常用的产生特殊矩阵的函数:

  • zeros:产生全0矩阵,即零矩阵。
  • ones:产生全1矩阵,即幺矩阵。
  • eye:产生单位矩阵。
  • rand:产生(0,1)区间均匀分布的随机矩阵。
  • randn:产生均值为0 , 方差为1的标准正态分布随机矩阵。

zeros(m):产生mxm零矩阵。

zeros(m,n):产生mxn零矩阵。当m = n 时,等同于zeros(m)。

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

>> zeros(3)

ans =

     0     0     0
     0     0     0
     0     0     0

>> A = [1,2,3;4,5,6];
>> zeros(size(A))

ans =

     0     0     0
     0     0     0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

例子:建立随机矩阵。

  • 在区间[20 , 50]内均匀分布的5阶随机矩阵
  • 均值为0.6 , 方差为0.1的5阶正态分布随机矩阵。

产生(0,1)区间均匀分布随机矩阵使用 rand 函数,假设得到了一组满足(O,1)区间均匀分布的随机数x,则若想得到在任意[a,b]区间上均匀分布的随机数,只需用yi=a+(b-a)xi,计算即可。产生均值为0,方差为1的标准正态分布随机矩阵使用 randn 函数,假设已经得到了一组标准正态分布随机数xi,如果想更一般地得到均值为u,方差为σ ^2的随机数,可用yi=u+σxi,计算出来。

>> x = 20 + (50 - 20) * rand(5)

x =

   44.4417   22.9262   24.7284   24.2566   39.6722
   47.1738   28.3549   49.1178   32.6528   21.0714
   23.8096   36.4064   48.7150   47.4721   45.4739
   47.4013   48.7252   34.5613   43.7662   48.0198
   38.9708   48.9467   44.0084   48.7848   40.3621

>> y = 0.6 + sqrt(0.1) * randn(5)

y =

    0.9272    0.8809    1.0549    0.5677    0.5905
    0.8299    0.2373    0.7028    0.5236    0.5479
    0.5040    0.2620    0.3613    0.7009    0.7985
    0.6929    0.3440    1.0333    0.6989    0.9457
    0.3510   -0.3311    0.0588    0.3265    0.9508
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
3.1.2 用于专门学科的特殊矩阵
  1. 魔方矩阵

    魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1、2、3、…、n2共n个整数组成,每行、每列及两条对角线上的元素和都等于n(n2+1)/2。MATLAB提供了函数magic(n),其功能是生成一个n阶魔方阵。

    >> magic(3)
    
    ans =
    
         8     1     6
         3     5     7
         4     9     2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    将[101 , 125]范围内的25个整数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。

    一个5阶魔方矩阵的每行、每列及对角线的和均为65,对其每个元素都加100后,这些和变为565。

    >> 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  2. 范德蒙矩阵

    范德蒙(Vandermonde)矩阵的一般形式为:

    在这里插入图片描述

    范德蒙矩阵最后一列全为1,倒数第二列为一个指定的向量,其他各列是其后一列与倒数第二列对应元素的乘积。如:

    在这里插入图片描述

    可以用一个指定向量生成一个范德蒙矩阵。在 MATLAB中,函数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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  3. 希尔伯特矩阵

    希尔伯特(Hilbert)矩阵是一种数学变换矩阵,它的每个元素在这里插入图片描述

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

    希尔伯特矩阵是一个高度病态的矩阵,即任何一个元素发生微小变动,整个矩阵的值和逆矩阵都会发生很大变化,病态程度和阶数相关。在MATLAB中,有一个专门求n阶希尔伯特矩阵的逆矩阵的函数invhilb(n)。

    例子:求4阶希尔伯特矩阵及其逆矩阵。

    >> 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 %恢复默认输出格式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  4. 托普利兹矩阵

    托普利兹(Toeplitz)矩阵除第一行和第一列外,其他每个元素都与左上角的元素相同。生成托普利兹矩阵的函数是toeplitz(x,y),它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x、 y均为向量,两者不必等长。toeplitz(x)用向量x生成一个对称的托普利兹矩阵。

    >> T = toeplitz(1:6)
    
    T =
    
         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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  5. 伴随矩阵

    多项式在这里插入图片描述

    ,则称矩阵在这里插入图片描述

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

    MATLAB生成伴随矩阵的函数是compan§,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后。例如,为了求多项式x^3-7x+6的伴随矩阵:

    >> p = [1,0,-7,6];
    >> compan(p)
    
    ans =
    
         0     7    -6
         1     0     0
         0     1     0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  6. 帕斯卡矩阵

二次项(x+y)^n展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。帕斯卡矩阵的第一行元素和第一列元素都为1,其余位置的元素是该元素的左边元素与上一行对应位置元素相加,即 A(i,j)=A(i,j-1)+A(i-1,j)。函数 pascal(n)生成一个n阶帕斯卡矩阵。

例子:求(x + y) ^ 5的展开式

>> 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

矩阵次对角线上的元素1、5、10、10、5、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


矩阵次对角线上的元素1、5、10、10、5、1即为展开式的系数。















  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/802071
推荐阅读
相关标签
  

闽ICP备14008679号