欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+Sympy實(shí)現(xiàn)計(jì)算微積分

 更新時(shí)間:2023年07月16日 09:46:03   作者:databook  
微積分的計(jì)算也許平時(shí)用不到,會(huì)讓人覺得有點(diǎn)高深,它們的計(jì)算過程中需要使用很多計(jì)算規(guī)則,但是使用?Sympy?可以有效減輕這方面的負(fù)擔(dān),本文就來和大家簡(jiǎn)單講講吧

微積分的計(jì)算也許平時(shí)用不到,會(huì)讓人覺得有點(diǎn)高深。

但其實(shí)它在數(shù)學(xué)專業(yè)的人眼中,也不過是一種極其普通的計(jì)算,是一種和加減乘除差不多的級(jí)別的常用計(jì)算方式。

微積分和求極限運(yùn)算本身不是很難,只是它們的計(jì)算規(guī)則不像加減乘除那么簡(jiǎn)單。

它們的計(jì)算過程中需要使用很多計(jì)算規(guī)則(這些不太容易記?。?,就像計(jì)算三角函數(shù)要記住很多三角函數(shù)的公式和定理一樣。

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

1. 極限計(jì)算

極限計(jì)算的應(yīng)用場(chǎng)景很廣,也是學(xué)習(xí)微積分的前置步驟。

1.1. 函數(shù)極限

比如這個(gè)簡(jiǎn)單的函數(shù)lim?x→∞1/x,

我們想知道它在x趨于無窮大時(shí)的值,普通的加減乘除算法就無法運(yùn)算。

Sympy 來計(jì)算:

from sympy import Symbol, Limit, S
Limit(1/x, x, S.Infinity).doit()
#運(yùn)行結(jié)果
0

當(dāng) x 趨向于0時(shí),

Limit(1/x, x, 0).doit()
#運(yùn)行結(jié)果,下面的符號(hào)表示正無窮大
oo

1.2. 瞬時(shí)速度

在物理上,計(jì)算瞬時(shí)速度的時(shí)候,也會(huì)用極限的計(jì)算。

比如,存在一個(gè)路程和時(shí)間的公式:S=t2+2t+10 (S表示路程,t表示時(shí)間)

計(jì)算瞬時(shí)速度時(shí),步驟如下:

  • 假設(shè)初始路程S
  • 經(jīng)過Δt時(shí)間后,路程變?yōu)?Delta;S=(t+Δt)2+2(t+Δt)+10
  • 此時(shí)間間隔內(nèi)的平均速度為:V=(ΔS−S?)/Δt
  • 當(dāng)Δt趨向于0時(shí),此速度V即為瞬時(shí)速度。

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

# 2. 順時(shí)速度
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()

運(yùn)行結(jié)果:2t+2

這就是瞬時(shí)速度時(shí)間的關(guān)系,通過這個(gè)公式,就能算出每個(gè)時(shí)間點(diǎn)的瞬時(shí)速度。

3. 微分計(jì)算

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

3.1. 導(dǎo)數(shù)

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

from sympy import Derivative
#導(dǎo)數(shù)
s = t * t + 2 * t + 10
Derivative(s, t).doit()

運(yùn)行的結(jié)果:2t+2,和上面求極限的方式計(jì)算的結(jié)果一樣。

3.2. 偏導(dǎo)數(shù)

當(dāng)函數(shù)的變量不止一個(gè)的時(shí)候,可以分別對(duì)不同的變量求導(dǎo),這也就是偏導(dǎo)數(shù)

比如函數(shù):f(x,y)=5x2+6y2+10xy+2x+3y

  • 對(duì)變量x的偏導(dǎo)數(shù):df(x,y)/dx=10x+10y+2
  • 對(duì)變量y的偏導(dǎo)數(shù):df(x,y)/dy=10x+12y+3

