编程需不需要数学?很多人可能认为数学在编程中并没有什么重要的作用,最多进行简单的加减乘除。当前其实数学在编程中有着至关重要的作用。当你想写一个人工智能时,一个简单的图像识别就需要用到矩阵,向量的运算,甚至还要用到积分。当你设计一个游戏时你需要用到向量来计算人物的移动,还需要计算人物的攻击力等参数使每个人物都有自己的优缺点。甚至连一个简单的图片压缩都要用到积分,编码的计算。没有数学你在编程中只能做最肤浅的事情。
1.什么是矩阵
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。
形如:
A=[123456789]
\left[
\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{matrix}
\right]
⎣⎡147258369⎦⎤
1.上面的为三维矩阵
X维矩阵就是x*x的一个矩形
2.第m行第n个元素记为a_{mn}或A[m,n]
2.矩阵的加减法
运算法则
假设A= [a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn]
\left[
\begin{matrix}
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{matrix}
\right]
⎣⎢⎢⎢⎡a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn⎦⎥⎥⎥⎤
,B=[b11b12⋯b1nb21b22⋯b2n⋮⋮⋱⋮bm1bm2⋯bmn]
\left[
\begin{matrix}
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{matrix}
\right]
⎣⎢⎢⎢⎡b11b21⋮bm1b12b22⋮bm2⋯⋯⋱⋯b1nb2n⋮bmn⎦⎥⎥⎥⎤则:
A±B=[a11±b11a12±b12⋯a1n±b1na21±b21a22±b22⋯a2n±b2n⋮⋮⋱⋮am1±bm1am2±bm2⋯amn+bmn] \left[ \begin{matrix} a_{11}±b_{11} & a_{12}±b_{12} & \cdots & a_{1n}±b_{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{matrix} \right] ⎣⎢⎢⎢⎡a11±b11a21±b21⋮am1±bm1a12±b12a22±b22⋮am2±bm2⋯⋯⋱⋯a1n±b1na2n±b2n⋮amn+bmn⎦⎥⎥⎥⎤
3.矩阵的乘法
a.A×c型
假设
A=[a11a12a1na21a22a2nam1am2amn]
\left[
\begin{matrix}
a_{11} & a_{12} & a_{1n} \\
a_{21} & a_{22} & a_{2n} \\
a_{m1} & a_{m2} & a_{mn}
\end{matrix}
\right]
⎣⎡a11a21am1a12a22am2a1na2namn⎦⎤,常数c
则A×c=[a11∗ca12∗ca1n∗ca21∗ca22∗ca2n∗cam1∗cam2∗camn∗c] \left[ \begin{matrix} a_{11}*c & a_{12}*c & a_{1n}*c \\ a_{21}*c & a_{22}*c & a_{2n}*c \\ a_{m1}*c & a_{m2}*c & a_{mn}*c \end{matrix} \right] ⎣⎡a11∗ca21∗cam1∗ca12∗ca22∗cam2∗ca1n∗ca2n∗camn∗c⎦⎤
b.A×B型
1、用A的第1行各个数与B的第1列各个数对应相乘后加起来,就是乘法结果中第1行第1列的数;
2、用A的第1行各个数与B的第2列各个数对应相乘后加起来,就是乘法结果中第1行第2列的数;
3、用A的第1行各个数与B的第3列各个数对应相乘后加起来,就是乘法结果中第1行第3列的数;
依次进行,(直到)用A的第1行各个数与B的第末列各个数对应相乘后加起来,就是乘法结果中第1行第末列的的数。
二、
1、用A的第2行各个数与B的第1列各个数对应相乘后加起来,就是乘法结果中第2行第1列的数;
2、用A的第2行各个数与B的第2列各个数对应相乘后加起来,就是乘法结果中第2行第2列的数;
3、用A的第2行各个数与B的第3列各个数对应相乘后加起来,就是乘法结果中第2行第3列的数;
依次进行,(直到)用A的第2行各个数与B的第末列各个数对应相乘后加起来,就是乘法结果中第2行第末列的的数。
依次进行,
(直到)用A的第末行各个数与B的第1列各个数对应相乘后加起来,就是乘法结果中第末行第1列的数;
用A的第末行各个数与B的第2列各个数对应相乘后加起来,就是乘法结果中第末行第2列的数;
用A的第末行各个数与B的第3列各个数对应相乘后加起来,就是乘法结果中第末行第3列的数;
依次进行,
(直到)用A的第末行各个数与B的第末列各个数对应相乘后加起来,就是乘法结果中第末行第末列的的数。