天天看點

碼農眼中的數學之~數學基礎

寫在前面:文章裡面的圖檔公式都是逆天一個個打出來畫出來的,公式系列基本上都提供了源碼

圖檔基本上不太加水印了,加了的也留了空間可以讓你裁剪去水印,這樣你引用也比較友善 ~

但是還是想說下:”加個參考連結呗,逆天寫作也不容易啊~“

線上預覽:http://github.lesschina.com/python/ai/math/數學基礎.html

線性代數研究的是什麼内容?

把2維世界轉換成2維的世界

把3維世界轉換成2維的世界

把2維世界轉換成3維的世界

1維直線、2維平面(長寬)、3維空間(長寬高 | xyz軸)、4維時空(xyz軸+時間軸)

學習中主要就是學習<code>矩陣</code>、<code>向量</code>等,了解<code>線性映射</code>、<code>特征值</code>和<code>特征向量</code>等。

總結:線性代數就是一門将M維世界與N維世界聯系起來的學科

一開始人們用的數都是 自然數 (0、1、2...)來計算

後來發現用小數減大數就沒法計算了。eg:<code>1-2=?</code>

接着就引入了<code>負數</code>,然後常用的數就變成了 整數 (正整數、0、負整數),這樣就可以快樂的<code>加減乘</code>運算

整數:

自然數

負數

後來發現,像<code>1/3=?</code>這類的不能整除了,于是就引入了<code>分數</code>,

這樣數的界限又擴充了,就叫 有理數 ,這樣加減乘除都可以通過分數來表示了

有理數(分數):

整數

正整數

負整數

好景不長,之後求圓面積啥的,又發現了像<code>π、√3</code>這類的,沒法用分數表示的數,

于是就又在原有基礎上擴充了,加入了<code>無理數</code>,數的界限又擴充了==&gt; 實數

實數(小數):

有理數(分數)

非整數的有理數

無理數

這下總算可以了吧,可事實往往出乎意料,像二次曲線求解有無解的情況(曲線跟x軸不相交)

這太不科學了吧,然後就引入了 <code>虛數</code>i 的概念,并定義<code>i²=-1</code>,數的範圍又擴大了,就叫 複數

舉個例子(後面有推導):

$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}$$

以前我們遇到:<code>x²+3=0</code>,因為判别式<code>b²-4ac&lt;0</code> 是以方程無解(或者曲線畫出來,看跟x軸有幾個交點==&gt;就說明有幾個解)

其實我們中學學的這個無解,指的是在實數範圍内無解

引入虛數後:<code>x²+3=0</code>==&gt; <code>x²-(-3)=0</code>,因為<code>i²=-1</code> ==&gt; <code>(x+√3i)(x-√3i)=0</code> 有解了

In [1]:

In [2]:

碼農眼中的數學之~數學基礎

綜上所述,數可以分為:

複數:<code>z = a+bi,i² = -1</code>

實數(虛部b=0)

有理數

正整數:1、2、3

負整數:-1、-2、-3

非整數的有理數([正負]分數)

[正負]有限小數:0.3 ==&gt; (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}}$

看到左邊就想到了 ==&gt; $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}}$

友善有需求的人,推導過程的源碼貼一下:

命題中學階段就接觸了,我們來先說說命題 :可以判斷真假的語句叫做命題

比如:<code>小明是個男的</code>,這個不管對錯肯定有個确定的答案

再比如:<code>小明是活潑好學的孩子</code>,這個就不一定了,公說公有理婆說婆有理,這種結果模糊不确定的就不是命題

充分條件和必要條件

這個時間長了容易混淆,舉個例子:<code>小明是人類</code>,<code>人類是小明</code>

通過小明肯定能推出他是個人,這個就叫必要條件

人就一定是小明嗎?不一定吧 ==&gt; 這個就是充分條件

如果P成立,Q就成立是真命題時,就可以表示為:<code>P=&gt;Q</code> (由P肯定能推導出Q)(eg:<code>小明=&gt;人</code>):

<code>P是Q的必要條件</code>

<code>Q是P的充分條件</code>

充分必要條件:

如果<code>P=&gt;Q</code>,而且<code>Q=&gt;P</code>,那麼:

<code>P是Q的充分必要條件</code>

<code>Q是P的充分必要條件</code>

表示為:<code>P&lt;=&gt;Q</code>

集合應該是剛上高中那會教的内容,我們來看看:

集合 (Python裡面用 set 來表示):某種特定性質的對象,彙總成的集體(<code>人以類聚,物以群分</code>) 這些對象稱為該集合的元素。

集合中的元素有三個特征:

确定性(集合中的元素必須是确定的)

互異性(集合中的元素互不相同)eg:集合A={1,a},則a不能等于1)

無序性(集合中的元素沒有先後之分)eg:集合{3,4,5}和{3,5,4}是同一個集合

表示方式,eg:10以内的偶數:

<code>X = {0, 2, 4, 6, 8}</code>

<code>X = {2n | n = 0, 1, 2, 3, 4}</code>

當x是X集合裡面的元素時,可以表示為:<code>x ∈ X</code> eg:<code>2 ∈ X</code>

In [3]:

In [4]:

Out[4]:

子集 :當一個集合A裡面所有元素都屬于集合B時,稱A是B的子集。即:<code>A ⊆ B</code>

eg:集合A:{1,2,3} 集合B:{1,2,3,4} ==&gt; <code>A ⊆ B</code>

如果兩個集合A和B的元素完全相同,則稱A與B兩個集合相等,記為 <code>A=B</code>:

集合A:{1,2,3,4} 集合B:{1,2,3,4} ==&gt; <code>A ⊆ B</code> and <code>B ⊆ A</code> ==&gt; <code>A = B</code>

真子集 :如果集合A是集合B的子集<code>A ⊆ B</code>,并且集合B中至少有一個元素x∉A,那麼集合A叫做集合B的真子集

簡單講:<code>如果A包含于B,且A不等于B,就說集合A是集合B的真子集</code>(<code>A有的B全有,B有的A不一定有</code>)

如果集合A中任意一個元素都是集合B中的元素,我們就說這兩個集合有包含關系,稱集合A為集合B的子集。可知任一集合A是自身的子集,空集是任一集合的子集。真子集就是一個集合中的元素全部是另一個集合中的元素,但不存在相等。所有亞洲國家組成的集合是地球上所有國家組成的集合的真子集;所有自然數的集合是所有整數的集合的真子集。

In [5]:

In [6]:

Out[6]:

In [7]:

Out[7]:

In [8]:

Out[8]:

并集 :由所有屬于集合A或屬于集合B的元素所組成的集合,讀作“A并B”(或“B并A”)并集越并越多,而且沒有重複元素。

記作<code>A∪B</code> or <code>B∪A</code>,即 <code>A∪B={x|x∈A,或x∈B}</code>

交集 :由屬于A且屬于B的相同元素組成的集合,讀作“A交B”(或“B交A”)交集越交越少。

記作<code>A∩B</code> or <code>B∩A</code>,即 <code>A∩B={x|x∈A,且x∈B}</code>

若A包含B,則<code>A∩B=B,A∪B=A</code>

差集 :A,B是兩個集合,所有x∈A且x∉B的元素構成的集合,叫做集合A減集合B(或集合A與集合B之差)

類似地,對于集合A、B,我們把集合 <code>A-B={x∣x∈A,且x∉B}</code> 叫做A與B的差集(<code>把B中元素從A中減去</code>)

補集 :一般指絕對補集,即一般地,設S是一個集合,A是S的一個子集(S包含于A)(<code>大前提</code>),由S中所有不屬于A的元素組成的集合,叫做子集A在S中的絕對補集。

擴充:在集合論和數學的其他分支中,存在補集的兩種定義:相對補集和絕對補集

In [9]:

In [10]:

Out[10]:

In [11]:

Out[11]:

In [12]:

Out[12]:

In [13]:

In [14]:

Out[14]:

In [15]:

Out[15]:

這個系列應該是高一的知識

設A,B是兩個非空的集合,如果按某一個确定的對應關系f,使對于集合A中的任意一個元素<code>x</code>,在集合B中都有唯一的元素<code>y</code>與之對應,那麼就稱對應的規則<code>f</code> 為從集合A到集合B的<code>映射</code> 一般這樣表示:<code>f:A → B</code>。其中,<code>y</code>稱為元素<code>x</code>在映射<code>f</code>下的 <code>像</code> ,記作:<code>y=f(x)</code>。

通俗講:

把使集合A的元素與集合B的元素相對應的<code>規則</code>叫做 <code>“集合A到集合B的映射”</code>

如果從A集合中取元素<code>x</code>,通過<code>f</code>得到其對應B集合的元素<code>y</code>。這個新的元素就叫做:“<code>x通過映射f形成的像</code>”

<code>像</code>這個說的還是有點抽象,舉個簡單的例子:

高中的時候經常做這樣的練習:<code>f(x)=2x+1</code>

用映射來解釋就是:“映射 <code>f</code> 是使集合B的元素 <code>2x+1</code> 與集合A的元素 <code>x</code> 相對應的規則”

碼農眼中的數學之~數學基礎

再解釋像就簡單了:<code>f(2)</code>