Sympy 實(shí)現(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()

運(yùn)行結(jié)果:dx=10x+10y+2,dy=10x+12y+3

3.3. 高階導(dǎo)數(shù)

上面的微分計(jì)算求解的都是一階導(dǎo)數(shù),在尋找函數(shù)全局極值點(diǎn)的時(shí)候,還要用到高階導(dǎo)數(shù)。

計(jì)算高階導(dǎo)數(shù)也簡(jiǎn)單,上面 Derivative 函數(shù)的第三個(gè)參數(shù)就是求導(dǎo)的階數(shù)(默認(rèn)是1)。

#高階導(dǎo)數(shù)
f = x**5 - 3 * x**3 + 5 * x
#3階導(dǎo)數(shù)
dx3 = Derivative(f, x, 3).doit()
#4階導(dǎo)數(shù)
dx4 = Derivative(f, x, 4).doit()

運(yùn)行結(jié)果:dx3=6(10x2−3),dx4=120x

4. 積分計(jì)算

積分是微分的逆運(yùn)算,手動(dòng)計(jì)算的話一般需要查詢積分表,非常麻煩。

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

from sympy import Integral
expr = 2 * x
Integral(expr).doit()

運(yùn)行結(jié)果:x2

除了可以得到積分后的表達(dá)式,也可以直接計(jì)算積分的值。

比如計(jì)算:∫2.57.5(x2+2)

expr = x * x + 2
Integral(expr, (x, 2.5, 7.5)).doit()
#運(yùn)行結(jié)果:145.416666666667

5. 總結(jié)回顧

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

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

PS.

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

以上就是Python+Sympy實(shí)現(xiàn)計(jì)算微積分的詳細(xì)內(nèi)容,更多關(guān)于Python Sympy計(jì)算微積分的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python 處理telnet返回的More,以及get想要的那個(gè)參數(shù)方法

    python 處理telnet返回的More,以及get想要的那個(gè)參數(shù)方法

    今天小編就為大家分享一篇python 處理telnet返回的More,以及get想要的那個(gè)參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python smallseg分詞用法實(shí)例分析

    Python smallseg分詞用法實(shí)例分析

    這篇文章主要介紹了Python smallseg分詞用法,以實(shí)例形式分析了Python實(shí)現(xiàn)分析的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 一文教你掌握Python中Lambda表達(dá)式的5種實(shí)用技巧

    一文教你掌握Python中Lambda表達(dá)式的5種實(shí)用技巧

    在Python編程的宇宙里,有一個(gè)強(qiáng)大而靈活的工具經(jīng)常被高效的程序員所利用——那就是Lambda表達(dá)式,下面就讓我們深入了解Lambda表達(dá)式的妙用吧
    2024-01-01
  • python 解決函數(shù)返回return的問題

    python 解決函數(shù)返回return的問題

    這篇文章主要介紹了python 解決函數(shù)返回return的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • python屬于軟件嗎

    python屬于軟件嗎

    在本篇內(nèi)容里小編給Python新手整理了關(guān)于python是軟件嗎的相關(guān)知識(shí)點(diǎn),有興趣的朋友們可以閱讀下。
    2020-06-06
  • numpy拼接矩陣的實(shí)現(xiàn)

    numpy拼接矩陣的實(shí)現(xiàn)

    本文主要介紹了numpy拼接矩陣的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python開發(fā)之文件操作用法實(shí)例

    python開發(fā)之文件操作用法實(shí)例

    這篇文章主要介紹了python開發(fā)之文件操作用法,以實(shí)例形式較為詳細(xì)的分析了Python針對(duì)文件的路徑、文件名、后綴名等操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • 如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色

    如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色

    對(duì)于圖表來說最簡(jiǎn)單的莫過于作出一個(gè)單一函數(shù)的圖像,下面這篇文章主要給大家介紹了關(guān)于如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Python搭建HTTP服務(wù)過程圖解

    Python搭建HTTP服務(wù)過程圖解

    這篇文章主要介紹了Python搭建HTTP服務(wù)過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • PyTorch中關(guān)于tensor.repeat()的使用

    PyTorch中關(guān)于tensor.repeat()的使用

    這篇文章主要介紹了PyTorch中關(guān)于tensor.repeat()的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論