今天要介紹的是關(guān)于使用Python演算衍生品速查表的內(nèi)容。實(shí)際上是對微積分可以做的事情進(jìn)行冷卻的先驅(qū),這些微積分可以用于空空導(dǎo)彈中的追蹤曲線和火箭發(fā)射方程。讓我們重溫一些您很久沒有接觸過的演算主題,并使用Python復(fù)習(xí)一下,并復(fù)習(xí)所使用的常見派生和規(guī)則。
本教程旨在作為微積分教程,但是您不會使用需要API的在線計(jì)算器,例如Wolfram-Alpha。如果您想編寫自己的代碼,或者只是輕松進(jìn)行計(jì)算,也很有用。這也是檢查手工計(jì)算是否正確的好方法。我將以最簡單的方式遍歷差異化規(guī)則,并提供可以使用python執(zhí)行的示例。
本節(jié)介紹如何安裝SymPy以及完成以下步驟:
1.功率規(guī)則
2.產(chǎn)品規(guī)則
3.商法則
4.鏈?zhǔn)揭?guī)則
5.指數(shù)
6.偏導(dǎo)數(shù)
我將使用拉格朗日的導(dǎo)數(shù)表示法,例如盡管使用Leibniz表示法(d/dx)更常見,但在Python中運(yùn)行微分方程時(shí)感覺并不自然。
使用SymPy
這篇文章將使用 SymPy,這是一個(gè)Python庫。也可以使用SciPy庫,但是SymPy以易于閱讀的方式打印輸出,并且在掌握差異化和集成性方面更有用。
要安裝它,請打開終端并運(yùn)行以下命令:
pip install sympy
我強(qiáng)烈建議在Anaconda 發(fā)行版隨附的新Jupyter Notebook中編寫python代碼。
區(qū)分規(guī)則
我將首先介紹一些差異化規(guī)則,作為您很久以前可能已忘記的一些微積分主題的快速入門。
權(quán)力規(guī)則
如果您曾經(jīng)參加過微積分課程,那是不言而喻的。因此,讓我們以一個(gè)簡單的示例為例,并逐步進(jìn)行操作;
這是一個(gè)很好的示例,可以使用SymPy庫進(jìn)行測試。要在python中實(shí)現(xiàn)此功能,請首先導(dǎo)入該庫,然后聲明要在函數(shù)中使用的變量。以下代碼段顯示了如何聲明單個(gè)變量函數(shù):
import sympy as sp
x=sp.Symbol('x')
最后一步是通過運(yùn)行以下代碼來獲得派生:
sp.diff(x**3)
哪個(gè)輸出:
您會注意到輸出方程式的打印格式很好。如果要獲得二階微分f''(x),則只需將x兩次包含在:
diff
命令:
sp.diff(x**3,x,x)
其中6x是二階微分,或以手寫方式放置:
產(chǎn)品規(guī)則
在python中運(yùn)行此命令將為您提供以下信息:
sp.diff(sp.sin(x)*(2*x**2+2))
商法則
商規(guī)則有助于我們有效地找到一個(gè)函數(shù)除以另一個(gè)函數(shù)的導(dǎo)數(shù),這就是我們在Python中執(zhí)行此操作時(shí)的樣子:
sp.diff((sp.sin(x))/x)
手動嘗試,然后在python中運(yùn)行。
商規(guī)則與乘積規(guī)則非常相似,不同之處在于將加號更改為負(fù)號,以及除以g(x)^ 2 步的額外步驟。
連鎖規(guī)則
如前所述,我選擇使用Langrangian符號來遵循這些規(guī)則。由于某種原因,鏈?zhǔn)揭?guī)則變得過于復(fù)雜。
因此,讓我們手動看一個(gè)例子:
內(nèi)函數(shù)g(?)為?^ 2 +1 ,當(dāng)微分為2?時(shí)。外部函數(shù)f(?)是(stuff)^ 7,當(dāng)微分時(shí)變?yōu)? *(stuff)^ 6。
使用鏈?zhǔn)揭?guī)則公式時(shí),這很簡單。這是在python中運(yùn)行時(shí)的樣子:
sp.diff((x**2+1)**7)
有關(guān)鏈?zhǔn)揭?guī)則的更深入說明,請查看Aaron Schlegel在“ 鏈?zhǔn)揭?guī)則”上的文章。
指數(shù)導(dǎo)數(shù)
并且使用鏈?zhǔn)揭?guī)則,同時(shí)給出e的g(x)指數(shù),
讓我們來看一個(gè)簡單的代碼如下所示:
sp.diff(sp.exp(3*x))
這涵蓋了您在微積分課程中要記住的所有微分規(guī)則。綜上所述讓我們看一下偏導(dǎo)數(shù):
那偏導(dǎo)數(shù)呢?
偏微分方程(PDE)與到目前為止所見的常微分方程不同,因?yàn)镻DE包含多變量函數(shù)。不同之處在于您一次獲取一個(gè)變量的導(dǎo)數(shù)。讓我們從兩個(gè)變量函數(shù)開始,找到它們的偏導(dǎo)數(shù):
現(xiàn)在,您可能會問我如何在Python中執(zhí)行此操作?第一步是像這樣聲明變量
x,y=sp.symbols('x y')
f=x**4*y
在上面,我已將函數(shù)分配為變量,以免每次取導(dǎo)數(shù)時(shí)都不會重寫此變量。
取關(guān)于x的偏導(dǎo)數(shù):
sp.diff(f,x)
并取關(guān)于y的偏導(dǎo)數(shù):
sp.diff(f,y)
您還可以在同一行代碼中一個(gè)接一個(gè)地對多個(gè)變量求導(dǎo)數(shù):
sp.diff(f,x,y)
另一個(gè)具有3個(gè)變量功能的示例
x,y,z=sp.symbols('x y z')
f=x**3*y*z**2
現(xiàn)在剩下的部分和以前一樣:
sp.diff(f,x)
sp.diff(f,y)
sp.diff(f,z)
在衍生工具方面就差不多了。但是這些并不是在Python代碼中有用的實(shí)際函數(shù),這更多是一項(xiàng)家庭作業(yè)。實(shí)際上將其放在Python代碼中!
如果我無法插入數(shù)字,那么在Python代碼中計(jì)算微分方程有什么意義?SymPy為我們提供了執(zhí)行此操作的功能!這個(gè)非常方便的功能稱為 Lambdify,用數(shù)字代替放置符號的位置。
讓我們做一個(gè)簡單的例子:
f=2*x**3+4*x
f_prime=sp.diff(f)
f_prime
所以我設(shè)置了f_prime,但是我想用數(shù)字2代替
f_prime=sp.lambdify(x,f_prime)
f_prime(2)
>> 28
那里有,讓我們再舉一個(gè)使用多個(gè)符號變量的示例
f=x**3*y*z**2
F=sp.lambdify([x,y,z],f)
F(1,2,3)
>> 18
有了這個(gè),現(xiàn)在有了一個(gè)python庫,用于查找導(dǎo)數(shù)并將其轉(zhuǎn)換為函數(shù)。
通過上述介紹,如何使用Python演算衍生品速查表大家已經(jīng)清楚了吧,想了解更多關(guān)于Python的信息,請繼續(xù)關(guān)注中培偉業(yè)。