编程需不需要数学?很多人可能认为数学在编程中并没有什么重要的作用,最多进行简单的加减乘除。当前其实数学在编程中有着至关重要的作用。当你想写一个人工智能时,一个简单的图像识别就需要用到矩阵,向量的运算,甚至还要用到积分。当你设计一个游戏时你需要用到向量来计算人物的移动,还需要计算人物的攻击力等参数使每个人物都有自己的优缺点。甚至连一个简单的图片压缩都要用到积分,编码的计算。没有数学你在编程中只能做最肤浅的事情。
1.什么是矩阵
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。
形如:
A=
[
1
2
3
4
5
6
7
8
9
]
\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=
[
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋱
⋮
a
m
1
a
m
2
⋯
a
m
n
]
\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=
[
b
11
b
12
⋯
b
1
n
b
21
b
22
⋯
b
2
n
⋮
⋮
⋱
⋮
b
m
1
b
m
2
⋯
b
m
n
]
\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= [ a 11 ± b 11 a 12 ± b 12 ⋯ a 1 n ± b 1 n a 21 ± b 21 a 22 ± b 22 ⋯ a 2 n ± b 2 n ⋮ ⋮ ⋱ ⋮ a m 1 ± b m 1 a m 2 ± b m 2 ⋯ a m n + b m n ] \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=
[
a
11
a
12
a
1
n
a
21
a
22
a
2
n
a
m
1
a
m
2
a
m
n
]
\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= [ a 11 ∗ c a 12 ∗ c a 1 n ∗ c a 21 ∗ c a 22 ∗ c a 2 n ∗ c a m 1 ∗ c a m 2 ∗ c a m n ∗ 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的第末列各个数对应相乘后加起来,就是乘法结果中第末行第末列的的数。