线性代数基础知识之--矩阵(Matrix)

3,592 阅读4分钟

Matrix 矩阵

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数实数集合 [1] ,最早来自于方程组系数常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。

定义

由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵。记作:

A=a11a12a1na21a22a2nam1am2amnA = \begin{vmatrix} a_{11} & a_{12} & {\cdots} & a_{1n}\\ a_{21} & a_{22} & {\cdots} & a_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ a_{m1} & a_{m2} & {\cdots} & a_{mn}\\ \end{vmatrix}

这m×n 个数称为矩阵A的元素,简称为元,数aij位于矩阵A的第i行第j列,称为矩阵A的(i,j)元,以数 aij为(i,j)元的矩阵可记为(aij)或(aij)m × n,m×n矩阵A也记作AmnA_{mn}

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。而行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵.

行矩阵(行向量)

只有一行的矩阵

A=[a1a2an]A = \begin {bmatrix} a_1 & a2 & {\cdots} & a_n\\ \end {bmatrix}

列矩阵(列向量)

只有一列的矩阵

B=[b1b2bm]B = \begin {bmatrix} b_1 \\ b_2 \\ {\vdots}\\ b_m\\ \end {bmatrix}

同型矩阵

若有矩阵A和 B,矩阵A的行数和列数与矩阵B相同,则矩阵A、B是同型矩阵

单位矩阵

在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,这种矩阵被称为单位矩阵.它是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1。除此以外全都为0。如下图所示是一个3阶的单位矩阵。

[100010001]\begin {bmatrix} 1 &0 &0 \\ 0&1&0\\ 0&0&1\\ \end {bmatrix}

基本运算

矩阵运算在科学计算中非常重要 [8] ,而矩阵的基本运算包括矩阵的加法,减法,数乘,转置,共轭和共轭转置。

加法

注意: 只有同型矩阵之间才可以进行加法

[142200]+[005750]=[1+04+02+52+70+50+0]=[147950]通项公式:a11a12a1na21a22a2nam1am2amn+b11b12b1nb21b22b2nbm1bm2bmn=a11+b11a12+b12a1na21+b21a22+b22a2n+b2nam1+bm1am2+bm2amn+bmn\\ \begin{bmatrix} 1&4&2\\ 2&0&0\\ \end{bmatrix} + \begin{bmatrix} 0&0&5\\ 7&5&0\\ \end{bmatrix} = \begin{bmatrix} 1+0&4+0&2+5\\ 2+7&0+5&0+0\\ \end{bmatrix}=\begin{bmatrix} 1&4&7\\ 9&5&0\\ \end{bmatrix} \\ \\ \\ 通项公式:\begin{vmatrix} a_{11} & a_{12} & {\cdots} & a_{1n}\\ a_{21} & a_{22} & {\cdots} & a_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ a_{m1} & a_{m2} & {\cdots} & a_{mn}\\ \end{vmatrix} + \begin{vmatrix} b_{11} & b_{12} & {\cdots} & b_{1n}\\ b_{21} & b_{22} & {\cdots} & b_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ b_{m1} & b_{m2} & {\cdots} & b_{mn}\\ \end{vmatrix} = \begin{vmatrix} a_{11} + b_{11} & a_{12} + b_{12} & {\cdots} & a_{1n}\\ a_{21}+ b_{21} & a_{22} + b_{22} & {\cdots} & a_{2n}+b_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ a_{m1}+b{m1} & a_{m2}+b_{m2} & {\cdots} & a_{mn}+b_{mn}\\ \end{vmatrix}

矩阵的加法满足下列运算律(ABC都是同型矩阵):

A+B=B+A(A+B)+C=A+(B+C)A + B = B + A \\ (A + B) + C = A + (B + C)

减法

​ 同加法

数乘

举例子:

2[183425]=[21282(3)242(2)25]=[21668410]通项公式:na11a12a1na21a22a2nam1am2amn=na11na12na1nna21na22na2nnam1nam2namn2*\begin{bmatrix} 1&8&-3\\ 4&-2&5\\ \end{bmatrix}= \begin{bmatrix} 2*1&2*8&2*(-3)\\ 2*4&2*(-2)&2*5\\ \end{bmatrix}= \begin{bmatrix} 2&16&-6\\ 8&-4&10\\ \end{bmatrix} \\ \\ \\ \\ 通项公式:n * \begin{vmatrix} a_{11} & a_{12} & {\cdots} & a_{1n}\\ a_{21} & a_{22} & {\cdots} & a_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ a_{m1} & a_{m2} & {\cdots} & a_{mn}\\ \end{vmatrix} = \begin{vmatrix} n*a_{11} & n* a_{12} & {\cdots} & n* a_{1n}\\ n*a_{21} & n*a_{22} & {\cdots} &n* a_{2n}\\ {\vdots}&{\vdots}&{\ddots} & {\vdots} \\ n*a_{m1} & n*a_{m2} & {\cdots} & n*a_{mn}\\ \end{vmatrix}

矩阵的数乘满足一下运算律:

λ(υA)=υ(λA)λ(υA)=(υλ)A(λ+υ)A=υA+λAλ(A+B)=λA+λB\lambda(\upsilon A) = \upsilon(\lambda A) \\ \lambda(\upsilon A) = (\upsilon\lambda) A \\ (\lambda+\upsilon) A = \upsilon A + \lambda A \\ \lambda(A+B) = \lambda A + \lambda B

矩阵的加减法和矩阵的数乘合成矩阵的线性运算

转置

把矩阵A的行和列互相交换所产生的矩阵称为A的转置矩阵(ATA^T) ,这一过程称为矩阵的转置

eg:

[243028]=[204238]矩阵的转置满足一下运算律:(AT)T=A(λA)T=λAT(AB)T=ATBT\\ \begin{bmatrix} 2&4&3\\ 0&-2&8\\ \end{bmatrix}= \begin{bmatrix} 2&0\\ 4&-2\\ 3&8\\ \end{bmatrix} \\ 矩阵的转置满足一下运算律: \\ (A^T)^T = A\\ (\lambda A)^T = \lambda A^T\\ (AB)^T = A^TB^T

共轭

共轭在数学、物理、化学、地理等学科中都有出现。 本意:两头牛背上的架子称为轭,轭使两头牛同步行走。共轭即为按一定的规律相配的一对。通俗点说就是孪生。

共轭复数

两个实部相等,虚部互为相反数的复数互为共轭复数(conjugate complex number)。(当虚部不等于0时也叫共轭虚数)复数z的共轭复数记作Z\overline Z,有时也可表示为ZZ^*。根据定义,若Z=a+ib(a,b∈R),则Z\overline Z =a-ib(a,b∈R)。在复平面上,共轭复数所对应的点关于实轴对称。

矩阵的共轭定义为(A)i,j=Ai,j(A)_{i,j} = \overline {A_{i,j}}.

一个2×2复数矩阵的共轭(实部不变,虚部取负)如下所示:

A=[3+i522ii]A的共轭为A=[3i52+2ii]A = \begin{bmatrix} 3+i&5\\ 2-2i&i\\ \end{bmatrix} \\A的共轭为 \\ \overline A = \begin{bmatrix} 3-i&5\\ 2+2i&i\\ \end{bmatrix}

共轭转置

把矩阵转置后,再把每一个数换成它的共轭复数。

矩阵的共轭转置定义为:

(A)i,j=Aj,i亦可以写为A=(A)T=AT=AH(A^*)_{i,j} = \overline{A_{j,i}}\\ 亦可以写为 A^* = (\overline A)^T = \overline {A^T} = A^H

一个2×2复数矩阵的共轭转置如下所示:

A=[3+i522ii]A的共轭为A=[3i2+2i5i]A = \begin{bmatrix} 3+i&5\\ 2-2i&i\\ \end{bmatrix} \\A的共轭为 \\ \overline A = \begin{bmatrix} 3-i&2+2i\\ 5&-i\\ \end{bmatrix}

乘法

两个矩阵的乘法仅当第一个矩阵A的列数和另一个矩阵B的行数相等时才能定义。如Am×n矩阵和Bn×p矩阵,它们的乘积C是一个m×p矩阵,C=cijC=(c_{ij})它的一个元素:

ci,j=ai,1b1,j+ai,2b2,j+...+ai,nbn,j=r=1nai,rbr,jc_{i,j}=a_{i,1}b_{1,j} + a_{i,2}b_{2,j} + ... + a_{i,n}b_{n,j} = \sum_{r=1}^na_{i,r}b_{r,j}

此乘积可记为:C=ABC=AB

例如:

[102131][312110]=[13+02+2111+01+2013+32+1111+31+10]=[5142]\begin{bmatrix} 1&0&2\\ -1&3&1\\ \end{bmatrix} * \begin{bmatrix} 3&1\\ 2&1\\ 1&0\\ \end{bmatrix}= \begin{bmatrix} 1*3 + 0*2 + 2*1 & 1*1 + 0*1 + 2* 0\\ -1 * 3 + 3*2 + 1*1 & -1*1+3*1 + 1*0\\ \end{bmatrix}= \begin{bmatrix} 5&1\\ 4&2\\ \end{bmatrix}

矩阵的乘法满足一下运算律:

结合律:(AB)C=A(BC)(AB)C=A(BC)

分配律:(A+B)C=AC+BC(A+B)C=AC +BC || C(A+B)=CA+CBC(A+B) = CA +CB

矩阵乘法不满足交换律 (AB=BAA*B = B*A

如何在代码中实现矩阵的乘法呢?

我们可以把矩阵当成二维数组来处理。那么我们得到矩阵相乘的代码为

type TwoDArr = Array<Array<number>>;
// 矩阵相乘 multiply
function multi(a: TwoDArr, b: TwoDArr) {
  const res: TwoDArr = [];
  console.log('b===>',b);
  
  const row1 = a.length,
    row2 = b.length,
    col1 = a[0].length,
    col2 = b[0].length;
  if (col1 !== row2) {
    return new Error('not a right matrix to multiply');
  }
  // 初始化结果数组
  for (let i = 0; i < row1; i++) {
    res[i] = new Array(col2).fill(0);
  }
  for (let i = 0; i < row1; i++) {
    for (let j = 0; j < col2; j++) {
      for (let k = 0; k < col1; k++) {
        res[i][j] += a[i][k] * b[k][j];
        console.log(res[i][j], i, j, k);
      }
    }
  }
  return res;
}

矩阵快速幂

根据整数快速幂的原理,我们直接带入到矩阵的计算。

需要注意的是单位矩阵的构建。

// Matrix ^n 如何解答
/**
 *
 * @param a 底数
 * @param n 指数
 */
function mat_pow(a: TwoDArr, n: number) {
  const len = a.length;
  let res: TwoDArr = [];
  for (let i = 0; i < len; i++) {
    res[i] = new Array(len).fill(0);
    res[i][i] = 1;
  }
  console.log('res ===>', res);
  
  while (n) {
    if (n & 1) res = multi(res, a) as TwoDArr;
    a = multi(a, a) as TwoDArr;
    n >>= 1;
  }
  return res;
}

索引

基本数学公式语法(of MathJax)

LaTeX百度百科

LaTeX

MathJax