51nod 1747 近似多项式(最小二乘法)

最小二乘法

最小二乘法可以拟用于曲线拟合。
比如离散的给定点的运动轨迹轨迹: P0,P1,...,Pn P 0 , P 1 , . . . , P n
用一个多项式曲线 f(x) f ( x ) ,近似描绘出运动轨迹。

f(x)=i=0Naixi f ( x ) = ∑ i = 0 N a i x i

运动轨迹可以看作是一个离散的函数。近似程度可以用:

E(a0,a1,....aN)=i=0n(f(xi)yi)2 E ( a 0 , a 1 , . . . . a N ) = ∑ i = 0 n ( f ( x i ) − y i ) 2

为什么使用平方,可能它真的很好。而却确实有很多优点。 比如

|lx|+|xr| | l − x | + | x − r |
(lx)2+(xr)2 ( l − x ) 2 + ( x − r ) 2

对于上面的式子,x在取值(l,r)时,大小是恒定的。下面的式子,x去中间正好最小。 a2+b22ab a 2 + b 2 ≥ 2 a b
如果 P P 是一条连已知函数的曲线g(x)。以题目为例: g(x)=exp(x) g ( x ) = e x p ( x )

如果要找到在区间[0,1]最为近似 g(x) g ( x ) N N 次多项式f(x).因为给出的g是连续的,那么对应的和式变积分有:

E(a0,a1,a2,...aN)=10(f(x)g(x))2dx E ( a 0 , a 1 , a 2 , . . . a N ) = ∫ 0 1 ( f ( x ) − g ( x ) ) 2 d x

极小化E,使其偏导在各个方向为0.
Eas=10(f(x)g(x))2dxas=10(Ni=0aixig(x))2dxas=10((Ni=0aixi)2as+g2(x)as2(Ni=0aixi)g(x)as)dx ∂ E ∂ a s = ∫ 0 1 ∂ ( f ( x ) − g ( x ) ) 2 d x ∂ a s = ∫ 0 1 ∂ ( ∑ i = 0 N a i x i − g ( x ) ) 2 d x ∂ a s = ∫ 0 1 ( ∂ ( ∑ i = 0 N a i x i ) 2 ∂ a s + ∂ g 2 ( x ) ∂ a s − 2 ∂ ( ∑ i = 0 N a i x i ) g ( x ) ∂ a s ) d x

其中:

(Ni=0aixi)2as=(Ni=0aixi)2(Ni=0aixi)(Ni=0aixi)as=2i=0Naixi+s ∂ ( ∑ i = 0 N a i x i ) 2 ∂ a s = ∂ ( ∑ i = 0 N a i x i ) 2 ∂ ( ∑ i = 0 N a i x i ) ∂ ( ∑ i = 0 N a i x i ) ∂ a s = 2 ∑ i = 0 N a i x i + s

其中:

g2(x)as=0 ∂ g 2 ( x ) ∂ a s = 0

其中:

(Ni=0aixi)g(x)as=xsg(x) ∂ ( ∑ i = 0 N a i x i ) g ( x ) ∂ a s = x s g ( x )

令各个方向偏导为0 有:

10(2i=0Naixi+s+02xsg(x))dx ∫ 0 1 ( 2 ∑ i = 0 N a i x i + s + 0 − 2 x s g ( x ) ) d x

即:

10i=0Naixi+sdx=10xsg(x)dx ∫ 0 1 ∑ i = 0 N a i x i + s d x = ∫ 0 1 x s g ( x ) d x

即:

i=0Nai10xi+sdx=10xsg(x)dx ∑ i = 0 N a i ∫ 0 1 x i + s d x = ∫ 0 1 x s g ( x ) d x

即为:

10xNdx10xN+1dx10x2Ndx10xN1dx10xNdx10x2N1dx10x0dx10x1dx10xNdxaNaN1a0=10x0g(x)dx10x1g(x)dx10xNg(x)dx [ ∫ 0 1 x N d x ∫ 0 1 x N − 1 d x ⋯ ∫ 0 1 x 0 d x ∫ 0 1 x N + 1 d x ∫ 0 1 x N d x ⋯ ∫ 0 1 x 1 d x ⋮ ⋮ ⋱ ⋮ ∫ 0 1 x 2 N d x ∫ 0 1 x 2 N − 1 d x ⋯ ∫ 0 1 x N d x ] [ a N a N − 1 ⋮ a 0 ] = [ ∫ 0 1 x 0 g ( x ) d x ∫ 0 1 x 1 g ( x ) d x ⋮ ∫ 0 1 x N g ( x ) d x ]

如果是和式,则积分符号变为求和符号。如果上述矩阵存在逆矩阵。则求逆后计算a向量。
原题中, g(x)=exp(x) g ( x ) = e x p ( x )
令: Ft(x)=xtexp(x) F t ′ ( x ) = x t e x p ( x )
有因为: (xtexp(x))=xtexp(x)+txt1exp(x) ( x t e x p ( x ) ) ′ = x t e x p ( x ) + t x t − 1 e x p ( x )
所以: Ft(x)=xtexp(x)tFt1(x) F t ( x ) = x t e x p ( x ) − t F t − 1 ( x ) ,这样就得到了在最优解的情况。
当然,与原题答案形式不同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值