大家好,欢迎来到IT知识分享网。
问题描述
在平面内给定n个点 {Pi=(xi, yi)}, i = [1, n]。
分别使用多项式插值, 拉格朗日插值, 高斯基函数插值, 最小二乘多项式(最多m次方)逼近, 最小二乘多项式(最多m次方)岭回归逼近来拟合函数f(x)
多项式插值
设多项式 f ( x ) = ∑ i = 0 n − 1 a i x i 设多项式f(x) = \displaystyle\sum_{i=0}^{n-1}a_ix^i 设多项式f(x)=i=0∑n−1aixi
对于n个点就有n个方程
{ y 1 = a 0 + a 1 x 1 + a 2 x 1 2 + . . . + a n − 1 x 1 n − 1 y 2 = a 0 + a 1 x 2 + a 2 x 2 2 + . . . + a n − 1 x 2 n − 1 . . . y n = a 0 + a 1 x n + a 2 x n 2 + . . . + a n − 1 x n n − 1 \left \{\begin{array}{lc} y_1=a_0+a_1x_1+a_2x_1^2+…+a_{n-1}x_1^{n-1} \\ y_2=a_0+a_1x_2+a_2x_2^2+…+a_{n-1}x_2^{n-1} \\ …\\y_n=a_0+a_1x_n+a_2x_n^2+…+a_{n-1}x_n^{n-1} \end{array} \right. ⎩
⎨
⎧y1=a0+a1x1+a2x12+…+an−1x1n−1y2=a0+a1x2+a2x22+…+an−1x2n−1…yn=a0+a1xn+a2xn2+…+an−1xnn−1
求解方程组Ba=Y, 即可得到a向量,
拉格朗日插值
f ( x ) = ∑ k = 0 n − 1 y k l k ( x ) f(x) = \displaystyle\sum_{k=0}^{n-1}y_kl_k(x) f(x)=k=0∑n−1yklk(x)
上式中 l k ( x ) = ∏ j = 0 , j ≠ k n − 1 x − x j x i − x j 上式中l_k(x) = \displaystyle\prod_{j=0,j\ne k}^{n-1}\frac{x-x_j}{x_i-x_j} 上式中lk(x)=j=0,j=k∏n−1xi−xjx−xj
拉格朗日插值结果与多项式插值法得出的曲线是相同, 计算量比直接解方程少.
牛顿插值也有相同的功能.
高斯基函数插值
设 f ( x ) = a 0 + ∑ i = 1 n a i g i ( x ) 设f(x) = a_0 + \displaystyle\sum_{i=1}^{n}a_ig_i(x) 设f(x)=a0+i=1∑naigi(x)
g i ( x ) = e − ( x − x i ) 2 2 σ 2 , σ 为用户给定参数 g_i(x) = e^{-\frac {(x-x_i)^2}{2\sigma^2}}, \sigma为用户给定参数 gi(x)=e−2σ2(x−xi)2,σ为用户给定参数
a = [ a 0 a 1 a 2 . . . a n ] 为未知数 a=\begin{bmatrix} a_0\\a_1\\a_2\\…\\a_n \end{bmatrix} 为未知数 a=
a0a1a2…an
为未知数
点代入f(x)
得到方程组
{ y 1 = a 0 + a 1 g 1 ( x 1 ) + a 2 g 2 ( x 1 ) + . . . + a n g n ( x 1 ) y 2 = a 0 + a 1 g 1 ( x 2 ) + a 2 g 2 ( x 2 ) + . . . + a n g n ( x 2 ) . . . y n = a 0 + a 1 g 1 ( x n ) + a 2 g 2 ( x n ) + . . . + a n g n ( x n ) \left \{\begin{array}{lc} y_1=a_0+a_1g_1(x_1)+a_2g_2(x_1)+…+a_ng_n(x_1) \\ y_2=a_0+a_1g_1(x_2)+a_2g_2(x_2)+…+a_ng_n(x_2) \\ …\\ y_n=a_0+a_1g_1(x_n)+a_2g_2(x_n)+…+a_ng_n(x_n) \end{array} \right. ⎩
⎨
⎧y1=a0+a1g1(x1)+a2g2(x1)+…+angn(x1)y2=a0+a1g1(x2)+a2g2(x2)+…+angn(x2)…yn=a0+a1g1(xn)+a2g2(xn)+…+angn(xn)
上面只有n条方程, 有n+1个未知数, 我们加入一条构造方程
f ( x 1 + x 2 2 ) = y 1 + y 2 2 f(\frac {x_1+x_2}2) = \frac {y_1+y_2}2 f(2x1+x2)=2y1+y2
求解方程组即可得到a向量.
最小二乘多项式逼近
在多项式插值中, 随着点数增多,曲线阶会升高, 阶数过高时会带来不稳定因素。
我们可以通过固定幂基函数来作拟合逼近。
设 f ( x ) = ∑ i = 0 m a i x i , m < n 设f(x) = \sum_{i=0}^ma_ix_i, m<n 设f(x)=∑i=0maixi,m<n
构建方程组
{ y 1 = a 0 + a 1 x 1 + a 2 x 1 2 + . . . + a m x 1 m y 2 = a 0 + a 1 x 2 + a 2 x 2 2 + . . . + a m x 2 m . . . y n = a 0 + a 1 x n + a 2 x n 2 + . . . + a m x n m \left \{\begin{array}{lc} y_1=a_0+a_1x_1+a_2x_1^2+…+a_{m}x_1^{m} \\ y_2=a_0+a_1x_2+a_2x_2^2+…+a_{m}x_2^{m} \\ …\\y_n=a_0+a_1x_n+a_2x_n^2+…+a_{m}x_n^{m} \end{array} \right. ⎩
⎨
⎧y1=a0+a1x1+a2x12+…+amx1my2=a0+a1x2+a2x22+…+amx2m…yn=a0+a1xn+a2xn2+…+amxnm
上述方程数多于未知数,可以利用最小二乘来得到最优解。
Y = [ y 1 y 2 . . . y n ] Y=\begin{bmatrix} y_1\\y_2\\…\\y_n \end{bmatrix} Y=
y1y2…yn
B = [ 1 x 1 x 1 2 . . . x 1 m 1 x 2 x 2 2 . . . x 2 m . . . . . . . . . . . . . . . 1 x n x n 2 . . . x n m ] B=\begin{bmatrix} 1&x_1&x_1^2&…&x_1^{m}\\1&x_2&x_2^2&…&x_2^{m}\\…&…&…&…&…\\1&x_n&x_n^2&…&x_n^{m} \end{bmatrix} B=
11…1x1x2…xnx12x22…xn2…………x1mx2m…xnm
a = [ a 0 a 1 . . . a n − 1 ] a=\begin{bmatrix} a_0\\a_1\\…\\a_{n-1} \end{bmatrix} a=
a0a1…an−1
最小二乘求解
最小二乘优化 m i n ∣ ∣ B a − Y ∣ ∣ 2 , a = ( B T B ) − 1 ( B T Y ) 最小二乘优化min||Ba-Y||^2,a = (B^{T}B)^{-1}(B^TY) 最小二乘优化min∣∣Ba−Y∣∣2,a=(BTB)−1(BTY)
岭回归逼近
在上述逼近算法中, 会存在过拟合的情况,可以加入2模正则项作为惩罚函数,希望系数的模越小越好。
最小二乘优化 m i n ∣ ∣ B a − Y ∣ ∣ 2 + λ ∣ ∣ a ∣ ∣ 2 , λ = 0.5 最小二乘优化min ||Ba-Y||^2+\lambda||a||^2,\lambda=0.5 最小二乘优化min∣∣Ba−Y∣∣2+λ∣∣a∣∣2,λ=0.5
对 ∣ ∣ B a − Y ∣ ∣ 2 + λ ∣ ∣ a ∣ ∣ 2 求导 , 使得导数等于 0 ,得到 对 ||Ba-Y||^2+\lambda||a||^2求导, 使得导数等于0,得到 对∣∣Ba−Y∣∣2+λ∣∣a∣∣2求导,使得导数等于0,得到
2 B T Y − 2 B T B a − 2 λ I a = 0 2B^TY-2B^TBa-2\lambda I a=0 2BTY−2BTBa−2λIa=0
a = ( B T B + λ I ) − 1 B T Y a=(B^TB+\lambda I)^{-1}B^TY a=(BTB+λI)−1BTY
运行结果
高斯基函数拟合如果没有合适的sigma,效果会很不好,可以通过RBF神经网络对sigma和miu进行训练。
本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接,帮忙转发,感激不尽。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136547.html