📅  最后修改于: 2023-12-03 15:27:47.741000             🧑  作者: Mango
interp1d
是一个 SciPy 库中的函数,用于生成一维插值函数。如果想获取一维插值函数的导数,可以使用 interp1d
的 derivative
参数。
以下是使用 interp1d
生成一维插值函数,并获取其导数的示例代码:
import numpy as np
from scipy.interpolate import interp1d
# 创建一些模拟数据
x = np.linspace(0, 10, num=11, endpoint=True)
y = np.sin(x)
# 生成一维插值函数
f = interp1d(x, y)
# 获取插值函数的导数
df = f.derivative()
# 在新的 x 值上计算插值函数和导数
new_x = np.linspace(0, 10, num=101, endpoint=True)
new_y = f(new_x)
new_df = df(new_x)
# 绘制插值函数和导数的图形
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(new_x, new_y, label='f(x)')
ax.plot(new_x, new_df, label='f\'(x)')
ax.legend()
plt.show()
上述代码中,我们首先创建了一些模拟数据 x
和 y
,并在其上使用 interp1d
函数生成了一维插值函数 f
。接着,我们使用 f.derivative()
获取了插值函数的导数 df
。最后,在新的 x
值上计算了插值函数和导数,并使用 matplotlib
绘制了图形。
需要注意的是,使用 interp1d
生成的插值函数是分段平滑的,即在每个原始数据点之间使用了一个局部多项式进行拟合。如果在这些数据点之外的位置计算导数,将得到不连续点。因此,如果需要在数据点之外计算导数,建议使用其他方法,比如使用 np.gradient
函数计算数值梯度。
参考资料: