【Python数值分析】革命:引领【数学建模】新时代的插值与拟合前沿技术
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d
from scipy.optimize import curve_fit
# 创建一个函数用于拟合
def func(x, a, b, c):
return a * np.sin(b * x + c)
# 生成数据
x_data = np.linspace(0, 2 * np.pi, 10)
y_data = func(x_data, 2, 0.5, 0) + 0.1 * np.random.randn(10)
# 插值
f = interp1d(x_data, y_data)
x_new = np.linspace(0, 2 * np.pi, 50)
y_new = f(x_new)
# 拟合
popt, pcov = curve_fit(func, x_data, y_data)
y_fit = func(x_new, *popt)
# 绘图
plt.figure()
plt.scatter(x_data, y_data, label='Data')
plt.plot(x_new, y_new, label='Interpolated')
plt.plot(x_new, y_fit, label='Fitted')
plt.legend()
plt.show()
这段代码首先定义了一个拟合的函数func
,然后生成了一些符合该函数的数据。接着使用interp1d
进行插值,并使用curve_fit
进行拟合。最后,代码将原始数据点、插值结果和拟合结果绘制在一张图上,展示了数据的插值和拟合过程。
评论已关闭