矩阵的乘法与利用矩阵求解线性方程组

    矩阵的乘法定义:假定A=\left ( a_{ij} \right )是一个m \times s的矩阵,B=\left (b_{ij} \right )是一个s \times n的矩阵,那么规定,矩阵A与矩阵B的乘积是一个m \times n的矩阵C=\left ( c_{ij} \right ),其中,c_{ij} = a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots +a_{is}b_{sj}=\sum\limits^s\limits_{k=1} a_{ik}b_{kj} (i=1,2,...,m; j=1,2,...,n)

    单看公式,可能理解有困难,我们直接上示例:

    矩阵乘法示例1:

\begin{pmatrix} 1 & 2 &3 \end{pmatrix}_{1\times 3}\times \begin{pmatrix} 4\\ 5 \\ 6 \end{pmatrix}_{3\times 1} = 1{\times}4+2{\times}5+3{\times}6 = 32

    矩阵乘法示例2:

\begin{pmatrix} 1\\ 2 \\ 3 \end{pmatrix}_{3\times1}{\times}\begin{pmatrix} 4 & 5 &6 \end{pmatrix}_{1\times3}=\begin{pmatrix} 1{\times}4 & 1{\times}5 & 1{\times}6 \\ 2{\times}4 &2{\times}5 &2{\times}6 \\ 3{\times}4 &3{\times}5 &3{\times}6 \end{pmatrix}_{3{\times}3}=\begin{pmatrix} 4 &5 &6 \\ 8& 10 &12 \\ 12& 15 &18 \end{pmatrix}_{3{\times}3}

    矩阵乘法示例3:

\begin{pmatrix} -2 &4 \\ 1& -2 \end{pmatrix}_{2\times2}{\times}\begin{pmatrix} 2 &4 \\ -3& -6 \end{pmatrix}_{2\times2}=\begin{pmatrix} -2{\times}2+4{\times}-3 &-2{\times}4+4{\times}-6 \\ 1{\times}2+-2{\times}-3 & 1{\times}4+-2{\times}-6 \end{pmatrix}_{2\times2}=\begin{pmatrix} -16 &-32 \\ 8 & 16 \end{pmatrix}_{2\times2}

    矩阵乘法示例4: 

\begin{pmatrix} 1 & 0 &0 \\ 0&2 &0 \\ 0&0 &3 \end{pmatrix}{\times}\begin{pmatrix} 1&1 &1 \\ 1 &1 &1 \\ 1& 1 &1 \end{pmatrix}=\begin{pmatrix} 1 & 1 &1 \\ 2& 2 &2 \\ 3& 3 & 3 \end{pmatrix}

    以上矩阵能够做乘法是因为他们的行和列正好满足:

    A矩阵的列数=B矩阵的行数。

     有一些矩阵就不满足这些条件,他们就不能做乘法,比如:

    A=\begin{pmatrix} 1 &1 \end{pmatrix} , B=\begin{pmatrix} 3 &3 \\ 3&3 \\ 3& 3 \end{pmatrix}

    他们不满足上面的条件,2!=3。所以他们不能做乘法。

    上面的示例,我们通过python编程,使用numpy库实现:

import numpy as np
A = np.array([[1,2,3]])
B = np.array([[4],[5],[6]])
C = np.matmul(A,B)
print(C)
print()
A = np.array([[1],[2],[3]])
B = np.array([[4,5,6]])
C = np.matmul(A,B)
print(C)
print()
A = np.array([[-2,4],[1,-2]])
B = np.array([[2,4],[-3,-6]])
C = np.matmul(A,B)
print(C)
print()
A = np.array([[1,0,0],[0,2,0],[0,0,3]])
B = np.array([[1,1,1],[1,1,1],[1,1,1]])
C = np.matmul(A,B)
print(C)

     运行,打印结果:

=====================================

    下面介绍矩阵变换在解线性方程组中的应用。

    假定有如下方程组:

\left\{\begin{matrix} x+2y+3z=3 \\ 4x+5y+6z=3 \\ 7x+8y+10z=4 \end{matrix}\right.

   我们可以转换如下的矩阵:

  \begin{bmatrix} 1 & 2 &3 \\ 4 & 5&6 \\ 7 & 8 &10 \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}=\begin{bmatrix} 3\\ 3\\ 4 \end{bmatrix}

   其中,\begin{bmatrix} 1 & 2 &3 \\ 4& 5 &6 \\ 7& 8 &10 \end{bmatrix}是系数矩阵,英文名为coefficient matrix。\begin{bmatrix} 3\\ 3\\ 4 \end{bmatrix}为常数项矩阵。

  有时候,我们会把系数矩阵和常数项矩阵合并。

  \begin{bmatrix} 1 &2 &3 &3 \\ 4 &5 &6 &3 \\ 7& 8 &10 &4 \end{bmatrix},这个矩阵叫增广矩阵,英文名为augmented matrix 。

    这种矩阵,直接计算未知量,有一些困难,我们需要人为作一些操作,将它化简,有一种叫做高斯约尔当消元法,英文名为Gauss Jordan。

    这种消元法其实就是我们最早解方程用的把方程进行系数相乘,相加,相减的办法。

    可以考虑先消除x,这里先用第一行分别 乘以 4,7然后与第二行,第三行相减。

\left\{\begin{matrix} 1x+2y+3z=3 \\ 0+3y+6z=9\\ 0+6y+11z=17 \end{matrix}\right.

    这个表达式里面可以使用第二行乘以 2 与 第三行作减法,消除y。

\left\{\begin{matrix} 1x+2y+3z=3\\ 0+3y+6z=9\\ 0+0+z=1 \end{matrix}\right.

    其实到这里,z已经解出来了,我们继续把z带入第二行,求出y=1,最后带入第一行,x=-2。

    上面的过程,貌似跟矩阵没什么关系,都是方程组基本变换。

    这个方程,用python语言结合numpy,scipy库可以计算出结果。

import numpy as np
from scipy.linalg import solve

A = np.array([[1,2,3],[4,5,6],[7,8,10]])
B = np.array([3,3,4])
C = solve(A,B)
print(C)

    运行结果截图:

    方程组也有无数解、无解的情况,无数解其实就是方程组最后化简,两条直线合并成了一条直线。无解就是两条直线不相交。关于无解其实就是最后化简会出现0=X 的情况,这里X是非0的任意值,这种情况是不成立的,比如0=1,所以无解。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

luffy5459

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

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

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

打赏作者

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

抵扣说明:

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

余额充值