要拟合x和y的导数曲线,可以使用同样的样条插值方法。以下是一种常见的方法,使用样条插值来拟合导数曲线:
```python
import numpy as np
from scipy.interpolate import CubicSpline
import matplotlib.pyplot as plt
# 原始数据点
x = np.array([37, 37.3, 37.6, 37.9, 38.2, 38.5, 38.8, 39.09, 39.39, 39.69, 39.99, 40.29, 40.59, 40.89, 41.19, 41.49, 41.79, 42.09, 42.39, 42.69, 42.98, 43.28, 43.58, 43.88, 44.18])
y = np.array([293.79, 293.79, 287.08, 298.63, 310.17, 315.2, 302.35, 315.38, 316.5, 302.72, 315.57, 318.18, 325.62, 322.46, 333.07, 326.93, 348.15, 339.77, 353.74, 358.76, 363.79, 364.35, 367.33, 361.93, 384.08])
# 计算导数
dx = np.gradient(x)
dy = np.gradient(y)
# 创建样条插值对象
cs_dx = CubicSpline(x, dx)
cs_dy = CubicSpline(x, dy)
# 绘制原始数据点
plt.scatter(x, y, color='red', label='Data')
# 绘制导数曲线
x_interp = np.linspace(x.min(), x.max(), 100)
dx_interp = cs_dx(x_interp)
dy_interp = cs_dy(x_interp)
plt.plot(x_interp, dx_interp, label='dy/dx')
plt.xlabel('x')
plt.ylabel('dy/dx')
plt.legend()
plt.show()
```
运行以上代码,您将得到拟合后的导数曲线图。同样,您可以根据需要调整插值方法和参数,以获得更好的拟合效果。