import numpy as np
from scipy.optimize import curve_fit
# 创建函数,直线f(x) = ax+b
def func(x, a, b):
return a * x + b
# 生成测试数据,f(x)=x+2
x = np.linspace(0, 10, 100)
y = func(x, 1, 2)
# 给直线添加噪声,使之变形
yn = y + 0.9 * np.random.normal(size=len(x))
# 使用曲线拟合函数,返回曲线方程参数
popt, pcov = curve_fit(func, x, yn)
# 返回参数a=1, b=2
print(popt)
尝试二次曲线方程
import numpy as np
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * x*x + b*x + c
x = np.linspace(0, 10, 100)
y = func(x, 1, 2, 3)
yn = y + 0.9 * np.random.normal(size=len(x))
popt, pcov = curve_fit(func, x, yn)
print(popt)