scipy模块计算导数方法(central_diff_weights)
scipy中計(jì)算導(dǎo)數(shù)有兩種方式:
其中第一種方式在scipy幫助中,沒有寫很清楚,這里重點(diǎn)講一下。
就舉一個(gè)例子: 計(jì)算下列函數(shù)在x=1x=1x=1處的2階導(dǎo)數(shù)
f(x)=3x+x3f(x) = 3^{x} + x^{3}f(x)=3x+x3
利用求導(dǎo)公式,我們很容易得到這個(gè)值:9.620846882437746
要利用第一種方法,需要有若干個(gè)(N)在求導(dǎo)點(diǎn)附近的函數(shù)值,并且需要均勻。N還需要滿足兩個(gè)條件
我們?nèi)=5, 計(jì)算在x=1x=1x=1的附近的5個(gè)函數(shù)值,左右對(duì)稱
f(0.8),f(0.9),f(1),f(1.1),f(1.2)f(0.8) ,f(0.9), f(1), f(1.1), f(1.2)f(0.8),f(0.9),f(1),f(1.1),f(1.2)
central_diff_weights(5,2), 返回的是計(jì)算2階導(dǎo)數(shù)的各個(gè)值的權(quán)重,把這5個(gè)值和以上5個(gè)函數(shù)值相乘,并且除以間隔值0.1兩次,即為導(dǎo)數(shù)
from scipy.misc import central_diff_weights from scipy.misc import derivative import numpy as npdef f(x):return 3**x + x**3x = np.r_[0.8:1.2:5j] y = np.vectorize(f)(x)w = central_diff_weights(5, 2) print(np.sum(y*w) / 0.1 / 0.1)計(jì)算的值為:9.620841015472953 與理論值很接近了
下面用另一種方法derivative 計(jì)算導(dǎo)數(shù),這種方法比較直觀
derivative(f, x0=1, dx=0.0001, n=2)計(jì)算的值為:9.620846874724975
總結(jié)
以上是生活随笔為你收集整理的scipy模块计算导数方法(central_diff_weights)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用matplotlib的imshow显示
- 下一篇: 使用matplotlib,同时在多个fi