最小二乘法拟合多项式
一、功能
利用最小二乘法去拟合直线、任意项高阶多项式。
二、最小二乘法拟合多项式
示例:
import random
import numpy as np
from scipy.optimize import leastsq # 最小二乘法
def orbit_fitting(t,m):
def func(p, x): #回归模型函数
w3, w2, w1, w0 = p #初始化要拟合方程的系数,根据自己的公式适当添加
return w3*x**3 + w2*x**2 +w1 * x + w0
def error(p, x, y): #误差
return func(p, x) - y
orbital_paras = []
p0 = [1, 2, 3, 4] #初始化参数 (随便输入)
x = np.array(t)
y = np.array(m)
Para = leastsq(error, p0, args=(x, y))
orbital_paras.append(Para[0])
print(Para[0], Para[1])
return orbital_paras
x = np.linspace(1, 1000, 70) # 创建时间序列
p_value = [-5,10,2,30] # 原始数据的参数
noise = random.random() # 创建随机噪声
w3, w2, w1, w0 = p_value
y= w3*x**3 + w2*x**2 +w1 * x + w0+noise * 2 # 加上噪声的序列
orbital_paras=orbit_