<code>x=2</code> 通過 <code>f</code> 形成的像是 <code>2*2+1</code>

碼農眼中的數學之~數學基礎

我們把映像<code>f</code>産生的值組成一個集合<code>{f(0)、f(1)、f(2)...}</code>,這個集合就叫做“映像<code>f</code>的值域”。

而<code>x</code>值組成的集合 <code>{0、1、2...}</code> 就叫做“映像<code>f</code>的定義域”。

這個值域的集合往往是集合B的子集:$\lbrace f(x_1),f(x_2)...f(x_n)\rbrace \subseteq B$

比如說:<code>f(x)=2x+1</code> 定義域A{0、1、2、3},那麼求出來的值域是:{1、3、5、7},而B集合是{1、3、5、7、8}

碼農眼中的數學之~數學基礎

滿射:如果值域任何元素都有至少有一個變量與之對應,那這個映射就叫做滿射。

來個示意圖:f(x)=x$^2$

碼農眼中的數學之~數學基礎

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

單射:設f是由集合A到集合B的映射,如果所有x,y∈A,且x≠y,都有f(x)≠f(y),則稱f為由A到B的<code>單射</code>(函數f被稱為是單射時,對每一值域内的y,存在至多一個定義域内的x使得f(x) = y)

來個圖示:(兩種情況都是)

碼農眼中的數學之~數學基礎

雙射 (一一映射):既是單射又是滿射的映射稱為<code>雙射</code>

圖示:(偷個懶,拿上面的圖檔改改)

碼農眼中的數學之~數學基礎

這次先不定義,先看個圖:

碼農眼中的數學之~數學基礎

看完圖基本上懂了(映射<code>g</code>就是映射<code>f</code>的逆映射),現在來定義一下:

逆映射 :

當f是雙射(一一對應的單射)并且映射<code>f</code>和映射<code>g</code>滿足:

g(f(x))=x

f(g(x))=x

那麼映射<code>g</code>就是映射<code>f</code>的逆映射,表示方式:$f^{-1}:B\rightarrow A$

後面說線性回歸之類的代碼和數學知識時會講,這邊因為也是屬于映射内容,是以簡單提一下定義:

假設 $x_1$ 和 $x_2$ 是屬于A集合中的任意元素,<code>c</code> 為任意實數,<code>f</code> 為從A到B的映射。

當映射<code>f</code>滿足以下兩個條件:

$f(x_1)+f(x_2)=f(x_1+x_2)$

$cf(x_1)=f(cx_1)$

那麼映射<code>f</code>就是從A到B的線性映射

舉個例子:<code>f(x)=x</code> 驗證一下:是線性映射

$f(x_1)+f(x_2)=x_1+x_2=f(x_1+x_2)$

$cf(x_1)=cx_1=f(cx_1)$

再測試一個不是的:<code>f(x)=x+1</code> 驗證一下:

$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)$

後面都不用驗證了,不是線性映射

這個應該是高二的時候學的,簡單提一下

排列組合 :

排列:從給定個數的元素中取出指定個數的元素進行排序

組合:從給定個數的元素中僅僅取出指定個數的元素,不考慮排序

組合個數:“從<code>n</code>個中挑出<code>r</code>個的個數” 一般用 $C^r_n$ 來表示(n&gt;=r)

$\Large {C^r_n=\frac{n!}{r!(n-r)!}}$

排列個數:“從<code>n</code>個中挑出<code>r</code>個的個數,然後再把選好的r個事物按照順序排列的種數” 一般用 $A^r_n$ 來表示(n&gt;=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

ACB

B

BAC

BCA

C

CAB

CBA

其實無論選擇哪3種,他們的排序都是6種,3!=3×2×1=6

簡單分析一下:

第一道菜可以在已經選好的菜裡面選1個,那就是3種可能

第二道菜可以在剩下的2道菜中選1個,那就是2種可能(第一道剛才選好了,已經算确定的了)

第三道菜不用選了,因為現在隻剩下1道了,那就是1種可能

是以有 3×2×1種可能==&gt;3!=6種可能

3.試問,從5個菜中選出3個不同的菜,并按順序打包帶走總共有多少種可能?

排列的個數其實就是:<code>5選3組合個數 × 3道菜可能的排序</code> = 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種可能性,和上面公式計算一樣結果

排列、組合、二項式定理公式口訣:

以前在網上找的資料,你們有更好的可以貼一下(點我檢視)

下次和Numpy一起講,這樣才會~數學不枯燥,代碼不空洞

作者:毒逆天

出處:https://www.cnblogs.com/dotnetcrazy

打賞:<b>18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z</b>

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!