scipy.optimize.curve_fit示例
时间: 2024-09-26 10:18:49 浏览: 45
`scipy.optimize.curve_fit`函数是Scipy库中的一个优化工具,用于非线性最小二乘拟合数据。它的基本用法是提供一个模型函数,以及一组观测数据,然后它会寻找该函数的最佳参数组合,使得模型对数据的拟合误差最小。下面是一个简单的例子:
```python
from scipy.optimize import curve_fit
import numpy as np
import matplotlib.pyplot as plt
# 定义模型函数,比如我们有一个直线方程 y = ax + b
def linear_model(x, a, b):
return a*x + b
# 假设我们有一组随机数据
x_data = np.random.rand(100)
y_data = linear_model(x_data, 2, 1) + 0.1*np.random.randn(100) # 添加了一点噪声
# 初始参数猜测
p0 = [0, 0] # 假设我们不知道斜率和截距
# 使用curve_fit
params, _ = curve_fit(linear_model, x_data, y_data, p0=p0)
# 输出拟合参数
a_fit, b_fit = params
print(f"拟合斜率为 {a_fit:.2f}, 截距为 {b_fit:.2f}")
# 绘制原始数据和拟合曲线
plt.scatter(x_data, y_data, color='black', label="Data")
plt.plot(x_data, linear_model(x_data, *params), 'r-', label="Fit", linewidth=2)
plt.legend()
plt.show()
```
在这个例子中,`curve_fit`返回的是两个参数:拟合参数列表`params`和一个残差数组。残差数组通常不在最简单的情况下显示。
阅读全文