Python中有很多求導計算包可以使用,比如SymPy、SciPy、Autograd等等。這些包可以很方便地進行符號計算、數值計算和自動微分等操作,非常適合進行科學計算和工程計算。
# SymPy示例 import sympy # 定義符號變量 x, y = sympy.symbols('x y') # 定義函數 f = x**2 + y**2 # 求導 df_dx = sympy.diff(f, x) df_dy = sympy.diff(f, y) # 輸出結果 print('f(x,y) =', f) print('?f/?x =', df_dx) print('?f/?y =', df_dy)
上面的代碼使用了SymPy包,首先定義了兩個符號變量x和y,并定義了一個函數f,然后分別求出了f對x和y的偏導數。最后輸出了結果。SymPy的輸出結果包含了符號計算的表達式。
# SciPy示例 import numpy as np from scipy.misc import derivative # 定義函數 def f(x): return np.sin(x) # 求導 df_dx = derivative(f, np.pi/2, dx=1e-6) # 輸出結果 print('f(x) =', f(np.pi/2)) print('df/dx =', df_dx)
上面的代碼使用了SciPy包,定義了一個函數f,使用公式f(x) = sin(x)。然后使用函數scipy.misc.derivative求出了f在x=π/2處的導數。該函數可以自動計算數值導數,非常方便。
# Autograd示例 import autograd.numpy as np from autograd import grad # 定義函數 def f(x): return np.sin(x) # 求導 grad_f = grad(f) # 輸出結果 print('f(x) =', f(np.pi/2)) print('df/dx =', grad_f(np.pi/2))
上面的代碼使用了Autograd包,同樣定義了一個函數f,使用公式f(x) = sin(x)。然后使用函數autograd.grad求出了f在x=π/2處的導數。該函數可以自動計算數值導數和符號導數,非常強大。