人工智能之數學基礎篇—微積分
- 1 微積分的基本思想
- 2 微積分的解釋
- 3 定積分
- 3.1 定積分的定義
- 3.2 定積分的幾何含義
- 4 定積分的性質
- 5 牛頓一萊布尼茨公式
- 5.1 積分上限的函式及其導數
- 5.2 牛頓一萊布尼茨公式
- 5.3 牛頓一萊布尼茨公式的幾何解釋
- 6 綜合實體——Python中常用的定積分求解方法
- 7 Python中數值積分常用函式簡介
??微積分作為初等數學和高等數學的分水嶺,在現代科學中有著極其重要的作用,17世紀末 ,微積分的概念和技巧不斷擴展并被廣泛應用于解決天文學、物理學中的各種實際問題,例如,求瞬時速度 、 曲線切線 、 曲線長 、曲線圍成的面積 、 由面圍成的體積等問題 ,
??微積分是高等數學中研究函式的微分、積分及有關概念和應用的數學分支 , 是數學的一個基礎學科,內容包括極限 、 微分學、積分學及其應用 ,微分學包括導數運算,是一套關于變化率的理論,在人工智能之數學基礎篇—高等數學基礎中篇中已經介紹過;積分學包括積分運算,為計算面積、 體積、 水壓力等幾何物理問題提供一套通用的方法, 本文將主要介紹微積分的一些核心概念及如何利用Python編程工具來解決定積分相關的問題 ,
??在介紹微積分理論之前先來看一個小故事,微積分基本定理又稱為牛頓—萊布尼茨公式,從名字就可以看出兩個人對微積分的創立都做出了很大貢獻,但是在到底誰是微積分的創立者這一問題上,二人曾爭論不休,萊布尼茨和牛頓曾是好朋友,但因為這件事,萊布尼茨至死沒和牛頓和解,那到底是誰創立了微積分呢?后人核實,兩人各自獨立地創立了微積分,牛頓在研究物理中的運動問題程序中創立了微積分,而萊布尼茨是從幾何方面出發也獨立發現了微積分,所以又稱牛頓—萊布尼茨公式,

1 微積分的基本思想
??微積分以研究函式變化規律為目的,主要運用到的數學工具就是微分和積分,
??微分是對函式區域變化率的線性描述,微分學的基本思想是“無限細分”和“等效替代”,其幾何意義如圖1所示,設函式 y = f ( x ) y=f(x) y=f(x),假設函式上有一點 p p p,當點 p p p 在沿著橫坐標 Δ x \Delta x Δx 移動時,其在縱坐標上的變化范圍為 Δ y \Delta y Δy,如圖1(a)所示,特別的,當 p p p 的移動范圍足夠小時( lim ? Δ x → 0 d y = 0 , ? lim ? Δ x → 0 d x = 0 \lim_{\Delta x\rightarrow 0}dy=0,\: \lim_{\Delta x\rightarrow 0}dx=0 limΔx→0?dy=0,limΔx→0?dx=0,如圖1(b)所示), p p p 點縱坐標的變化值 Δ y \Delta y Δy 與該點切線的變化距離 d y dy dy 之間的差值 ∣ Δ y ? d y ∣ \left | \Delta y-dy \right | ∣Δy?dy∣ 比 Δ y \Delta y Δy 要小的多,這時可以用 p p p 點附近的一個切線段來近似替代原函式,

