• 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
  • 相关阅读:
    【附源码】Python计算机毕业设计网上宠物商店系统
    计算机网络第4章(网际层)----总结1
    优先队列与堆排序的时间复杂度分析
    linux安装redis
    MySQL高阶语句
    自动驾驶专题介绍 ———— 动力传动系统
    2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B卷
    pybullet 康奈尔数据集转换(四+)训练前看
    Eureka 概述与 Eureka Server 配置
    PyScada(三)后端应用
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/126152487