多项式函数类总结

多项式函数类总结文章介绍了多项式函数的概念 包括一元多项式函数的泰勒展开式和最小二乘估计方法用于参数求解

大家好,欢迎来到IT知识分享网。

多项式函数类总结

多项式函数

多项式函数类就是由多项式所构成的函数。对于一元函数来说,用一元多项式逼近的常见表达式为:
f ( x ) = a 0 + a 1 ( x − x 0 ) + a 2 ( x − x 0 ) 2 + a 3 ( x − x 0 ) 3 + ⋯ + a n ( x − x 0 ) n + ⋯ f(x)=a_0+a_1(x-x_0)+a_2(x-x_0)^2+a_3(x-x_0)^3+\cdots+a_n(x-x_0)^n+\cdots f(x)=a0+a1(xx0)+a2(xx0)2+a3(xx0)3++an(xx0)n+

其中根据维尔斯特拉斯定理和泰勒定理,我们可以得到 a n a_n an的表达式:
a n = f ( n ) ( x 0 ) n ! , n = 0 , 1 , 2 , ⋯   , n , ⋯ a_n=\frac{f^{(n)}(x_0)}{n!},n=0,1,2,\cdots,n,\cdots an=n!f(n)(x0),n=0,1,2,,n,

然而实际情况中,我们并不一定能知道 f ( x ) f(x) f(x)的函数形状,所以也就无法求出 f ( x ) f(x) f(x)的导数。前面的估计也就无法实施。这时候就需要使用最小二乘估计去估计模型的参数。以多元多项式函数为例:
对于多元函数,多元函数多项式为:
f ( x ∣ θ ) = a 0 + a 1 x 1 + a 2 x 2 + ⋯ + a n x n + a 11 x 1 2 + a 12 x 1 x 2 + ⋯ + a n n x n 2 f(x|\theta)=a_0+a_{1}x_1+a_{2}x_2+\cdots+a_nx_n+a_{11}x_1^2+a_{12}x_1x_2+\cdots+a_{nn}x_n^2 f(xθ)=a0+a1x1+a2x2++anxn+a11x12+a12x1x2++annxn2

其中函数参数包括 a 0 , a 1 , ⋯   , a n , a 11 , ⋯   , a n n a_0,a_1,\cdots,a_n,a_{11},\cdots,a_{nn} a0,a1,,an,a11,,ann。此时我们使用最小化估计误差的方法来求出上述参数。此时,函数 f ( x ) f(x) f(x)的估计表达式用向量乘法可以表示为:
f ( x ) = [ a 0 , a 1 , ⋯   , a n , a 11 , ⋯   , a n n ] ∗ [ 1 , x 1 , ⋯   , x n , x 1 x 1 , ⋯   , x n x n ] T f(x)=[a_0,a_1,\cdots,a_n,a_{11},\cdots,a_{nn}]*[1,x_1,\cdots,x_n,x_1x_1,\cdots,x_nx_n]^T f(x)=[a0,a1,,an,a11,,ann][1,x1,,xn,x1x1,,xnxn]T

记前面的参数行向量为 Θ \Theta Θ,后面的观测列向量为 ψ ( x ) \psi(x) ψ(x)。那么就有:
f ( x ) = Θ ∗ ψ ( x ) f(x)=\Theta*\psi(x) f(x)=Θψ(x)

此时对于 m m m个样本的估计误差为,其中 X i X_i Xi为第 i i i个样本所对应的 [ x 1 , x 2 , ⋯   , x n ] [x_1,x_2,\cdots,x_n] [x1,x2,,xn] Y i Y_i Yi为第 i i i个样本的实际值:
E r r o r = ∑ i = 1 m [ Y i − f ( X i ) ] 2 = [ Y − Θ ∗ ψ ( X ) ] ∗ [ Y − Θ ∗ ψ ( X ) ] T Error=\sum_{i=1}^{m}{[Y_i-f(X_i)]}^2=[Y-\Theta*\psi(X)]*[Y-\Theta*\psi(X)]^T Error=i=1m[Yif(Xi)]2=[YΘψ(X)][YΘψ(X)]T

其中 Y = [ Y 1 , Y 2 , ⋯   , Y m ] Y=[Y_1,Y_2,\cdots,Y_m] Y=[Y1,Y2,,Ym] ψ ( X ) = [ ψ ( X 1 ) , ψ ( X 2 ) , ⋯   , ψ ( X m ) ] \psi(X)=[\psi(X_1),\psi(X_2),\cdots,\psi(X_m)] ψ(X)=[ψ(X1),ψ(X2),,ψ(Xm)]。然后我们的目标是最小化估计误差也就是最小化 E r r o r Error Error,所以用 E r r o r Error Error Θ \Theta Θ求导。同时根据矩阵与向量之间的相合性。
∂ E r r o r ∂ Θ = [ Y − Θ ∗ ψ ( X ) ] ∗ ψ ( X ) T + ∂ [ Y − Θ ∗ ψ ( X ) ] ∂ Θ ∗ [ Y − Θ ∗ ψ ( X ) ] T \frac{\partial{Error}}{\partial\Theta}=[Y-\Theta*\psi(X)]*\psi(X)^T+\frac{\partial{[Y-\Theta*\psi(X)]}}{\partial\Theta}*[Y-\Theta*\psi(X)]^T ΘError=[YΘψ(X)]ψ(X)T+Θ[YΘψ(X)][YΘψ(X)]T

