Hope is a dangerous thing, but I have it.


【课程学习】基础矩阵概念

  这段时间开始重新学习线性代数,其实这是一门很有用的学科,而且我使用matlab有一段时间了,也是一直在和矩阵打交道,但是常常碰到有些概念还是觉得模糊不清楚,所以重新捡起《线性代数》这门课进行学习。学习过程中也会插入一些matlab实现。

矩阵的特类

行矩阵

行矩阵就是只有一行的矩阵,matlab里很常用。

    >> a=[1,2,3,4]
    a =
        1     2     3     4
    >> a=[1:4]
    a =
        1     2     3     4

列矩阵

  列矩阵就是只有一列的矩阵,因为matlab很多都是列运算,所以我常常更倾向于用列矩阵。

    >> b=[1;2;3;4]
    b =
         1
         2
         3
         4

上三角矩阵

  上三角矩阵主对角线下侧的元素全为0,matlab也有直接取一个矩阵上三角的函数。

    >> c=[1:4;2:5;3:6;4:7];
    >> triu(c)
    ans =
         1     2     3     4
         0     3     4     5
         0     0     5     6
         0     0     0     7

下三角矩阵

  下三角矩阵主对角线上侧的元素全为0,matlab也有直接取一个矩阵下三角的函数。

    >> c=[1:4;2:5;3:6;4:7];
    >> tril(c)
    ans =
         1     0     0     0
         2     3     0     0
         3     4     5     0
         4     5     6     7

对角阵

  对角阵就是主对角线两侧的元素全为0的方阵,matlab中可用diag(a,n)生成,其中a是向量,n是它偏离对角线的列数,可以为正数也可以为负数。生成对角阵的时候设置n=0,或者直接采用diag(a)就可以了。

    >> a=[1,2,3];
    >> diag(a,-1)
    ans =
         0     0     0     0
         1     0     0     0
         0     2     0     0
         0     0     3     0

单元矩阵

  单元矩阵是对角阵的一种,只不过对角线的元素均为1。

    >> eye(3)
    ans =
         1     0     0
         0     1     0
         0     0     1

  当然eye()函数也可以生成mxn的矩阵,当行数小于列数时,生成的是行满秩矩阵,当行数大于列数时,生成的是列满秩矩阵。

    >> eye(3,2)
    ans =
         1     0
         0     1
         0     0

矩阵的运算

基础运算

  矩阵的基础运算就是加减乘除四种,对于matlab来说还有点乘和点除,分别用 .* 和 ./ 表示。矩阵运算也有幂运算,但是也不难。需要注意的是矩阵的运算有很多时候不适用交换率,所以要注意下面的情况:
$$(AB)^n \neq A^n B^n$$

多项式计算

  矩阵也有多项式的形式:$f(A)=a_0A^n+a_1A^{n-1}+…+a_{n-1}A+a_nE$,其中E与A同阶。

    >> A=[1,2;3,4];
    >> f=A^2+A
    f =
         8    12
        18    26

转置

  将一个矩阵的行换成同序数的列则可得到它的转置矩阵。

    >> A=[1,2,3;4,5,6];
    >> A'
    ans =
         1     4
         2     5
         3     6

  在转置这里有两个新的概念:

  • 对称阵:$A^T=A$
  • 反对称阵:$A^T=-A$