基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式

前言

本节主要讨论矩阵的基本概念和性质,结合MATLAB的基础代码,适合新手。

一. 行列式

矩阵A=\lbrace a_{ij}\rbrace行列式的数学定义如下:

D=|A|=det(A)=\sum (-1)^ka_{1k_1}a_{2k_2}\cdots a_{nk_n}

MATLAB调用的格式如下:

d=det(A)

例题1

求以下矩阵的行列式:

A=\begin{bmatrix}16&2&3&13\\5&11&10&8\\9&7&6&12\\4&14&15&1 \end{bmatrix}

解:

MATLAB代码如下:

clc;clear;
A=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];
det(A)

运行结果:
ans =

   5.1337e-13

例题2

利用解析解的方法计算20✖️20的Hilbert矩阵的行列式,并分析其代码运行时间。

解:

MATLAB代码:

clc;clear;
tic, %时间的开端
A=sym(hilb(20)); %20阶的hilbert矩阵,并写成符号形式
det(A),
toc %时间的结束

运行的结果较长,如下:

ans =
1/2377454716768534509091644243427616440175419837753486493033185331234419759310644585187585766816573773440565759867265558971765638419710793303386582324149811241023554489166154717809635257797836800000000000000000000000000000000000

历时 0.246496 秒

分析:可通过此结果推断高阶的Hilbert矩阵式接近奇异的矩阵

二. 矩阵的迹

在数学中,方阵A=\lbrace a_{ij}\rbrace,\quad i,j=1,2,\ldots,n的迹定义如下:

tr(A)=\sum_{i=1}^n a_{ii}

MATLAB的格式如下:

t=trace(A)

三. 矩阵的秩

矩阵的秩可以理解为该矩阵中行列式不等于0的子式中最大的阶次。基于线性无关性质,行秩和列秩是相等的,MATLAB格式如下:

r=rank(A); %利用默认的精度求数值秩
r=rank(A); %给定精度下,求数值秩

上式子中,r可代表列秩或行秩。

例题3

求矩阵A的秩,A的表达式如下:

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 4&14&15&1\\ \end{bmatrix}

解:

MATLAB代码如下:

clc;clear;
A=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];
rank(A)

运行结果:
ans =

     3

分析:该矩阵的秩为3,小于该矩阵的阶次4,所以次矩阵为非满秩矩阵

例题4

利用数值方法解析方法分别求20✖️20的Hilbert矩阵的秩。

解:

MATLAB代码如下:

clc;clear;
H=hilb(20);
r1=rank(H) %数值方法
H1=sym(hilb(20));
r2=rank(H1) %解析方法

运行结果:

r1 = 13
r2 = 20

分析:两种方法运行结果不一样,原因是原矩阵为非奇异矩阵

四. 矩阵范数

首先,我们来认识下向量的范数。函数\rho(x)为向量x的范数,需要满足如下三个基本条件:

  1. \rho(x)\geq0\rho(x)=0的充要条件是x=0
  2. \rho(ax)=|a|\rho(x),其中a为任意的标量
  3. 对任意向量x和y,都有\rho(x+y)\leq\rho(x)+\rho(y)

||x||_p代表向量的范数,从数学的观点上,范数的计算公式如下:

||x||_p=(\sum_{i=1}^n|x_i|^p)^{\frac{1}{p}},\quad p=1,2,\cdots

此式子中,||x||_\infty=max_{1\leq i\leq n}|x_i|

由向量的范数延伸到矩阵的范数,对于任意的非零向量x,矩阵A的范数可定义如下:

||A||=sup_{x\neq0}\frac{||Ax||}{||x||}

常用的三个范数计算如下:

||A||_1=max_{1\leq j\leq n}\sum_{i=1}^n|a_{ij}|

||A||_2=\sqrt{s_{max}(A^TA)}

||A||_\infty=max_{1\leq i\leq n}\sum_{j=1}^n|a_{ij|}

在MATLAB中调用的格式如下:

N=norm(A)  %求解默认为2的范数
N=norm(A,others) %others可填1,,2,inf等

例题5

求解以下向量a和矩阵A的范数。

a=[16 2 3 13];

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 0&7&3&6\\ \end{bmatrix}

解:

MATLAB代码如下:

clc;clear;
a=[16 2 3 13];
a1=[norm(a),norm(a,2),norm(a,1),norm(a,inf)]
%分别求向量 默认,2,,1,无穷大的范数
A=[16 2 3 13;5 11 10 8;9 7 6 12;0 7 3 6];
A1=[norm(A),norm(A,2),norm(A,1),norm(A,inf)]
%分别求矩阵 默认,2,,1,无穷大的范数

说明:因为符号运算工具箱未提供norm()函数,所以如果给出的是符号矩阵,则需要先用double()函数转换成双精度数值矩阵,再调用norm()函数即可。

五. 特征多项式

矩阵A的特征多项式,定义如下:

C(s)=det(sI-A)=s^n+c_1s^{n-1}+\ldots+c_{n-1}s+c_n

MATLAB调用的格式,如下:

C=poly(A)

例题6

求矩阵A的特征多项式。

A=\begin{bmatrix}16&2&3&13\\ 5&11&10&8\\ 9&7&6&12\\ 4&14&15&1\\ \end{bmatrix}

解:

MATLAB代码如下:

clc;clear;
A1=[16 2 3 13;5 11 10 8;9 7 6 12;4 14 15 1];
C1=poly(A1) %直接求解

A2=sym(A1);
C2=charpoly(A2) %运用符号工具箱求解

运行结果:
C1 =

   1.0e+03 *

    0.0010   -0.0340   -0.0800    2.7200    0.0000

 
C2 =
[ 1, -34, -80, 2720, 0]

分析:两个结果一致

六. 矩阵多项式

矩阵多项式的数学形式如下:

B=a_1A^n+a_2A^{n-1}+\ldots+a_nA^n+a_{n+1}I

MATLAB调用的格式,如下:

B=polyvalm(a,A)

如果是点运算,则定义如下形式:

C=a_1x.^n+a_2x.^{(n-1)}+\ldots+a_{n+1}

MATLAB调用格式,如下:

C=polyval(a,x)

可以将多项式P中的自变量s替换为x,MATLAB格式如下:

C=subs(p,s,x)

例题7

(1)求向量与矩阵间的矩阵多项式

a=[1\quad2\quad3\quad4]A=\begin{bmatrix}5&6\\7&8 \end{bmatrix}

(2)求向量与向量间的矩阵多项式

a=[1\quad2\quad3\quad4]x=[7\quad8\quad9]

解:

MATLAB代码如下:

clc;clear;
a=[1 2 3 4];
A=[5 6;7 8];
x=[7 8 9];

C1=polyvalm(a,A)

C2=polyval(a,x)

运行结果:

C1 =

        1034        1200
        1400        1634


C2 =

   466   668   922

  • 16
    点赞
  • 141
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值