概念最小二乘法多项式曲线拟合,根据给定的m个点,并不要求这条曲线精确地通过这些点,而是曲线y=f(x)的近似曲线y=φ(x)。原理[原理部分由个人根据互联网上的资料进行总结,希望对大伙能有用] 给定数据点pi(xi,yi),其中i=1,2,…,m。求近似曲线y=φ(x)。并且使得近似曲线与y=f(x)的偏差最小。近似曲线在点pi处的偏差δi=φ(xi)-y,i=1,2,...,m。 常用的曲线拟合方法: 按偏差平方和最小的原则选取拟合曲线,并且采取二项式方程为拟合曲线的方法,称为最小二乘法。推导过程: 1. 设拟合多项式为: 2. 各点到这条曲线的距离之和,即偏差平方和如下: 3. 为了求得符合条件的a值,对等式右边求ai偏导数,因而我们得到了: ....... 4. 将等式左边进行一下化简,然后应该可以得到下面的等式: ....... 5. 把这些等式表达成矩阵的形式,就可以得到下面的矩阵: 6. 将这个范德蒙得矩阵化简后可得到: 7. 也就是说X*A=Y,那么A=(X'*X)-1*X'*Y,便得到了系数矩阵A,同时,我们也就得到了拟合曲线。实现运行前提:Python运行环境与编辑环境;,可用于快速绘制2D图表,与matlab中的plot命令类似,并且用法也基本相同。代码:[python] viewplain copy# coding=utf-8 ''''' 作者:Jairus Chan 程序:多项式曲线拟合算法 ''' import as plt import math import numpy import random fig = () ax = (111) #阶数为9阶 order=9 #生成曲线上的各个点 x = (-1,1,) y = [((a*a-1)*(a*a-1)*(a*a-1)+)*(a*2) for a in x] #(x,y,color='r',linestyle='-',marker='') #,label="(a*a-1)*(a*a-1)*(a*a-1)+" #生成的曲线上的各个点偏移一下,并放入到xa,ya中去 i=0 xa=[] ya=[] for xx in x: yy=y[i] d=float((60,140))/100 #([xx*d],[yy*d],color='m',linestyle='',marker='.') i+=1 (xx*d) (yy*d) '''''for i in range(0,5)
python-曲线拟合-原理-代码 来自淘豆网m.daumloan.com转载请标明出处.