∂ E r r o r ∂ Θ = 2 [ Y − Θ ∗ ψ ( X ) ] ∗ ψ ( X ) T \frac{\partial{Error}}{\partial\Theta}=2[Y-\Theta*\psi(X)]*\psi(X)^T ΘError=2[YΘψ(X)]ψ(X)T

∂ E r r o r ∂ Θ = 0 \frac{\partial{Error}}{\partial\Theta}=0 ΘError=0,可以得到:
Y ∗ ψ ( X ) T − Θ ∗ ψ ( X ) ∗ ψ ( X ) T = 0 Y*\psi(X)^T-\Theta*\psi(X)*\psi(X)^T=0 Yψ(X)TΘψ(X)ψ(X)T=0

其中为了方便, x 0 = 0 x_0=0 x0=0,则近似函数为:
f ( x ) = 0 + 1 1 ! x + 0 2 ! x 2 f(x)=0+\frac{1}{1!}x+\frac{0}{2!}x^2 f(x)=0+1!1x+2!0x2

代码如下所示:

import numpy as np import matplotlib.pyplot as plt if __name__=='__main__': ''' 利用多项式函数仿真sin(x)函数,由于sin函数具有特殊的导数特性 sin -> cos -> -sin -> -cos -> sin 0 -> 1 -> 0 -> -1 -> 0 ''' x=np.linspace(-10,10,1001) sum=np.linspace(0,0,1001) l=[0,1,0,-1] temp=1 for k in range(3): if k !=0: temp=temp*k sum=sum+l[k%4]/temp*(xk) ll=np.linspace(-5,5,501) plt.plot(ll,np.sin(ll),label='orign') plt.plot(x,sum,label='simul') plt.legend() plt.show() 

代码如下:

import numpy as np import matplotlib.pyplot as plt if __name__=='__main__': ''' 利用多项式函数仿真sin(x)函数,由于sin函数具有特殊的导数特性 sin -> cos -> -sin -> -cos -> sin 0 -> 1 -> 0 -> -1 -> 0 ''' x=np.linspace(-10,10,1001) sum=np.linspace(0,0,1001) l=[0,1,0,-1] temp=1 for k in range(6): if k !=0: temp=temp*k sum=sum+l[k%4]/temp*(xk) ll=np.linspace(-5,5,501) plt.plot(ll,np.sin(ll),label='orign') plt.plot(x,sum,label='simul') plt.legend() plt.show() 
import numpy as np import matplotlib.pyplot as plt if __name__=='__main__': ''' 利用多项式函数仿真sin(x)函数,由于sin函数具有特殊的导数特性 sin -> cos -> -sin -> -cos -> sin 0 -> 1 -> 0 -> -1 -> 0 ''' x=np.linspace(-5.1,5.1,511) sum=np.linspace(0,0,511) l=[0,1,0,-1] temp=1 for k in range(6): if k !=0: temp=temp*k sum=sum+l[k%4]/temp*(xk) ll=np.linspace(-5,5,501) plt.plot(ll,np.sin(ll),label='orign') plt.plot(x,sum,label='simul') plt.legend() plt.show() 

用连续函数进行逼近与用阶跃函数进行逼近最大的区别就是:用连续函数逼近不用划分区间。因为用阶跃函数逼近函数时,是通过划分区间后的窗口函数进行逼近的,而连续函数逼近则是从定义上进行逼近的。比如多项式函数就是所有单项式加起来的函数去逼近一个函数。而三角函数就是所有的三角函数加起来去逼近一个函数,至于一元和多元的区别,接下来进行分析。

一元单项式的样子为: a n ( x 1 − x 10 ) n , n = Z a_{n}(x_1-x_{10})^{n},n=Z an(x1x10)n,n=Z
一元多项式就是所有的一元单项式加起来:
∑ n = 0 + ∞ a n ( x 1 − x 10 ) n \sum_{n=0}^{+\infty}a_{n}(x_1-x_{10})^{n} n=0+an(x1x10)n

我们截取 n 1 + n 2 ≤ 1 n_1+n_2\le1 n1+n21的所有项作为近似,也就是:
a 00 + a 10 ( x 1 − x 10 ) + a 01 ( x 2 − x 20 ) a_{00}+a_{10}(x_1-x_{10})+a_{01}(x_2-x_{20}) a00+a10(x1x10)+a01(x2x20)

从中可以看出有三个未定参数 a 00 , a 01 , a 10 a_{00},a_{01},a_{10} a00,a01,a10。可以用 ω x + b \omega{x}+b ωx+b表示上述方程。
如果取: n 1 + n 2 ≤ 2 n_1+n_2\le2 n1+n22那么就有:
a 00 + a 10 ( x 1 − x 10 ) + a 01 ( x 2 − x 20 ) + a 11 ( x 1 − x 10 ) ( x 2 − x 20 ) a_{00}+a_{10}(x_1-x_{10})+a_{01}(x_2-x_{20})+a_{11}(x_1-x_{10})(x_2-x_{20}) a00+a10(x1x10)+a01(x2x20)+a11(x1x10)(x2x20)

有四个未知参数。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129553.html

(0)
上一篇 2025-08-23 15:33
下一篇 2025-08-23 15:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信