?? p p p 點切線的斜率是導數,而 f ( x ) ′ = d y d x f\left ( x \right )^{'}=\frac{dy}{dx} f(x)′=dxdy?,所以 d y = f ( x ) ′ d x dy = f\left ( x \right )^{'}dx dy=f(x)′dx,根據無窮小的概念, d x dx dx, d y dy dy 都是微分,
??積分是在確定函式的導數基礎上通過一定的數學方法對原函式進行求解的程序,積分的基本思想是通過微分的 “無限求和” 來進行的 , 微分是對函式的求導程序,因此可以將積分看作微分的一個逆向程序,其幾何意義如圖 2 所示,設函式 y = f ( x ) y=f(x) y=f(x) 把區間 [ a a a, b b b] 均分為 4 份,如圖2(a)所示 ,整體等于部分之和,即 f ( b ) ? f ( a ) = ∑ Δ y f(b)-f(a)=\sum \Delta y f(b)?f(a)=∑Δy,繼續細分,如圖2(b)所示,把區間均分到最細,即間隔為 d x dx dx,對應的 Δ y \Delta y Δy 也變成了 d y dy dy , 所以 f ( b ) ? f ( a ) = ∑ d y f(b)-f(a)=\sum dy f(b)?f(a)=∑dy,根據前面微分的無限細分可知 d y = f ( x ) ′ d x dy = f\left ( x \right )^{'}dx dy=f(x)′dx,因此 f ( b ) ? f ( a ) = ∑ f ( x ) ′ d x f(b)-f(a)=\sum f\left ( x \right )^{'}dx f(b)?f(a)=∑f(x)′dx,

2 微積分的解釋
??下面來討論一個問題,如何求解曲邊梯形的面積?
??設曲線方程為 y = f ( x ) y=f(x) y=f(x),在區間 [ a a a, b b b] 上非負、連續 , 由直線 x = a x=a x=a , x = b x=b x=b , y = 0 y=0 y=0 及曲線 y = f ( x ) y =f(x) y=f(x) 所圍成的平面圖形如圖 3 所示,稱之為曲邊梯形,其中曲線弧段稱為曲邊梯形的曲邊,

??曲邊梯形面積不像矩形 、圓等規則圖形有特定的公式求解,但可以采用以直代曲的思想來進行求解,
??分別以 4 個小矩形和 9 個小矩形替代,如圖4所示 ,

??可以看出 9 個小矩形比 4 個小矩形求面積的精確度高,那么如果無限分割呢?在 a a a 與 b b b 之間分割出 n n n 等份, n n n 趨近于無窮,是不是會無限接近曲邊梯形的面積呢? 曲邊梯形的無限分割如圖5所示,

??因此,將其極限值
A
=
lim
?
n
→
∞
∑
i
=
1
n
f
(
ξ
i
)
Δ
x
i
,
?
x
i
?
1
<
ξ
i
<
x
i
A=\lim_{n\rightarrow \infty }\sum_{i=1}^{n}f\left ( \xi _{i} \right )\Delta x_{i},\: x_{i-1}< \xi _{i} < x_{i}
A=n→∞lim?i=1∑n?f(ξi?)Δxi?,xi?1?<ξi?<xi?定義為曲邊梯形的面積,
??積分的基本思想就是“無限求和”,需要盡可能地將每一個矩形的底邊分割成無窮小,這樣所求的結果即為曲邊梯形的面積,數學家萊布尼茨為了體現求和的感覺,將 Sum 中的第一個字母 s 拉長了,簡寫成
S
u
m
[
f
(
x
)
Δ
x
]
?
∫
u
m
f
(
x
)
d
x
Sum\left [ f(x)\Delta x \right ]\Rightarrow \int_{um}^{}f(x)dx
Sum[f(x)Δx]?∫um?f(x)dx就成了常見的積分符號
∫
\int
∫,
??下面再來討論一個問題:求變速直線運動的路程,
??設某物體做直線運動,已知速度 ν = ν ( t ) ν=ν(t) ν=ν(t) 是時間間隔 [ t 1 , t 2 t_{1}, t_{2} t1?,t2?] 上 t t t 的連續函式,且 v ( t ) ? 0 v(t)\geqslant0 v(t)?0,計算在這段時間內物體所經過的路程,
??勻速直線運動的公式:路程=速度 x 時間,但是在我們的問題中,速度不是常數,而是隨時間變化的變數,因此所求路程 s 不能直接按勻速直線運動的路程公式來計算,物體運動的速度函式
ν
=
ν
(
t
)
ν=ν(t)
ν=ν(t) 是連續變化的,在很短的時間內,速度的變化很小,因此如果把時間間隔分小,在小段時間內,以勻速運動近似代替變速運動,就可以算出各部分路程的近似值,再求和得到整個路程的近似值,最后,通過對時間間隔無限細分的極限程序,求得物體在時間間隔 [
t
1
,
t
2
t_{1}, t_{2}
t1?,t2?] 內的路程結果如下,
s
=
lim
?
n
→
∞
∑
i
=
1
n
v
(
ξ
i
)
Δ
t
i
,
?
t
i
?
1
<
ξ
i
<
t
i
s=\lim_{n\rightarrow \infty }\sum_{i=1}^{n}v\left ( \xi _{i} \right )\Delta t_{i},\: t_{i-1}< \xi _{i} < t_{i}
s=n→∞lim?i=1∑n?v(ξi?)Δti?,ti?1?<ξi?<ti?
3 定積分
??根據前面兩個實際問題分析可以看出,盡管所要計算的量的實際意義各不相同,但計算方法與步驟都是相同的,可歸結為具有相同結構的特定格式的極限,即定積分,
3.1 定積分的定義

