scipy模块计算导数方法(central_diff_weights)
生活随笔
收集整理的這篇文章主要介紹了
scipy模块计算导数方法(central_diff_weights)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
scipy中計算導數有兩種方式:
其中第一種方式在scipy幫助中,沒有寫很清楚,這里重點講一下。
就舉一個例子: 計算下列函數在x=1x=1x=1處的2階導數
f(x)=3x+x3f(x) = 3^{x} + x^{3}f(x)=3x+x3
利用求導公式,我們很容易得到這個值:9.620846882437746
要利用第一種方法,需要有若干個(N)在求導點附近的函數值,并且需要均勻。N還需要滿足兩個條件
我們取N=5, 計算在x=1x=1x=1的附近的5個函數值,左右對稱
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), 返回的是計算2階導數的各個值的權重,把這5個值和以上5個函數值相乘,并且除以間隔值0.1兩次,即為導數
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)計算的值為:9.620841015472953 與理論值很接近了
下面用另一種方法derivative 計算導數,這種方法比較直觀
derivative(f, x0=1, dx=0.0001, n=2)計算的值為:9.620846874724975
總結
以上是生活随笔為你收集整理的scipy模块计算导数方法(central_diff_weights)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用matplotlib的imshow显示
- 下一篇: 使用matplotlib,同时在多个fi