python拟合曲面的函数
时间: 2023-12-03 19:37:54 浏览: 196
Python中拟合曲面的函数有很多,其中比较常用的是scipy库中的`scipy.optimize.curve_fit()`函数和numpy库中的`numpy.polyfit()`函数。`scipy.optimize.curve_fit()`函数可以用于非线性最小二乘拟合,而`numpy.polyfit()`函数则可以用于多项式拟合。
下面是`scipy.optimize.curve_fit()`函数的使用方法:
```python
import numpy as np
from scipy.optimize import curve_fit
# 定义拟合函数
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# 生成数据
xdata = np.linspace(0, 4, 50)
ydata = func(xdata, 2.5, 1.3, 0.5)
# 添加噪声
ydata_noise = 0.2 * np.random.normal(size=ydata.size)
ydata += ydata_noise
# 拟合曲线
popt, pcov = curve_fit(func, xdata, ydata)
# 输出拟合参数
print(popt)
# 绘制拟合曲线
import matplotlib.pyplot as plt
plt.plot(xdata, ydata, 'b-', label='data')
plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')
plt.legend()
plt.show()
```
下面是`numpy.polyfit()`函数的使用方法:
```python
import numpy as np
# 生成数据
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([0.1, 0.9, 2.2, 3.8, 5.9, 8.1])
# 多项式拟合
z = np.polyfit(x, y, 2)
# 输出拟合参数
print(z)
# 绘制拟合曲线
import matplotlib.pyplot as plt
p = np.poly1d(z)
xp = np.linspace(0, 5, 100)
plt.plot(x, y, '.', xp, p(xp), '-')
plt.show()
```
阅读全文