3.2 定積分的幾何含義
??在區間 [
a
a
a,
b
b
b] 上,當
f
(
x
)
>
0
f(x)>0
f(x)>0 時,定積分
∫
a
b
f
(
x
)
d
x
\int_{a}^{b}f(x)dx
∫ab?f(x)dx 的值為正數;當
f
(
x
)
<
0
f(x)<0
f(x)<0 時,定積分
∫
a
b
f
(
x
)
d
x
\int_{a}^{b}f(x)dx
∫ab?f(x)dx 的值為負數,圖6中,
∫
a
b
f
(
x
)
d
x
\int_{a}^{b}f(x)dx
∫ab?f(x)dx 的值為各階段正負值的代數和,

??【例1】利用定義計算定積分 ∫ 0 1 x 2 d x \int_{0}^{1}x^{2}dx ∫01?x2dx,

4 定積分的性質
??為了計算及應用方便,定積分有以下兩點補充規定,
??
性質1?函式的和(差)的定積分等于它們的定積分的和(差),即
![]()
性質2?被積函式的常數因子可以提到積分號外面,即
![]()
性質3?如果將積磁區間分成兩部分,則在整個區間上的定積分等于這兩部磁區間上定積分之和 ,即設 a < c < b a<c<b a<c<b,則
![]()
性質4?如果在區間 [ a a a, b b b] 上, f ( x ) ≥ 0 f(x)\geq 0 f(x)≥0,則
![]()
性質5?如果在區間 [ a a a, b b b] 上, f ( x ) = 1 f(x) = 1 f(x)=1,則
![]()
推論1?如果在區間 [ a a a, b b b] 上, f ( x ) ≥ g ( x ) f(x) \geq g(x) f(x)≥g(x),則
![]()
推論2?在區間 [ a a a, b b b] 上,
![]()
性質6?定積分中值定理:如果函式 f ( x ) f(x) f(x) 在閉區間 [ a a a, b b b]上連續 ,則在積磁區間 [ a a a, b b b]上至少存在一點 ξ \xi ξ,使下式成立:
∫ a b f ( x ) d x = f ( ξ ) ( b ? a ) , ? a ? ξ ≤ b \int_{a}^{b}f(x)dx=f(\xi )(b-a),\: a\leqslant \xi \leq b ∫ab?f(x)dx=f(ξ)(b?a),a?ξ≤b這個公式叫作積分中值公式,
??如圖 7 所示,積分中值公式的幾何解釋:在區間[ a a a, b b b]上至少存在一點 ξ \xi ξ 使以區間 [ a a a, b b b]為底邊、以曲線 y = f ( x ) y=f(x) y=f(x) 為曲邊的曲邊梯形的面積等于同一底邊而高為 f ( ξ ) f(\xi) f(ξ) 的矩形的而積,

