最小二乘法进行曲线拟合

工作需求,这里记录一下数值插值和数值分析方面的算法,希望和大家一起进步。

曲线拟合的最小二乘定义

求一条曲线,使数据点均在离此曲线的上方或下方不远处,所求的曲线称为拟合曲线,
它既能反映数据的总体分布,又不至于出现局部较大的波动,更能反映被逼近函数的特性,
使求得的逼近函数与已知函数从总体上来说其偏差按某种方法度量达到最小,
这就是最小二乘法.
与函数插值不同,曲线拟合不要求曲线通过所有已知点,而是要求得到的近似函数能反映数据的基本关系,
在某种意义上,曲线拟合更有实用价值.

已 知 离 散 观 测 数 据 点 f ( x ) : ( x 0 , y 0 ) 、 ( x 1 , y 1 ) 、 ( x 2 , y 2 ) ⋯ ( x n , y n ) , 求 得 曲 线 拟 合 函 数 p ( x ) , 记 p ( x ) 在 x i 处 的 残 差 为 : ϵ i = p ( x i ) − f ( x i ) ( i = 0 , 1 , 2 ⋯   , n ) 记 向 量 e = [ ϵ 0 , ϵ 1 ⋯   , ϵ n ] 若 e 的 2 − 范 数 : Σ i = 0 n ϵ i 2 = Σ i = 0 n [ p ( x i ) − f ( x i ) ] 2 为 最 小 则 p ( x ) 为 最 小 二 乘 法 拟 合 得 来 的 曲 线 . 已知离散观测数据点 f(x):(x_0,y_0)、(x_1,y_1)、(x_2,y_2)\cdots(x_n,y_n),求得曲线拟合函数p(x),记p(x)在x_i处的残差为:\\ \epsilon_i = p(x_i) - f(x_i) (i=0,1,2\cdots,n)\\ 记向量e=[\epsilon_0,\epsilon_1\cdots,\epsilon_n]\\ 若e的2-范数:\Sigma^n_{i=0}\epsilon^2_i = \Sigma^n_{i=0}[p(x_i)-f(x_i)]^2为最小\\ 则p(x)为最小二乘法拟合得来的曲线. f(x):(x0,y0)(x1,y1)(x2,y2)(xn,yn),线p(x)p(x)xiϵi=p(xi)f(xi)(i=0,1,2,n)e=[ϵ0,ϵ1,ϵn]e2Σi=0nϵi2=Σi=0n[p(xi)f(xi)]2p(x)线.

最小二乘法–多项式拟合

条件:

对 于 给 定 的 一 组 数 据 ( x i , y i ) , i = 1 , 2 , . . . , m , 寻 求 次 数 不 超 过 n ( n < < m ) 的 多 项 式 : y = a 0 + a 1 x + a 2 x 2 + . . . + a n x n 来 拟 合 给 定 的 数 据 , 使 偏 差 的 平 方 和 Q = Σ i = 1 m ( y i − Σ j = 0 n a j x i j ) 2 为 最 小 . 对于给定的一组数据(x_i,y_i),i=1,2,...,m,寻求次数不超过n (n<<m)的多项式:\\ y = a_0 + a_1x + a_2x^2 + ... + a_nx^n 来拟合给定的数据,使偏差的平方和\\ Q = \Sigma^m_{i=1}(y_i-\Sigma^n_{j=0}a_jx^j_i)^2 为最小. (xi,yi),i=1,2,...,m,n(n<<m):y=a0+a1x+a2x2+...+anxn使Q=Σi=1m(yiΣj=0najxij)2.

Q可以看做是关于系数a的多元函数,所以拟合多项式的构造问题可归结为多元函数的极值问题:

∂ Q ∂ a k = 0 , k = 0 , 1 , 2 , . . . , n 即 : Σ i = 1 m ( y i − Σ j = 0 n a j x i j ) x i k = 0 , k = 0 , 1 , 2 , . . . , n \frac {\partial Q } {\partial a_k }=0,\quad k=0,1,2,...,n\\ 即:\\ \Sigma^m_{i=1}(y_i-\Sigma^n_{j=0}a_jx^j_i)x^k_i=0 ,\quad k=0,1,2,...,n\\ akQ=0,k=0,1,2,...,nΣi=1m(yiΣj=0najxij)xik=0,k=0,1,2,...,n

上式是关于系数a的线性方程组,有唯一解.

算法示例

多项式拟合–直线拟合

取数据点:

( 1 , 1 ) , ( 2.5 , 2 ) , ( 3 , 3.3 ) , ( 3.5 , 4 ) , ( 5.6 , 5 ) , ( 9 , 8 ) , ( 11 , 9 ) 设 拟 合 曲 线 p ( x ) = a 0 + a 1 x (1,1),(2.5,2),(3,3.3),(3.5,4),(5.6,5),(9,8),(11,9)\\ 设拟合曲线 p(x) = a_0+a_1x (1,1),(2.5,2),(3,3.3),(3.5,4),(5.6,5),(9,8),(11,9)线p(x)=a0+a1x

求e -2范数关于a0,a1的偏导数,得到下列方程组:

{ 2 Σ i = 1 m ( a 0 + a 1 x i − y i ) = 0 2 Σ i = 1 m ( a 0 + a 1 x i − y i ) x i = 0 得 到 : { a 0 m + a 1 Σ i = 1 m x i = Σ i = 1 m y i a 0 Σ i = 1 m x i + a 1 Σ i = 1 m x i 2 = Σ i = 1 m x i y i \begin{cases} 2\Sigma^m_{i=1}(a_0+a_1x_i-y_i)=0\\ \\ 2\Sigma^m_{i=1}(a_0+a_1x_i-y_i)x_i=0\\ \end{cases} \\ 得到:\\ \begin{cases} a_0m+a_1\Sigma^m_{i=1}x_i=\Sigma^m_{i=1}y_i\\ \\ a_0\Sigma^m_{i=1}x_i+a_1\Sigma^m_{i=1}x^2_i=\Sigma^m_{i=1}x_iy_i\\ \end{cases} 2Σi=1m(a0+a1xiyi)=02Σi=1m(a0+a1xiyi)xi=0a0m+a1Σi=1mxi=Σi=1myia0Σi=1mxi+a1Σi=1mxi2=Σi=1mxiyi

总共有7个数据点,取m=7,使用高斯消元法解上述方程组,解得:

a 0 = 0.5466852879821776 a 1 = 0.7998090725877739 a_0 = 0.5466852879821776\\ a_1 = 0.7998090725877739 a0=0.5466852879821776a1=0.7998090725877739

python图像为:

在这里插入图片描述

多项式拟合–抛物线拟合

设 拟 合 曲 线 p ( x ) = a x 2 + b x + c 设拟合曲线 p(x) = ax^2+bx+c 线p(x)=ax2+bx+c

求e -2范数关于a,b,c的偏导数,三个方程,利用高斯消元法,即可解得抛物线方程。
步骤和直线拟合类似,不再叙述.
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值