不同分数阶导数程序
时间: 2023-12-18 14:02:06 浏览: 191
以下是不同分数阶导数的程序实现(使用了numpy和scipy库):
```python
import numpy as np
from scipy.special import gamma
def diff(f, x, order, h):
"""
计算函数f在x处的order阶导数,h为步长
"""
if order == 0:
return f(x)
elif order > 0:
return (diff(f, x+h, order-1, h) - diff(f, x, order-1, h)) / h
else:
return (diff(f, x-h, order+1, h) - diff(f, x, order+1, h)) / h
def diff_frac(f, x, order, h):
"""
计算函数f在x处的分数阶导数,h为步长
"""
if order == 0:
return f(x)
else:
return np.real((1/h**order) * np.sum((-1)**k * gamma(order+1) * f(x-(order-k)*h) / (gamma(k+1) * gamma(order-k+1)) for k in range(int(order))))
```
其中,`diff`函数实现了一般的整数阶导数的计算,递归调用自身实现了阶数的递减;`diff_frac`函数则实现了分数阶导数的计算,参考了Riemann-Liouville定义式,使用了gamma函数计算系数。
阅读全文