??在機器學習應用中, 定積分的計算可以利用計算器及科學計算庫來直接求解,
5 牛頓一萊布尼茨公式
??前面介紹了定積分的定義和性質,但并未給出定積分有效的計算方法,在例 1 中利用定義計算定積分非常麻煩,因此必須尋求計算定積分的新方法,在此將建立定積分和不定積分之間的關系,這個關系為定積分的計算提供了高效的方法,
5.1 積分上限的函式及其導數
??設函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續,則對于任意點 x ? x\epsilon x?[ a a a, b b b], 函式 f ( x ) f(x) f(x)在 [ a a a, x x x] 上仍然連續,定積分 ∫ a x f ( x ) d x \int_{a}^{x}f(x)dx ∫ax?f(x)dx 一定存在,在這個定積分中, x x x 既表示積分上限,又表示積分變數,由于積分值與積分變數的記法無關,可將積分變數改用其他符號表示,如用 t t t 表示,則上面的積分可表示為 ∫ a x f ( t ) d t \int_{a}^{x}f(t)dt ∫ax?f(t)dt,
??如果上限 x x x 在區間 [ a a a, b b b]上任意變動,則對每一個取定的 x x x,定積分有確定的值與之對應, 所以在 [ a a a, b b b]上定義一個函式,記為 Φ ( x ) \Phi (x) Φ(x) ,則
![]()
??函式
Φ
(
x
)
\Phi (x)
Φ(x) 是積分上限
x
x
x 的函式,也稱為
f
(
t
)
f(t)
f(t) 的變上限積分,
Φ
(
x
)
\Phi (x)
Φ(x) 具有以下重要性質,
定理1?如果函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續,則積分上限函式 Φ ( x ) = ∫ a x f ( t ) d t \Phi (x)=\int_{a}^{x}f(t)dt Φ(x)=∫ax?f(t)dt 在[ a a a, b b b] 上可導,且
Φ ′ ( x ) = d d x ∫ a x f ( t ) d t = f ( x ) \Phi ^{'}(x)=\frac{\mathrm{d} }{\mathrm{d} x}\int_{a}^{x}f(t)dt=f(x) Φ′(x)=dxd?∫ax?f(t)dt=f(x)


??另外,若函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續,則稱函式 Φ ( x ) = ∫ x b f ( t ) d t , ? a ≤ x ≤ b \Phi (x)=\int_{x}^{b}f(t)dt,\: a\leq x\leq b Φ(x)=∫xb?f(t)dt,a≤x≤b 為 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上的積分下限函式,由定理1可得:
![]()
定理2?原函式存在定理:若函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續,則函式 Φ ( x ) = ∫ a x f ( t ) d t \Phi (x)=\int_{a}^{x}f(t)dt Φ(x)=∫ax?f(t)dt 就是 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上的一個原函式,
??【例2】求 d d x ( ∫ 0 x s i n 2 ( t ) d t ) \frac{\mathrm{d} }{\mathrm{d} x}\left ( \int_{0}^{x}sin^{2}\left ( t \right )dt \right ) dxd?(∫0x?sin2(t)dt),
??解:由定理1可得:
d
d
x
(
∫
0
x
s
i
n
2
(
t
)
d
t
)
=
s
i
n
2
(
x
)
\frac{\mathrm{d} }{\mathrm{d} x}\left ( \int_{0}^{x}sin^{2}\left ( t \right )dt \right )=sin^{2}\left ( x \right )
dxd?(∫0x?sin2(t)dt)=sin2(x)
5.2 牛頓一萊布尼茨公式
??定理1揭示了原函式與定積分的內在聯系,由此可以匯出一個重要定理,它給出用原函式計算定積分的公式,
定理3?設函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續, F ( x ) F(x) F(x) 是 f ( x ) f(x) f(x) 在 [ a a a, b b b] 上的一個原函式,則
∫ a b f ( x ) d x = F ( b ) ? F ( a ) \int_{a}^{b}f(x)dx = F(b)-F(a) ∫ab?f(x)dx=F(b)?F(a)通常稱此公式為微積分基本公式或牛頓-萊布尼茨公式,

5.3 牛頓一萊布尼茨公式的幾何解釋
??在前面已經提到,積分是在確定函式的導數的基礎上,通過一定的數學方法對原函式進行求解的程序,積分的基本思想是通過微分的 “無限求和” 來進行的,微分是對函式的求導程序,于是又可以將積分看成是微分的一個逆向程序,
??設函式 y = f ( x ) y=f(x) y=f(x), 把區間 [ a a a, b b b] 均分為 4 份,如圖 8(a) 所示,整體等于部分之和,即 f ( b ) ? f ( a ) = ∑ Δ y f(b)-f(a)=\sum_{}^{}\Delta y f(b)?f(a)=∑?Δy,繼續細分,如圖 8(b) 所示,把區間均分到最細,即間隔為 d x dx dx,對應的 Δ y \Delta y Δy 也變成了 d y dy dy, 所以 f ( b ) ? f ( a ) = ∑ d y f(b)-f(a)=\sum_{}^{}dy f(b)?f(a)=∑?dy, 根據微分的無限細分可知 d y = f ′ ( x ) d x dy = f^{'}(x)dx dy=f′(x)dx, 因此 f ( b ) ? f ( a ) = ∑ f ′ ( x ) d x = ∫ a b f ′ ( x ) d x f(b)-f(a)=\sum_{}^{}f^{'}(x)dx=\int_{a}^{b}f^{'}(x)dx f(b)?f(a)=∑?f′(x)dx=∫ab?f′(x)dx , 由牛頓一萊布尼茨公式可知, f ( x ) f(x) f(x) 為 f ′ ( x ) f'(x) f′(x) 的原函式,

??這個公式進一步揭示了定積分與被積函式的原函式或不定積分之間的關系,為定積分提供了 一個有效而簡便的計算方法,但是,需要注意:該公式的前提是原函式存在,
??圖9通俗地表示了牛頓一萊布尼茨公式的意義,

??【例3】
![]()
![]()
??【例4】

![]()
??【例5】計算由曲線
y
=
x
2
y = x^{2}
y=x2 和直線
y
=
x
?
4
y=x-4
y=x?4 所圍成的圖形的面積 S, 如圖 10 所示,


6 綜合實體——Python中常用的定積分求解方法
??【例6】應用SciPy科學計算庫計算 ∫ 0 3 c o s 2 ( e x ) d x \int_{0}^{3}cos^{2}\left ( e^{x} \right )dx ∫03?cos2(ex)dx,
??解:本例題使用了 SciPy科學計算庫的 q u a d quad quad 函式,它的一般形式是 s c i p y . i n t e g r a t e . q u a d ( f , a , b ) scipy.integrate.quad(f, a, b) scipy.integrate.quad(f,a,b),其中 f f f 是要積分的函式名稱, a a a 和 b b b 分別是下限和上限 ,
??【代碼如下】
import numpy as np
from scipy.integrate import quad
func = lambda x: np.cos(np.exp(x))**2 # 定義被積分函式
solution = quad(func, 0, 3) # 呼叫 quad 積分函式
print(solution)
??【結果說明】
??輸出結果: ( 1.296467785724373 , 1.3977971853986262 e ? 09 ) (1.296467785724373, 1.3977971853986262e-09) (1.296467785724373,1.3977971853986262e?09),前一個為積分值,后一個為誤差,
??【例7】應用SciPy科學計算庫計算 ? D e ? x 2 ? y 2 d x d y \iint_{D}^{}e^{-x^{2}-y^{2}}dxdy ?D?e?x2?y2dxdy,其中 D = { ( x , y ) ∣ 0 ≤ x ≤ 10 , ? 0 ≤ y ≤ 10 } D=\left \{ \left ( x,y \right )\mid 0\leq x\leq 10,\: 0\leq y\leq 10 \right \} D={(x,y)∣0≤x≤10,0≤y≤10},
??解:dblquad 函式的一般形式是 scipy.integrate.dblquad(func, a, b, gfun,hfun), 其中,func 是要積分的函式名稱, a a a 和 b b b 分別是變數 x x x 的下限和上限, gfun 和 hfun 是定義變數 y y y 的下限和上限的函式名稱,請注意,即使 gfun 和 hfun 是常數,它們在很多情況下也必須定義為函式, 例如本題 0 ≤ y ≤ 10 0\leq y\leq 10 0≤y≤10,即使 y y y 的下限和 y y y 的上限為常數,也要定義函式為 gfun(x)=0 和 hfun(x)=10,本題函式 gfun(x)、hfun(x) 的表達形式為 lambda x: y_a 和 lambda x: y_b,其中 y_a 、 y_b 的值分別為 0 和 10,
??【代碼如下】
import numpy as np
from scipy.integrate import dblquad
def integrand(x, y):
return np.exp(-x**2-y**2)
x_a = 0
x_b = 10
y_a = 0
y_b = 10
solution, abserr = dblquad(integrand, x_a, x_b, lambda x: y_a, lambda x: y_b)
print(solution, abserr)
??【結果說明】
??輸出結果: ( 0.78539816339744761.3753098510218537 e ? 08 ) (0.7853981633974476 1.3753098510218537e-08) (0.78539816339744761.3753098510218537e?08),前一個為積分值,后一個為誤差,
??以上采用 SciPy 科學計算庫中的數值積分函式直接求解定積分,下面通過定積分定義的基本概念,編程模擬實作求解定積分,
??從第5部分內容可知,函式 f ( x ) f(x) f(x) 在區間 [ a a a, b b b] 上連續,且其原函式為 F ( x ) F(x) F(x),則可用牛頓一萊布尼茨公式 ∫ a b f ( x ) d x = F ( b ) ? F ( a ) \int_{a}^{b}f(x)dx = F(b)-F(a) ∫ab?f(x)dx=F(b)?F(a) 求定積分的值,牛頓一萊布尼茨公式無論在理論上還是在解決實際問題上都具有重要作用,但它并不能完全解決定積分的計算問題,有些情況它就無能為力,例如,被積函式的原函式很難用初等函式表達出來、原函式存在但運算式太復雜 、 被積函式沒有具體的決議運算式 、 函式關系由表格或圖形表示等, 這些情況下,積分并不十分準確,因此,利用原函式求積分具有局限性,
??根據定積分的定義
∫
a
b
f
(
x
)
d
x
=
lim
?
λ
→
0
∑
i
=
1
n
f
(
ξ
i
)
Δ
x
i
\int_{a}^{b}f(x)dx=\lim_{\lambda \rightarrow 0 }\sum_{i=1}^{n}f\left ( \xi _{i} \right )\Delta x_{i}
∫ab?f(x)dx=λ→0lim?i=1∑n?f(ξi?)Δxi? 可知,定積分的求解程序大致分為以下4個步驟:
??
??上面的求解程序為使用計算機求解定積分提供了演算法思路,將求積區間進行 n n n 等分,步長為 b ? a n \frac{b-a}{n} nb?a?,回圈 n n n 次求解 n n n 個小梯形面積之和,結果即為定積分近似解,
??【例8】應用 Python 編程實作求定積分近似解,并用例 6 進行驗證,
??【代碼如下】
from numpy import *
a, b = 0, 3
def f(x):
return cos(exp(x))**2
# 數值計算 --- 求解定積分的一種演算法
def trape(n):
h = (b-a)/n
x = a
sum = 0
for i in range(1, n):
x2 = a+i*h
sum = sum+(f(x)+f(x2))*h/2
x = x2
return sum
print(trape(10))
print(trape(100))
print(trape(1000))
print(trape(10000))
print(trape(100000))
??【結果說明】
0.944822326405313
1.2843391540917448
1.2960750567338157
1.296434741500134
1.2964645400078032
??從結果可以看出,當積磁區間分為100000等份時,定積分的值為1.2964645400078032,與例6的結果近似,本例求定積分的演算法程序來源于最基本的定積分數學描述原理,并運用 Python 編程實作,經過實體驗證,定積分求解結果達到要求,在本例中積磁區間還可以繼續細分,直到結果值基本不再變化時,可以達到更高的精確度,
7 Python中數值積分常用函式簡介
??SciPy 提供了 一系列不同型別的求積函式,它們中的大多數都在同一個 scipy.integrate 庫中 ,表1列出了數值積分常用函式,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/347048.html
標籤:AI
上一篇:【學習筆記4】針對地面目標識別的遙感預訓練與自監督學習
下一篇:機器學習之回歸
