n次多项式拟合

/ 默认分类 / 0 条评论 / 2207浏览

一、用最小二乘法进行n次拟合原理

给定一组数据请输入图片描述 作n次拟合曲线请输入图片描述 转化为均方误差 请输入图片描述 得到法方程: 请输入图片描述 请输入图片描述 解法方程得到a0,a1,...,an. 注意:当拟合多项式阶数n>5时, 法方程的系数矩阵时病态的。 二、算例

数据集: x = -3,-2,-1,0,1,2,3 y = 4,2,3,0,-1,-2,-5 程序实现:

#n次拟合曲线:y=a0+a1x+a2x^2+...+anx^n
import numpy as np
x_array = np.array([-3,-2,-1,0,1,2,3])
y_array = np.array([4,2,3,0,-1,-2,-5])
n = 2 #方程的次数(n<5)
m = len(x_array)#方程个数
 
A = np.ones(m).reshape((m,1))
for i in range(n):
    A = np.hstack([A,(x_array**(i+1)).reshape((m,1))])
 
from numpy.linalg import solve 
X = solve(np.dot(A.T,A),np.dot(A.T,y_array.T))
print(X)

请输入图片描述 输出结果: [ 0.66666667 -1.39285714 -0.13095238]

结果可视化:

请输入图片描述