python 曲线函数拟合
在Python中,可以使用scipy库中的curve_fit函数来进行曲线函数拟合。curve_fit函数的基本用法是:给定一个函数模型和一组实验数据,拟合出最适合数据的函数参数。
首先,导入所需的库:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
```
然后,定义要拟合的函数模型。这里以一个二次函数为例:
```python
def func(x, a, b, c):
return a * x ** 2 + b * x + c
```
接下来,准备实验数据。这里我们使用numpy的linspace函数生成一组x坐标,然后根据函数模型生成对应的y坐标,并加入一些随机噪声:
```python
x = np.linspace(-10, 10, 100)
y = func(x, 1, 2, 3)
np.random.seed(0)
y_noise = y + 0.5 * al(size=x.shape)
```
然后,使用curve_fit函数进行拟合。传入函数模型、实验数据以及初始参数的猜测值:
```python
popt, pcov = curve_fit(func, x, y_noise, p0=(1, 1, 1))
```
最后,绘制原始数据和拟合的曲线:
```python
plt.plot(x, y_noise, 'b.', label='Experimental Data')
plt.plot(x, func(x, *popt), 'r-', label='Fitted Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
```
python新手函数完整的代码如下:
```python
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def func(x, a, b, c):
return a * x ** 2 + b * x + c
x = np.linspace(-10, 10, 100)
y = func(x, 1, 2, 3)
np.random.seed(0)
y_noise = y + 0.5 * al(size=x.shape)
popt, pcov = curve_fit(func, x, y_noise, p0=(1, 1, 1))
plt.plot(x, y_noise, 'b.', label='Experimental Data')
plt.plot(x, func(x, *popt), 'r-', label='Fitted Curve')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
```
运行以上代码,可以得到原始数据和拟合曲线的图形。拟合结果中的popt变量存储了最优的函数参数值。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论