小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python Sympy:計算微積分利器

 天選小丑 2023-08-14 發(fā)布于廣西

微積分的計算也許平時用不到,會讓人覺得有點高深。
但其實它在數學專業(yè)的人眼中,也不過是一種極其普通的計算,是一種和加減乘除差不多的級別的常用計算方式。

微積分和求極限運算本身不是很難,只是它們的計算規(guī)則不像加減乘除那么簡單。
它們的計算過程中需要使用很多計算規(guī)則(這些不太容易記?。?,就像計算三角函數要記住很多三角函數的公式和定理一樣。

使用 Sympy 可以有效減輕這方面的負擔,讓我們用編程的方式來解決微積分問題。

1. 極限計算

極限計算的應用場景很廣,也是學習微積分的前置步驟。

1.1. 函數極限

比如這個簡單的函數
我們想知道它在x趨于無窮大時的值,普通的加減乘除算法就無法運算。
Sympy 來計算:

from sympy import Symbol, Limit, S

Limit(1/x, x, S.Infinity).doit()
#運行結果
0

當 x 趨向于0時,

Limit(1/x, x, 0).doit()
#運行結果,下面的符號表示正無窮大
oo

1.2. 瞬時速度

在物理上,計算瞬時速度的時候,也會用極限的計算。

比如,存在一個路程和時間的公式:S表示路程,t表示時間)
計算瞬時速度時,步驟如下:

  1. 假設初始路程
  2. 經過 時間后,路程變?yōu)?span>
  3. 此時間間隔內的平均速度為:
  4. 趨向于0時,此速度 即為瞬時速度。

Sympy來實現(xiàn)很方便:

# 2. 順時速度
t = Symbol('t')
s_t = t * t + 2 * t + 10
delta_t = Symbol('delta_t')

s_delta = s_t.subs({t: t + delta_t})
expr = Limit((s_delta - s_t) / delta_t, delta_t, 0)
expr.doit()

運行結果:

這就是瞬時速度時間的關系,通過這個公式,就能算出每個時間點的瞬時速度。

3. 微分計算

微分計算可以看做是一種求極限的運算方式,通過微分的運算規(guī)則,求極限更加簡單。

3.1. 導數

還是上面瞬時速度的例子,用微分的方式,可以更快的得到結果。

from sympy import Derivative

#導數
s = t * t + 2 * t + 10
Derivative(s, t).doit()

運行的結果:,和上面求極限的方式計算的結果一樣。

3.2. 偏導數

當函數的變量不止一個的時候,可以分別對不同的變量求導,這也就是偏導數
比如函數:

  1. 對變量x的偏導數:
  2. 對變量y的偏導數:

Sympy 實現(xiàn)方式:

f_xy = 5 * x * x + 6 * y * y + 10 * x * y + 2 * x + 3 * y

dx = Derivative(f_xy, x).doit()
dy = Derivative(f_xy, y).doit()

運行結果: ,

3.3. 高階導數

上面的微分計算求解的都是一階導數,在尋找函數全局極值點的時候,還要用到高階導數。

計算高階導數也簡單,上面 Derivative 函數的第三個參數就是求導的階數(默認是1)。

#高階導數
f = x**5 - 3 * x**3 + 5 * x

#3階導數
dx3 = Derivative(f, x, 3).doit()

#4階導數
dx4 = Derivative(f, x, 4).doit()

運行結果:,

4. 積分計算

積分是微分的逆運算,手動計算的話一般需要查詢積分表,非常麻煩。

使用Sympy的話,就是一行代碼的事兒。

from sympy import Integral

expr = 2 * x
Integral(expr).doit()

運行結果:

除了可以得到積分后的表達式,也可以直接計算積分的值。
比如計算:

expr = x * x + 2
Integral(expr, (x, 2.57.5)).doit()
#運行結果:145.416666666667

5. 總結回顧

本篇主要介紹了Sympy微積分方面的使用方法。

不過,能夠計算微積分這些還不是Sympy吸引我的地方,
它最主要的特色是能夠符號化程序中的變量和表達式,
這樣就使得編寫的程序和用數學公式推導的過程極其類似,可以更加直觀的表達自己的數學知識。

PS.
我在jupyter notebook中使用 Sympy 時,發(fā)現(xiàn)直接顯示Sympy的變量和表達式都非常漂亮,都是Latex格式的。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多