寫在前面:文章里面的圖片公式都是逆天一個個打出來畫出來的,公式系列基本上都提供了源碼
圖片基本上不太加水印了,加了的也留了空間可以讓你裁剪去水印,這樣你引用也比較方便 ~
但是還是想說下:”加個參考鏈接唄,逆天寫作也不容易啊~“
在線預覽:http://github.lesschina.com/python/ai/math/數學基礎.html
1.基礎概念¶
線性代數研究的是什么內容?
- 把2維世界轉換成2維的世界
- 把3維世界轉換成2維的世界
- 把2維世界轉換成3維的世界
1維直線、2維平面(長寬)、3維空間(長寬高 | xyz軸)、4維時空(xyz軸+時間軸)
學習中主要就是學習矩陣、向量等,理解線性映射、特征值和特征向量等。
總結:線性代數就是一門將M維世界與N維世界聯系起來的學科
1.1.數的分類¶
一開始人們用的數都是 自然數 (0、1、2...)來計算
后來發現用小數減大數就沒法計算了。eg:1-2=?
接着就引入了負數,然后常用的數就變成了 整數 (正整數、0、負整數),這樣就可以快樂的加減乘運算
整數:
- 自然數
- 負數
后來發現,像1/3=?這類的不能整除了,於是就引入了分數,
這樣數的界限又擴充了,就叫 有理數 ,這樣加減乘除都可以通過分數來表示了
有理數(分數):
- 整數
- 正整數
- 0
- 負整數
好景不長,之后求圓面積啥的,又發現了像π、√3這類的,沒法用分數表示的數,
於是就又在原有基礎上擴展了,加入了無理數,數的界限又擴展了==> 實數
實數(小數):
- 有理數(分數)
- 整數
- 正整數
- 0
- 負整數
- 非整數的有理數
- 整數
- 無理數
這下總算可以了吧,可事實往往出乎意料,像二次曲線求解有無解的情況(曲線跟x軸不相交)
這太不科學了吧,然后就引入了 虛數i 的概念,並定義i²=-1,數的范圍又擴大了,就叫 復數
舉個例子(后面有推導):
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}$$
以前我們遇到:x²+3=0,因為判別式b²-4ac<0 所以方程無解(或者曲線畫出來,看跟x軸有幾個交點==>就說明有幾個解)
其實我們中學學的這個無解,指的是在實數范圍內無解
引入虛數后:x²+3=0==> x²-(-3)=0,因為i²=-1 ==> (x+√3i)(x-√3i)=0 有解了
# 畫個圖看看曲線長什么樣
import matplotlib.pyplot as plt
# 生成x和y的值
x_list = list(range(-10, 11))
y_list = [x**2 + 3 for x in x_list] # 2**3 ==> 8 **是Python里面的冪運算符
print(x_list)
print(y_list)
# 畫圖
plt.plot(x_list, y_list)
# 顯示圖片
plt.show()
綜上所述,數可以分為:
復數:z = a+bi,i² = -1
- 實數(虛部b=0)
- 有理數
- 整數
- 正整數:1、2、3
- 0
- 負整數:-1、-2、-3
- 非整數的有理數([正負]分數)
- [正負]有限小數:0.3 ==> (3/10)
- [正負]循環小數:0.3333... (1/3)
- 整數
- 無理數
- 無限不循環小數:π、√3
- 有理數
- 虛數(虛部b!=0)
- 純虛數(虛部b!=0,且實部a=0)
- 非純虛數
擴展:二次方程求解公式的推導¶
這個應該是初中學的,很多學校教數學就讓背公式,其實這樣容易忘記(你好幾年不接觸數學公式還記得?)會推導才是根本 :
其實不僅僅是數學公式了,很多程序中的算法也是這樣,都是需要推導的,不然只能用而不能深究,就更不提創新了。不扯了,進入正題:
$\mathbf{ax^2+bx+c=0(a\neq0)}$
要求x,那我們先兩邊同時除以a:
$\mathbf{x^2+\frac{b}{a}x+\frac{c}{a}=0}$
把和x沒關系的常數移到等號另一邊:
$\mathbf{x^2+\frac{b}{a}x=-\frac{c}{a}}$
看到左邊就想到了 ==> $x^2+2ax+a^2$ 我們來湊一下:
$\mathbf{x^2+2*\frac{b}{2a}x+(\frac{b}{2a})^2=(\frac{b}{2a})^2-\frac{c}{a}}$
因為:$x^2+2ax+a^2=(x+a)^2$ 所以可以轉換成:
$\mathbf{(x+\frac{b}{2a})^2=(\frac{b}{2a})^2-\frac{c}{a}}$
把右邊化簡一下:
$\mathbf{(x+\frac{b}{2a})^2=\frac{b^2}{4a^2}-\frac{4ac}{4a^2}=\frac{b^2-4ac}{4a^2}}$
去左邊平方(右邊開根號):
$\mathbf{x+\frac{b}{2a}=\frac{ \pm \sqrt{b^2-4ac}}{2a}}$
把左邊的常數移過去:
$\mathbf{x=\frac{-b \pm \sqrt{b^2-4ac}}{2a}}$
方便有需求的人,推導過程的源碼貼一下:
$ax^2+bx+c=0(a\neq0)$
要求x,那我們先兩邊同時除以a:
$x^2+\frac{b}{a}x+\frac{c}{a}=0$
把和x沒關系的常數移到等號另一邊:
$x^2+\frac{b}{a}x=-\frac{c}{a}$
看到左邊就想到了 ==> $x^2+2ax+a^2$ 我們來湊一下:
$x^2+2*\frac{b}{2a}x+(\frac{b}{2a})^2=(\frac{b}{2a})^2-\frac{c}{a}$
因為:$x^2+2ax+a^2=(x+a)^2$ 所以可以轉換成:
$(x+\frac{b}{2a})^2=(\frac{b}{2a})^2-\frac{c}{a}$
把右邊化簡一下:
$(x+\frac{b}{2a})^2=\frac{b^2}{4a^2}-\frac{4ac}{4a^2}=\frac{b^2-4ac}{4a^2}$
去左邊平方(右邊開根號):
$x+\frac{b}{2a}=\frac{ \pm \sqrt{b^2-4ac}}{2a}$
把左邊的常數移過去:
$x=\frac{-b \pm \sqrt{b^2-4ac}}{2a}$
1.2.命題相關¶
命題中學階段就接觸了,我們來先說說命題 :可以判斷真假的語句叫做命題
比如:小明是個男的,這個不管對錯肯定有個確定的答案
再比如:小明是活潑好學的孩子,這個就不一定了,公說公有理婆說婆有理,這種結果模糊不確定的就不是命題
充分條件和必要條件
這個時間長了容易混淆,舉個例子:小明是人類,人類是小明
通過小明肯定能推出他是個人,這個就叫必要條件
人就一定是小明嗎?不一定吧 ==> 這個就是充分條件
如果P成立,Q就成立是真命題時,就可以表示為:P=>Q (由P肯定能推導出Q)(eg:小明=>人):
P是Q的必要條件Q是P的充分條件
充分必要條件:
如果P=>Q,而且Q=>P,那么:
P是Q的充分必要條件Q是P的充分必要條件
表示為:P<=>Q
1.3.集合系列¶
集合應該是剛上高中那會教的內容,我們來看看:
集合 (Python里面用 set 來表示):某種特定性質的對象,匯總成的集體(人以類聚,物以群分) 這些對象稱為該集合的元素。
集合中的元素有三個特征:
- 確定性(集合中的元素必須是確定的)
- 互異性(集合中的元素互不相同)eg:集合A={1,a},則a不能等於1)
- 無序性(集合中的元素沒有先后之分)eg:集合{3,4,5}和{3,5,4}是同一個集合
表示方式,eg:10以內的偶數:
X = {0, 2, 4, 6, 8}X = {2n | n = 0, 1, 2, 3, 4}
當x是X集合里面的元素時,可以表示為:x ∈ X eg:2 ∈ X
# Python3 Code
X = set([x for x in range(10) if x%2==0])
print(X)
# 當x是X集合里面的元素時,可以表示為:x ∈ X
# eg:2 ∈ X
2 in X
子集 :當一個集合A里面所有元素都屬於集合B時,稱A是B的子集。即:A ⊆ B
eg:集合A:{1,2,3} 集合B:{1,2,3,4} ==> A ⊆ B
如果兩個集合A和B的元素完全相同,則稱A與B兩個集合相等,記為 A=B:
集合A:{1,2,3,4} 集合B:{1,2,3,4} ==> A ⊆ B and B ⊆ A ==> A = B
真子集 :如果集合A是集合B的子集A ⊆ B,並且集合B中至少有一個元素x∉A,那么集合A叫做集合B的真子集
簡單講:如果A包含於B,且A不等於B,就說集合A是集合B的真子集(A有的B全有,B有的A不一定有)
如果集合A中任意一個元素都是集合B中的元素,我們就說這兩個集合有包含關系,稱集合A為集合B的子集。可知任一集合A是自身的子集,空集是任一集合的子集。真子集就是一個集合中的元素全部是另一個集合中的元素,但不存在相等。所有亞洲國家組成的集合是地球上所有國家組成的集合的真子集;所有自然數的集合是所有整數的集合的真子集。
A = set([1,2,3])
B = set([1,2,3,4])
print(A)
print(B)
# 子集(判斷A是否是B的子集)
A.issubset(B)
# 父集(B是否是A的父集)
B.issuperset(A)
A = B
A.issubset(B)
並集 :由所有屬於集合A或屬於集合B的元素所組成的集合,讀作“A並B”(或“B並A”)並集越並越多,而且沒有重復元素。
記作A∪B or B∪A,即 A∪B={x|x∈A,或x∈B}
交集 :由屬於A且屬於B的相同元素組成的集合,讀作“A交B”(或“B交A”)交集越交越少。
記作A∩B or B∩A,即 A∩B={x|x∈A,且x∈B}
若A包含B,則A∩B=B,A∪B=A
差集 :A,B是兩個集合,所有x∈A且x∉B的元素構成的集合,叫做集合A減集合B(或集合A與集合B之差)
類似地,對於集合A、B,我們把集合 A-B={x∣x∈A,且x∉B} 叫做A與B的差集(把B中元素從A中減去)
補集 :一般指絕對補集,即一般地,設S是一個集合,A是S的一個子集(S包含於A)(大前提),由S中所有不屬於A的元素組成的集合,叫做子集A在S中的絕對補集。
擴展:在集合論和數學的其他分支中,存在補集的兩種定義:相對補集和絕對補集
set1=set([1,2,5])
set2=set([2,4,6])
print(set1)
print(set2)
# 交集 A∩B={x|x∈A,且x∈B}
set1 & set2
# 並集 A∪B={x|x∈A,或x∈B}
set1 | set2
# 差集 A-B={x∣x∈A,且x∉B}
set1 - set2
set3=set(list(range(10)))
print(set3)
# 【大前提】set2是set3的一個子集(set3包含於set2)
set2.issubset(set3)
# 這時候求差集,就等於求補集
set3 - set2
1.4.映射系列(映射、像、定義域和值域、滿單射、雙射、逆映射、線性映射等)¶
這個系列應該是高一的知識
1.映射與像 :¶
設A,B是兩個非空的集合,如果按某一個確定的對應關系f,使對於集合A中的任意一個元素x,在集合B中都有唯一的元素y與之對應,那么就稱對應的規則f 為從集合A到集合B的映射 一般這樣表示:f:A → B。其中,y稱為元素x在映射f下的 像 ,記作:y=f(x)。
通俗講:
把使集合A的元素與集合B的元素相對應的規則叫做 “集合A到集合B的映射”
如果從A集合中取元素x,通過f得到其對應B集合的元素y。這個新的元素就叫做:“x通過映射f形成的像”
像這個說的還是有點抽象,舉個簡單的例子:
高中的時候經常做這樣的練習:f(x)=2x+1
用映射來解釋就是:“映射 f 是使集合B的元素 2x+1 與集合A的元素 x 相對應的規則”
再解釋像就簡單了:f(2)
x=2 通過 f 形成的像是 2*2+1 
2.值域和定義域:¶
我們把映像f產生的值組成一個集合{f(0)、f(1)、f(2)...},這個集合就叫做“映像f的值域”。
而x值組成的集合 {0、1、2...} 就叫做“映像f的定義域”。
這個值域的集合往往是集合B的子集:$\lbrace f(x_1),f(x_2)...f(x_n)\rbrace \subseteq B$
比如說:f(x)=2x+1 定義域A{0、1、2、3},那么求出來的值域是:{1、3、5、7},而B集合是{1、3、5、7、8} 
4.逆映射:¶
這次先不定義,先看個圖: 
看完圖基本上懂了(映射g就是映射f的逆映射),現在來定義一下:
逆映射 :
當f是雙射(一一對應的單射)並且映射f和映射g滿足:
- g(f(x))=x
- f(g(x))=x
那么映射g就是映射f的逆映射,表示方式:$f^{-1}:B\rightarrow A$
5.線性映射¶
后面說線性回歸之類的代碼和數學知識時會講,這邊因為也是屬於映射內容,所以簡單提一下定義:
假設 $x_1$ 和 $x_2$ 是屬於A集合中的任意元素,c 為任意實數,f 為從A到B的映射。
當映射f滿足以下兩個條件:
- $f(x_1)+f(x_2)=f(x_1+x_2)$
- $cf(x_1)=f(cx_1)$
那么映射f就是從A到B的線性映射
舉個例子:f(x)=x 驗證一下:是線性映射
$f(x_1)+f(x_2)=x_1+x_2=f(x_1+x_2)$
$cf(x_1)=cx_1=f(cx_1)$
再測試一個不是的:f(x)=x+1 驗證一下:
$f(x_1)+f(x_2)=x_1+x_2+2$
$f(x_1+x_2)=x_1+x_2+1$
$f(x_1)+f(x_2)\neq f(x_1+x_2)$
后面都不用驗證了,不是線性映射
1.5.排列組合¶
這個應該是高二的時候學的,簡單提一下
排列組合 :
- 排列:從給定個數的元素中取出指定個數的元素進行排序
- 組合:從給定個數的元素中僅僅取出指定個數的元素,不考慮排序
通俗講:
組合個數:“從n個中挑出r個的個數” 一般用 $C^r_n$ 來表示(n>=r)
$\Large {C^r_n=\frac{n!}{r!(n-r)!}}$
排列個數:“從n個中挑出r個的個數,然后再把選好的r個事物按照順序排列的種數” 一般用 $A^r_n$ 來表示(n>=r)
$\Large {A^r_n=r!C^r_n=\frac{n!}{(n-r)!}}$
如果還抽象的話,我們來看個案例:
小明請小潘和小張一起去食堂吃飯,食堂今天總共有5個菜
1.試問,他們從5個菜中選出3個不同的菜,有幾種可能性?
假設有A、B、C、D、E這5個菜,那選出3個有如下組合(不管順序):
| 列舉 | 列舉 | 列舉 | 列舉 | 列舉 | 列舉 |
|---|---|---|---|---|---|
| ABC | ABD | ABE | ACD | ACE | ADE |
| BCD | BCE | BDE | |||
| CDE |
$\large {C^3_5=\frac{5!}{3!(5-3)!}=\frac{5×4×3×2×1}{3×2×1×2×1}=10}$
2.試問,選出的這3個菜有幾種排放順序?
假設選出的是A、B、C這3個菜,那它的排序有幾種可能:
| 序號 | 列舉 | 列舉 |
|---|---|---|
| A | ABC | ACB |
| B | BAC | BCA |
| C | CAB | CBA |
其實無論選擇哪3種,他們的排序都是6種,3!=3×2×1=6
簡單分析一下:
第一道菜可以在已經選好的菜里面選1個,那就是3種可能
第二道菜可以在剩下的2道菜中選1個,那就是2種可能(第一道剛才選好了,已經算確定的了)
第三道菜不用選了,因為現在只剩下1道了,那就是1種可能
所以有 3×2×1種可能==>3!=6種可能
3.試問,從5個菜中選出3個不同的菜,並按順序打包帶走總共有多少種可能?
排列的個數其實就是:5選3組合個數 × 3道菜可能的排序 = 10 × 6 =60
$\large {A^3_5=\frac{5!}{(5-3)!}=\frac{5×4×3×2×1}{2×1}=60}$
簡單分析推導一下:
第一個菜可以在5道菜里面選一個,那就是5種可能
第二道菜可以在剩下的4道菜里面選一個,那就是4種可能
第三道菜可以在剩下的3道菜里面選一個,那就是3種可能
那總共可能性就是:5×4×3=60種可能性,和上面公式計算一樣結果
排列、組合、二項式定理公式口訣:
加法乘法兩原理,貫穿始終的法則。與序無關是組合,要求有序是排列。
兩個公式兩性質,兩種思想和方法。歸納出排列組合,應用問題須轉化。
排列組合在一起,先選后排是常理。特殊元素和位置,首先注意多考慮。
不重不漏多思考,捆綁插空是技巧。排列組合恆等式,定義證明建模試。
關於二項式定理,中國楊輝三角形。兩條性質兩公式,函數賦值變換式。

其實老版本的教科書還有一種說法叫做:”當映射f的值域等於集合B時,f為
