3.1MATLAB学习笔记之矩阵处理-特殊矩阵

Matlab特殊矩阵

有一类具有特殊形式的矩阵称为特殊矩阵。常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这些特殊矩阵在应用中具有通用性;

还有一类特殊矩阵在专门学科中得到应用,如有名的魔方矩阵、范德蒙(Vandermonde)矩阵、希尔伯特(Hilbert)矩阵等。

MATLAB提供了相应的函数,可以更方便地生成特殊矩阵。

一.通用的特殊矩阵

常用的产生通用特殊矩阵的函数有以下几个。

(1)zeros:产生全0矩阵,即零矩阵。

>> zeros(3)

ans =

     0     0     0
     0     0     0
     0     0     0

(2)ones:产生全1矩阵,即幺矩阵。

>> ones(3)

ans =

     1     1     1
     1     1     1
     1     1     1

(3)eye:产生单位矩阵。

>> eye(3)

ans =

     1     0     0
     0     1     0
     0     0     1

(4)rand:产生(0,1)区间均匀分布的随机矩阵。

>> rand(3)

ans =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

(5)randn:产生均值为0,方差为1的标准正态分布随机矩阵。

>> randn(3)

ans =

    2.7694    0.7254   -0.2050
   -1.3499   -0.0631   -0.1241
    3.0349    0.7147    1.4897

这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式如下:

其中,第一种格式产生m×m零矩阵。第二种格式产生m×n零矩阵,当m=n时,等同于zeros(m)。第三种格式产生与矩阵A同样大小的零矩阵。例如:

例1 建立随机矩阵。

(1)在区间[20,50]内均匀分布的5阶随机矩阵。

(2)均值为0.6,方差为0.1的5阶正态分布随机矩阵。

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

x =

   43.7662   48.0198   39.6643   21.3851   48.5067
   48.7848   40.3621   25.1356   22.9140   21.0334
   39.6722   42.7322   41.1814   44.7037   33.1623
   21.0714   42.2940   20.9550   40.8449   31.4468
   45.4739   31.7668   28.3077   29.5130   42.9655
   
>> y=0.6+sqrt(0.1)*randn(5)

y =

    0.6989    0.9457    0.2479    0.5287    0.9480
    0.3265    0.9508    0.5978    0.9533    1.0883
    0.5905    0.3269    1.0847    0.2556    0.6272
    0.5479    0.6245    0.3566    0.6103    0.1283
    0.7985    0.2161    0.7174    0.7747    0.3653
二.用于专门学科的特殊矩阵
1.魔方矩阵

魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等

对于n阶魔方阵,其元素由1、2、3、…、n²共n²个整数组成,每行、每列及两条对角线上的元素和都等于n(n²+1)/2。

MATLAB提供了函数**magic(n)**,其功能是生成一个n阶魔方阵。

>> magic(3)

ans =

     8     1     6
     3     5     7
     4     9     2

例2 将[101,125]范围内的25个整数填入一个5行5列的表格中,使其每行每列及对角线的和均为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
2.范德蒙矩阵

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

img

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

可以用一个指定向量生成一个范德蒙矩阵。

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

例如,生成上述范德蒙矩阵的命令如下:

>> vander([1;2;3;5])

ans =

     1     1     1     1
     8     4     2     1
    27     9     3     1
   125    25     5     1
3.希尔伯特矩阵

希尔伯特(Hilbert)矩阵是一种数学变换矩阵,它的每个元素img

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

希尔伯特矩阵是一个高度病态的矩阵,即任何一个元素发生微小变动整个矩阵的值和逆矩阵都会发生很大变化,病态程度和阶数相关

在MATLAB中,有一个专门求n阶希尔伯特矩阵的逆矩阵的函数invhilb(n)

例3 求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  	%恢复默认输出格式
4.托普利兹矩阵

托普利兹(Toeplitz)矩阵除第一行和第一列外,其他每个元素都与左上角的元素相同。

生成托普利兹矩阵的函数是**toeplitz(x,y)**,它生成一个以x为第一列,y为第一行的托普利兹矩阵。这里x、y均为向量,两者不必等长。

**toeplitz(x)**用向量x生成一个对称的托普利兹矩阵。例如:

>> 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)为
p x = a n x n + a n − 1 x n − 1 + . . . + a 1 x + a 0 p_x=a_nx^n+a_{n-1}x^{n-1}+...+a_1x+a_0 px=anxn+an1xn1+...+a1x+a0
称矩阵

img

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

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

例如,求
x 3 − 7 x + 6 x^3-7x+6 x37x+6
的伴随矩阵

>> p=[1,0,7,6]

p =

     1     0     7     6

>> compan(p)

ans =

     0    -7    -6
     1     0     0
     0     1     0
6.帕斯卡矩阵

二次项
( x + y ) n (x+y)^n (x+y)n
展开后的系数随n的增大组成一个三角形表,称为杨辉三角形。由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。

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

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

>> pascal(3)

ans =

     1     1     1
     1     2     3
     1     3     6

例4 求(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
 3     6

例4 求(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

*Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值