最小二乘
Python 二次拟合
随机生成数据,并且加上噪声干扰
构造需要拟合的函数形式,使用最小二乘法进行拟合
输出拟合后的参数
将拟合后的函数与原始数据绘图后进行对比
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
# X = np.array(xx)
# Y = np.array(yy)
X = np.linspace(0, 10, 100)
Y = 4 * X ** 2 - 9 * X + 3 + np.random.randn(100) * 3
# 二次函数的标准形式
def func(params, x):
a, b, c = params
return a * x * x + b * x + c
# 误差函数,即拟合曲线所求的值与实际值的差
def error(params, x, y):
return func(params, x) - y
# 对参数求解
def slovePara():
p0 = [1, 1, 1]
Para = leastsq(error, p0, args=(X, Y))
return Para
# 输出最后的结果
def solution():
Para = slovePara()
a, b, c =