-
2020-07-07 01:16:19
基于径向基函数的函数插值
1. 函数插值
函数插值问题: 用形式简单的插值函数 f ^ ( x ) \hat f(x) f^(x) 近似原函数
( 1 ) \qquad(1) (1) 设函数 y = f ( x ) y=f(x) y=f(x) 在某个区间上有定义,并且已知该区间上的一些数据点 { x i , y i } \{x_i,y_i\} {xi,yi} 严格满足 y i = f ( x i ) , i = 1 , ⋯ , N y_i=f(x_i),i=1,\cdots,N yi=f(xi),i=1,⋯,N,这些数据点称为“控制节点”或“插值节点”
( 2 ) \qquad(2) (2) 如果存在一个形式上比较简单(比如 n n n 次多项式)的函数 f ^ ( x ) \hat f(x) f^(x),使得 f ^ ( x i ) = y i , i = 1 , ⋯ , N \hat f(x_i)=y_i,i=1,\cdots,N f^(xi)=yi,i=1,⋯,N 都成立,就称 f ^ ( x ) \hat f(x) f^(x) 为 f ( x ) f(x) f(x) 的插值函数。
\qquad 典型的函数插值方法:拉格朗日插值和牛顿插值、 H e r m i t e Hermite Hermite插值、样条插值等。
与“函数逼近”的主要区别:
插值函数 f ^ ( x ) \hat f(x) f^(x) 必须经过“插值节点”,也就是要满足 f ^ ( x i ) = y i , i = 1 , ⋯ , N \hat f(x_i)=y_i,i=1,\cdots,N f^(xi)=yi,i=1,⋯,N2. RBF函数插值
\qquad 与拉格朗日插值之类的常规函数插值不同,基于核函数的函数插值“通过引入核函数”来刻画数据的局部化特征。
\qquad 径向基函数 ( R a d i a l B a s i s F u n c t i o n , R B F ) (Radial\ Basis\ Function,RBF) (Radial Basis Function,RBF) 就是一类特殊的基函数,最常用的就是“高斯基函数”,定义为:
φ ( x ) = e − x 2 2 σ 2 \qquad\qquad\qquad\varphi(x)=e^{-\frac{x^2}{2\sigma^2}} φ(x)=e−2σ2x2 (以一维情况为例)
\qquad
RBF函数插值: f ^ ( x ) = ∑ i = 1 N w i φ ( ∥ x − x i ∥ ) \hat f(x)=\displaystyle\sum_{i=1}^Nw_i\varphi(\parallel x-x_i\parallel) f^(x)=i=1∑Nwiφ(∥x−xi∥)\qquad 假设有 N N N 个插值节点,也就是已知 { x j , y j } ∣ j = 1 N \{x_j,y_j\}\big |_{j=1}^N {xj,yj}∣∣j=1N,其中 f ^ ( x j ) = y j = f ( x j ) \hat f(x_j)=y_j=f(x_j) f^(xj)=yj=f(xj),如下图所示。
\qquad图中,红色实线为真实函数曲线,绿色空心圆圈代表插值节点 ( x j , y j ) (x_j,y_j) (xj,yj),蓝色实心点为RBF插值所求得的权值 w j w_j wj
\qquad 将 { x j , y j } ∣ j = 1 N \{x_j,y_j\}\big |_{j=1}^N {xj,yj}∣∣j=1N 带入方程 f ^ ( x ) = ∑ i = 1 N w i φ ( ∥ x − x i ∥ ) \hat f(x)=\displaystyle\sum_{i=1}^Nw_i\varphi(\parallel x-x_i\parallel) f^(x)=i=1∑Nwiφ(∥x−xi∥),可得到:
[ φ 11 φ 12 ⋯ φ 1 N φ 21 φ 22 ⋯ φ 2 N ⋮ ⋮ ⋮ φ 11 φ 12 ⋯ φ 1 N ] ⏟ Φ [ w 1 w 2 ⋮ w N ] ⏟ W = [ y 1 y 2 ⋮ y N ] ⏟ y \qquad\qquad\underbrace{\left[ \begin{matrix} \varphi_{11} & \varphi_{12} & \cdots & \varphi_{1N} \\ \varphi_{21} & \varphi_{22} & \cdots & \varphi_{2N} \\ \vdots & \vdots & &\vdots \\ \varphi_{11} & \varphi_{12} & \cdots & \varphi_{1N} \end{matrix} \right] }_{\Phi}\underbrace{ \left[ \begin{matrix} w_1 \\ w_2 \\ \vdots \\ w_N \end{matrix} \right]}_{\bold W}=\underbrace{\left[ \begin{matrix} y_1 \\ y_2 \\ \vdots \\ y_N \end{matrix} \right]}_{\bold y} Φ ⎣⎢⎢⎢⎡φ11φ21⋮φ11φ12φ22⋮φ12⋯⋯⋯φ1Nφ2N⋮φ1N⎦⎥⎥⎥⎤W ⎣⎢⎢⎢⎡w1w2⋮wN⎦⎥⎥⎥⎤=y ⎣⎢⎢⎢⎡y1y2⋮yN⎦⎥⎥⎥⎤,其中 φ j i = φ ( ∥ x j − x i ∥ ) \varphi_{ji}=\varphi(\parallel x_j-x_i\parallel) φji=φ(∥xj−xi∥)
\qquad
\qquad 其中, Φ = [ φ j i ] \Phi=[\varphi_{ji}] Φ=[φji] 为插值矩阵。因为 φ j i = φ ( ∥ x j − x i ∥ ) = φ i j \varphi_{ji}=\varphi(\parallel x_j-x_i\parallel)=\varphi_{ij} φji=φ(∥xj−xi∥)=φij,因此插值矩阵是对称的。对于高斯核函数而言,插值矩阵的对角线元素的值为 1 1 1。\qquad 将线性方程组记为 Φ W = y \Phi\bold W=\bold y ΦW=y,该方程组的第 j j j 行为:
f ^ ( x j ) = y j = w 1 φ ( ∥ x j − x 1 ∥ ) + w 2 φ ( ∥ x j − x 2 ∥ ) + ⋯ + w N φ ( ∥ x j − x N ∥ ) \qquad\qquad\hat f(x_j)=y_j=w_1\varphi(\parallel x_j-x_1\parallel)+w_2\varphi(\parallel x_j-x_2\parallel)+\cdots+w_N\varphi(\parallel x_j-x_N\parallel) f^(xj)=yj=w1φ(∥xj−x1∥)+w2φ(∥xj−x2∥)+⋯+wNφ(∥xj−xN∥)
\qquad 因此,可求出 R B F RBF RBF 插值的系数为: W = Φ − 1 y \bold W=\Phi^{-1}\bold y W=Φ−1y,其示意图如下图所示。
Micchelli定理可以保证采用高斯函数时,插值矩阵 Φ \Phi Φ 是可逆的(只要插值节点互不相同)。
\qquad
代码实现
import numpy as np import matplotlib.pyplot as plt def gen_data(x1,x2): y_sample = np.sin(np.pi*x1/2)+np.cos(np.pi*x1/3) y_all = np.sin(np.pi*x2/2)+np.cos(np.pi*x2/3) return y_sample, y_all def kernel_interpolation(y_sample,x1,sig): gaussian_kernel = lambda x,c,h: np.exp(-(x-x[c])**2/(2*(h**2))) num = len(y_sample) w = np.zeros(num) int_matrix = np.asmatrix(np.zeros((num,num))) for i in range(num): int_matrix[i,:] = gaussian_kernel(x1,i,sig) w = int_matrix.I * np.asmatrix(y_sample).T return w def kernel_interpolation_rec(w,x1,x2,sig): gkernel = lambda x,xc,h: np.exp(-(x-xc)**2/(2*(h**2))) num = len(x2) y_rec = np.zeros(num) for i in range(num): for k in range(len(w)): y_rec[i] = y_rec[i] + w[k]*gkernel(x2[i],x1[k],sig) return y_rec if __name__ == '__main__': snum = 20 # control point数量 ratio = 20 # 总数据点数量:snum*ratio sig = 1 # 核函数宽度 xs = -8 xe = 8 x1 = np.linspace(xs,xe,snum) x2 = np.linspace(xs,xe,(snum-1)*ratio+1) y_sample, y_all = gen_data(x1,x2) plt.figure(1) w = kernel_interpolation(y_sample,x1,sig) y_rec = kernel_interpolation_rec(w,x1,x2,sig) plt.plot(x2,y_rec,'k') plt.plot(x2,y_all,'r:') plt.ylabel('y') plt.xlabel('x') for i in range(len(x1)): plt.plot(x1[i],y_sample[i],'go',markerfacecolor='none') plt.legend(labels=['reconstruction','original','control point'],loc='lower left') plt.title('kernel interpolation:$y=sin(\pi x/2)+cos(\pi x/3)$') plt.show()
运行结果:
在相同区间、分别采用 8 , 12 , 16 , 20 8,12,16,20 8,12,16,20 个控制节点 ( c o n t r o l p o i n t ) (control\ point) (control point) 进行函数插值的结果
显然,插值节点过少,无法体现整个函数的特征;插值节点越多,函数插值的结果越精确扩大插值区间范围,控制节点 ( c o n t r o l p o i n t ) (control\ point) (control point) 也需要增加数量,才能保持函数插值的准确性
\quad
另外,Scipy的插值模块也提供了RBF插值,其实现代码如下:import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import Rbf f = lambda x: np.sin(np.pi*x/2)+np.cos(np.pi*x/3) snum = 20 # control point数量 ratio = 20 # 总数据点数量:snum*ratio xs = -8 xe = 8 x1 = np.linspace(xs,xe,snum) # control points x2 = np.linspace(xs,xe,(snum-1)*ratio+1) # 作图总数据点 y1 = f(x1) # control points rf = Rbf(x1, y1) # reconstructed Rbf function y2 = rf(x2) # Rbf reconstruction plt.plot(x2, y2, 'k-', x2, f(x2),'r-', x1, y1, 'go', markerfacecolor='none') plt.legend(["Radial basis functions", "Orignal", "control point"],loc='best') plt.show()
其运行结果如下:
\quad
此外,RBF函数插值还可以通过径向基函数网络来实现。\quad
参考:函数插值的python实现——拉格朗日、牛顿插值更多相关内容 -
几种Hermite插值多项式存在唯一性的另一种368-04证明方法及推广的基函数构造方法
2020-06-26 17:37:31通过计算行列式的值,对几种Hermite插值多项式的存在唯一性给出另一种证明方法,对带不完全导数的m(m≥4)次Hermite插值多项式,给出推广的基函数构造方法,并对带不完全导数的三次及四次Hermite插值多项式的具体实例,给... -
《数值分析》-- 拉格朗日插值
2021-11-27 21:34:57文章目录问题一、拉格朗日插值基函数二、拉格朗日插值多项式三、次Lagrange插值多项式余项习题 问题 一、拉格朗日插值基函数 n=1时一次基函数 两点线性插值问题 问题:即已知函数 f(x)在点x0x_0x0和x1...
问题
一、拉格朗日插值基函数
- n=1时一次基函数
- 两点线性插值问题
- 问题:即已知函数 f(x)在点
x
0
x_0
x0和
x
1
x_1
x1点的函数值
y 0 y_0 y0=f( x 0 x_0 x0), y 1 y_1 y1=f( x 1 x_1 x1).
求线性函数 L 1 L_1 L1(x)= a 0 a_0 a0+ a 1 a_1 a1x
使满足条件: L 1 L_1 L1( x 0 x_0 x0)= y 0 y_0 y0, L 1 L_1 L1( x 1 x_1 x1)= y 1 y_1 y1
①:把x= x 0 x_0 x0带入 L 1 L_1 L1(x)中, L 1 ( x 0 ) L_1(x_0) L1(x0) = y 0 y_0 y0 + 0 = y 0 y_0 y0
②:把x= x 1 x_1 x1带入 L 1 L_1 L1(x)中, L 1 L_1 L1( x 1 x_1 x1) = y 0 y_0 y0 + ( y 1 y_1 y1- y 0 y_0 y0)( x 1 x_1 x1- x 0 x_0 x0) / ( x 1 x_1 x1- x 0 x_0 x0) = y 0 y_0 y0 + y 1 y_1 y1 - y 0 y_0 y0 = y 1 y_1 y1
则称 l 0 l_0 l0(x)叫做点 x 0 x_0 x0的一次插值基函数, l 1 l_1 l1(x)叫
做点 x 1 x_1 x1的一次插值基函数当x= x 0 x_0 x0时, l 0 l_0 l0=1; x= x 1 x_1 x1时, l 0 l_0 l0=0;
当x= x 0 x_0 x0时, l 1 l_1 l1=0; x= x 1 x_1 x1时, l 1 l_1 l1=1;- n=2时二次基函数
二、拉格朗日插值多项式
对上述举例:
begin---------------------------------------------
- n=1时
①:把x= x 0 x_0 x0带入 L 1 L_1 L1(x)中,
L1(x0)
= y 0 y_0 y0 + 0 = y 0 y_0 y0
②:把x= x 1 x_1 x1带入 L 1 L_1 L1(x)中,L1(x1)
= y 0 y_0 y0 + ( y 1 y_1 y1- y 0 y_0 y0)( x 1 x_1 x1- x 0 x_0 x0) / ( x 1 x_1 x1- x 0 x_0 x0) = y 0 y_0 y0 + y 1 y_1 y1 - y 0 y_0 y0 = y 1 y_1 y1
③:由此推广到 L n L_n Ln(x)的多项式, L n L_n Ln( x j x_j xj) = y j y_j yj j=0,1,2,…,nend-----------------------------------------------
再由插值多项式的唯一性: P n P_n Pn( x) = L n L_n Ln( x)
特别地:
当 n =1时又叫线性插值
,其几何意义为过两点的直线.
当 n =2时又叫抛物(线)插值
, 其几何意义为过三点的抛物线.- 注意
习题
三、n次Lagrange插值多项式余项
截断误差 R n ( x ) R_n(x) Rn(x)=f(x) - L n L_n Ln(x)也称为n次Lagrange插值多项式的余项。
- 拉格朗日余项定理
ω n \omega_n ωn + _+ + 1 _1 1( x x x) = ( x x x- x 0 x_0 x0)( x x x- x 1 x_1 x1)( x x x- x 2 x_2 x2)…( x x x- x n x_n xn)
由给定条件可知 R n ( x ) R_n(x) Rn(x)在节点 x k x_k xk( k k k=0,1,…,n)上为0,即 R n ( x ) R_n(x) Rn(x) = 0 ( k k k=0,1,…,n)
插值节点 x i x_i xi 上误差等于零
习题
-
例题
-
例题
2.
总结
- 拉格朗日插值的优缺点
- n=1时一次基函数
-
计算方法(五)函数插值
2021-05-23 14:56:50B中的一个值(Bx_xx,By_yy)怎么求: Ax_xx=Bx_xx(A的列数 / B的列数) Ay_yy=By_yy(A的行数 / B的行数) 如果结果有小数,那就四舍五入。 用(Ax_xx,Ay_yy)的值填入(Bx_xx,By_yy) 1.2 双线性...首先知道插值算法是用来图像缩放的。(图片放大,像素点增多,如何处理放大的更多像素点上的值)
1. 引入
1.1 最邻近插值算法
思路:新位置就照搬旁边的元素。
A是原图像,B是新图像(更大的),图像就是像素值的矩阵。
B中的一个值(B x _x x,B y _y y)怎么求:
A x _x x=B x _x x(A的列数 / B的列数)
A y _y y=B y _y y(A的行数 / B的行数)
如果结果有小数,那就四舍五入。用(A x _x x,A y _y y)的值填入(B x _x x,B y _y y)
1.2 双线性插值算法
思路:在两个向量上分别进行一次线性插值。
我惊了老师ppt跟本没有这东西,看不看都行,不过挺简单的也不用背。
简单说一下吧,就是上面那种方法A x _x x,A y _y y的结果可能是小数,那么小数部分不要四舍五入。
因为正方形总面积是1,可以作为概率比例,用每个小方块的面积*对角的点在矩阵A的值。
2. 拉格朗日插值法
拉格朗日插值,这个视频一共就四分钟,看看之后再看这本书上讲的内容。
2.1 公式
通用
这尽量不要背,还是根据上面那个视频理解。
拉格朗日插值基函数:
拉格朗日多项式:
线性插值
也是上面那个公式,只不过线性就是只有两个点(n=1)而已:
抛物线插值
三个点(n=2)啦:
看一下例5.1和例5.2,比较容易理解的。2.2 余项
通过上面那个视频我们可以知道,只有在 x i x_{i} xi处,才有 L n ( x i ) L_{n}(x_i) Ln(xi)= f ( x i ) f(x_i) f(xi)= y y y,其他位置, L n ( x i ) L_{n}(x_i) Ln(xi)都只能看作我们的估计值, L n ( x i ) L_{n}(x_i) Ln(xi)≠ f ( x i ) f(x_i) f(xi)。
所以,插值余项 R n ( x ) R_n(x) Rn(x)= f ( x ) f(x) f(x)- L n ( x ) L_{n}(x) Ln(x)表示在点x处产生的误差。
记住这个定理,其中拉格朗日和牛顿插值的余项 R n ( x ) R_n(x) Rn(x)都是这个:
3. 牛顿插值法
3.1 差商
记一下差商的计算方法:
一阶差商:
二阶:
通用:
这样,就可以求出来任意的差商了,差商计算路线如下:
但其实我们最终只用到斜线部分,其他只是用来辅助计算而已。零阶差商就是x对应的函数值。3.2 牛顿插值
直接看最通用公式:
其中, N 0 ( x ) N^{}_{0}(x) N0(x)= f ( x 0 ) f(x_{0}) f(x0)直接看一道例题,拉格朗日+牛顿全解决:
拉格朗日&牛顿3.3 余项
同刚才
4.三次埃尔米特插值
这里需要会两种情况的分别两个解法,考试会对解法有要求。
首先说明, H 3 ( x ) H_3(x) H3(x)就代表三次埃尔米特插值。
4.1 齐次埃尔米特插值
齐次是什么意思呢?每一个x对应一个y,并且还一定对应一个y ′ ' ′(这里将这个值设为字母m)。
在三次、齐次埃尔米特插值时,只有两个x值。
构造三次埃尔米特插值 H 3 ( x ) H_3(x) H3(x),使 H ( x k ) H(x_k) H(xk)= y k y_k yk, H ′ ( x k ) H'(x_k) H′(xk)= m k m_k mk(k=0,1)4.1.1 解法一、结合拉格朗日插值
我把这里的讲解分为三部分:
第一部分:如何构建
基于插值基函数(本章2.1), H 3 ( x ) H_3(x) H3(x)= α 0 ( x ) α_0(x) α0(x) y 0 y_0 y0+ α 1 ( x ) α_1(x) α1(x) y 1 y_1 y1+ β 0 ( x ) β_0(x) β0(x) m 0 m_0 m0+ β 1 ( x ) β_1(x) β1(x) m 1 m_1 m1
还记得拉格朗日插值的那个视频吗,把插值基函数称作开关,我们现在就要用开关这个思想, α 0 ( x ) α_0(x) α0(x)、 α 1 ( x ) α_1(x) α1(x)、 β 0 ( x ) β_0(x) β0(x)、 β 1 ( x ) β_1(x) β1(x)就是这个公式的四个开关,我们看公式:
可以求得,这样设计之后, H 3 ( x 0 ) H_3(x_0) H3(x0)= y 0 y_0 y0, H 3 ′ ( x 0 ) H'_3(x_0) H3′(x0)= m 0 m_0 m0, H 3 ( x 1 ) H_3(x_1) H3(x1)= y 1 y_1 y1, H 3 ′ ( x 0 ) H'_3(x_0) H3′(x0)= m 1 m_1 m1
结果皆大欢喜,但这是如何设计来的呢?首先,在不求导时, H 3 ( x ) H_3(x) H3(x)= α 0 ( x ) α_0(x) α0(x) y 0 y_0 y0+ α 1 ( x ) α_1(x) α1(x) y 1 y_1 y1+ β 0 ( x ) β_0(x) β0(x) m 0 m_0 m0+ β 1 ( x ) β_1(x) β1(x) m 1 m_1 m1。这里恒有β=0,那么 m 0 m_0 m0、 m 1 m_1 m1的开关就会关掉,那就只有 α 0 ( x ) α_0(x) α0(x) y 0 y_0 y0+ α 1 ( x ) α_1(x) α1(x) y 1 y_1 y1这部分,我们看到i=j时才有对应的α=1,那么就会将另一半的开关关掉,用 x 0 x_0 x0举例,即出现 H 3 ( x 0 ) H_3(x_0) H3(x0)= α 0 ( x 0 ) α_0(x_0) α0(x0) y 0 y_0 y0+ α 1 ( x 0 ) α_1(x_0) α1(x0) y 1 y_1 y1=1* y 0 y_0 y0+0* y 1 y_1 y1= y 0 y_0 y0的结果。
同理,求导时,公式变为 H 3 ′ ( x ) H'_3(x) H3′(x)= α 0 ′ ( x ) α'_0(x) α0′(x) y 0 y_0 y0+ α 1 ′ ( x ) α'_1(x) α1′(x) y 1 y_1 y1+ β 0 ′ ( x ) β'_0(x) β0′(x) m 0 m_0 m0+ β 1 ′ ( x ) β'_1(x) β1′(x) m 1 m_1 m1。这里同样有 α ′ α' α′恒等于0,所以只剩 β 0 ′ ( x ) β'_0(x) β0′(x) m 0 m_0 m0+ β 1 ′ ( x ) β'_1(x) β1′(x) m 1 m_1 m1这部分,还有 β ′ β' β′在i=j时才=1的开关,即可得出最终结果。
第二部分:如何求解
这里也分成三部分:
(一)、二重零点
接下来有个重点,书上写的很不明确,为什么根据(5.4.1), α 0 ( x 0 ) α_0(x_0) α0(x0)必包含因子(x-x 1 _1 1) 2 ^2 2,为什么说 α 0 ( x ) α_0(x) α0(x)中x 1 _1 1时二重零点?
是这样,你看 α 0 ( x 1 ) α_0(x_1) α0(x1)和 α 0 ′ ( x 1 ) α'_0(x_1) α0′(x1)是不是都=0,那一定是因为, α 0 α_0 α0含有( x x x- x 1 x_1 x1) 2 ^2 2这一项。因为这样,不仅在原函数 x x x= x 1 x_1 x1时为0,而且导数才一定会有( x x x- x 1 x_1 x1)这一项并且 x x x= x 1 x_1 x1时导数也为0。(再解释一下,( x x x- x 1 x_1 x1) 2 ^2 2 f ( x ) f(x) f(x)的导数为( x x x- x 1 x_1 x1) 2 ^2 2 f ′ ( x ) f'(x) f′(x)+2( x x x- x 1 x_1 x1)* f ( x ) f(x) f(x),能提出( x x x- x 1 x_1 x1)这一项)
(二)、构造式子
那么接下来就要理解这几个剩下的构造部分,先看定义:
平方那部分之前已经讲解完了,为什么会有剩下的构造,首先看 α 0 α_0 α0,我们看上一张图片, α 0 α_0 α0需要满足四个条件: α 0 ( x 1 ) α_0(x_1) α0(x1)=0, α 0 ( x 0 ) α_0(x_0) α0(x0)=1, α 0 ′ ( x 1 ) α'_0(x_1) α0′(x1)=0, α 0 ′ ( x 0 ) α'_0(x_0) α0′(x0)=0目前我们可以满足, α 0 ( x 1 ) α_0(x_1) α0(x1)=0和 α 0 ′ ( x 1 ) α'_0(x_1) α0′(x1)=0,但是如果没有后半部分,一定满足不了剩下两个条件(为什么满足可以看后面的求导,现在不用知道)。
同理,β需要有 β i ( x i ) β_i(x_i) βi(xi)=0,所以 β 0 β_0 β0中要有( x x x- x 0 x_0 x0)这一项。
简单记忆一下,就是每个式子都要是三次项。
(三)、求解
看这个表吧,现在每个里面条件都用了三次了,还剩一个条件没用的(=1),代入到式子中,就可以求出未知系数,最终结果是这样:
第三部分:插值余项
已经求完多项式了,但是还要算一下插值余项。
看一下得了。4.2.2 解法二、结合牛顿插值
这个差商表和之前的很像,注意一下这一点就可: z 1 z_1 z1相当于 x + ▲ x x+▲x x+▲x,利用导数定义,得到:
z 3 z_3 z3同理。然后套这个公式就可以了(这个公式还挺好记忆的):
插值余项
R 3 ( x ) R_3(x) R3(x)= f [ x , z 0 , z 1 , z 2 , z 3 ] f[x,z_0,z_1,z_2,z_3] f[x,z0,z1,z2,z3] ( x − x 0 ) 2 (x-x_0)^2 (x−x0)2 ( x − x 1 ) 2 (x-x_1)^2 (x−x1)24.2非齐次埃尔米特插值
能截图就不打字好吧,三个x,三个y,只有一个m。
重大发现:ppt上没讲非齐次的解法一,那我必然是不写的,理解上我已经在齐次的解法一上讲的差不多了,想看可以看。4.2.1解法二、结合牛顿插值
新的差商表(看一下哪和之前不一样了)
新的方程
插值余项(和之前的对比一下更好记哦):
R 3 ( x ) R_3(x) R3(x)= f [ x , z 0 , z 1 , z 2 , z 3 ] f[x,z_0,z_1,z_2,z_3] f[x,z0,z1,z2,z3] ( x − x 0 ) (x-x_0) (x−x0) ( x − x 1 ) 2 (x-x_1)^2 (x−x1)2 ( x − x 2 ) (x-x_2) (x−x2) -
基函数与函数空间
2018-09-05 16:10:57在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常会碰到傅里叶基。有时候,不禁要问,这些基函数为什么这么设计?这些基函数的...引言
在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常会碰到傅里叶基。有时候,不禁要问,这些基函数为什么这么设计?这些基函数的作用是什么?
后来发现基函数是核方法和字典训练的基础,于是乎,我逐渐有了一些例如特征转换和映射、字典元素的概念。不过还是对基函数与函数空间的关系、基函数的深层认识模棱两可。我希望能通过这篇文章,来探究这些东西。基函数
在数学中,基函数是函数空间一组特殊的基的元素。对于函数空间中的连续函数都可以表示成一系列基函数的线性组合,就像是在向量空间中每个向量都可以表示成基向量的线性组合一样。
在数值分析和近似理论中,基函数也称为混合函数(blending function),因为其在插值(interpolation)的应用
。
举例:
多项式基:{1,t, t2}是实系数二次多项式集合的基,每一个形如a+bt+ct2的二次多项式都可以写成由基函数1、t、t^2组成的线性组合。另外,{(t-1)(t-2)/2, -t(t-2), t(t-1)/2}是二次多项式的另一组基,称为拉格朗日基(Lagrange basis)。
傅里叶基:余弦函数构成了平方可积函数的(正交)Schauder基。说说径向基函数
径向基函数有个类似高斯函数的形状,我们可以看到下面的图像,不同的系数,有不同的函数图像:
下面的三组图像是三个径向基函数在不同的权重的线性组合下的曲线形态:
我们知道,线性回归模型可以看做是目标函数加入了高斯噪声模型,其概率模型形式为:
<a href="http://private.codecogs.com/eqnedit.php?latex=p(t|X,\delta2)=\frac{1}{(2\pi){N/2}|K|{1/2}}exp(-\frac{1}{2}tTK^{-1}t)" target="_blank">
p(t|X,\delta^2)=\frac{1}{(2\pi)^{N/2}|K|^{1/2}}exp(-\frac{1}{2}t^TK^{-1}t)
</a>
对于多维高斯模型的协方差矩阵,可以看做是数据构成的矩阵再加入一个噪声的方阵,当使用基函数的时候,协方差矩阵就变成了核矩阵再加上噪声的方阵。<a href="http://private.codecogs.com/eqnedit.php?latex=K=\alpha&space;XXT+\delta2I&space;\Rightarrow&space;K=\alpha&space;\Phi&space;\PhiT&space;+&space;\delta2I" target="_blank">
K=\alpha XX^T+\delta^2I \Rightarrow K=\alpha \Phi \Phi^T + \delta^2I
</a>
下面是用多项式基函数和径向基函数分别构成的特征变换矩阵:<a href="http://private.codecogs.com/eqnedit.php?latex=\Phi&space;=&space;\begin{bmatrix}&space;1&space;&&space;x_1&space;&&space;x_12&space;\&space;1&space;&&space;x_2&space;&&space;x_22&space;\&space;:&space;&&space;:&space;&&space;:&space;\&space;1&space;&&space;x_n&space;&&space;x_n^2&space;\end{bmatrix}" target="_blank">
\Phi = \begin{bmatrix} 1 & x_1 & x_1^2 \ 1 & x_2 & x_2^2 \ : & : & : \ 1 & x_n & x_n^2 \end{bmatrix}
</a>
<a href="http://private.codecogs.com/eqnedit.php?latex=\Phi&space;=&space;\begin{bmatrix}&space;exp(-2(x_1-1)2)&space;&&space;...&space;\&space;exp(-2(x_2-1)2)&space;&&space;...&space;\&space;:&space;&&space;:&space;\&space;exp(-2(x_n-1)^2)&space;&&space;...&space;\end{bmatrix}" target="_blank">
\Phi = \begin{bmatrix} exp(-2(x_1-1)^2) & ... \ exp(-2(x_2-1)^2) & ... \ : & : \ exp(-2(x_n-1)^2) & ... \end{bmatrix}
</a>
由于径向基函数是一种局部基函数(localized basis function),那么距离基函数中心比较远的区域,数据项对方差的贡献将趋于零,只剩下噪声的贡献。因此,对于基函数所在的区域之外的区域进行外插的时候,模型对于它做出的预测会变得相当确定,这不是我们想要的结果,可以用高斯过程这种贝叶斯回归方法来避免,这也就引入了径向基核函数这种无限维的特征转换。
下面的特征变换是由三个不同参数的径向基函数组成的,这里看到协方差矩阵的图像中对角线区域,蓝色部分是由噪声贡献的,而红色区域是由基函数贡献的。
利用这种协方差矩阵,构成的多维高斯分布的抽样结果用图形给出:径向基函数与插值
径向基函数可以看作是一个高维空间中的曲面拟合(逼近)问题,学习是为了在多维空间中寻找一个能够最佳匹配训练数据的曲面,然后来一批新的数据,用刚才训练的那个曲面来处理(比如分类、回归)。径向基函数的本质思想是反向传播学习算法应用递归技术,这种技术在统计学中被称为随机逼近。径向基函数就是在神经网络的隐单元里提供了提供了一个函数集,该函数集在输入模式(向量)扩展至隐空间时,为其构建了一个任意的“基”。这个函数集中的函数就被称为径向基函数。
径向基函数是一种精确插值器,其方法方法不同于全局和局部多项式插值器,它们都不是精确插值器(不要求表面穿过测量点)。径向基函数还可预测大于最大测量值和小于最小测量值的值。
径向基函数用于根据大量数据点生成平滑表面。这些函数可为平缓变化的表面生成很好的结果。但在表面值在短距离内出现剧烈变化和/或怀疑样本值很可能有测量误差或不确定性时,这些方法不适用。径向基核函数
我们先看一下为什么说径向基核函数(高斯核函数)是无限维的特征转换吧。
将径向基核函数做泰勒展开形式如下:<a href="http://private.codecogs.com/eqnedit.php?latex=k(x,x')=exp(-(x-x')2)=exp(-x2)exp(-x'2)exp(2xx')&space;=exp(-x2)exp(-x'2)[\sum_{i=0}{\infty&space;}\frac{(2xx')i}{i!}]&space;=\sum_{i=0}{\infty&space;}[exp(-x2)exp(-x'2)\sqrt{\frac{2i}{i!}}\sqrt{\frac{2i}{i!}}xix'i]&space;=\Phi(x)^T\Phi(x')" target="_blank">
k(x,x')=exp(-(x-x')^2)=exp(-x^2)exp(-x'^2)exp(2xx') =exp(-x^2)exp(-x'^2)[\sum_{i=0}^{\infty }\frac{(2xx')^i}{i!}] =\sum_{i=0}^{\infty }[exp(-x^2)exp(-x'^2)\sqrt{\frac{2^i}{i!}}\sqrt{\frac{2^i}{i!}}x^ix'^i] =\Phi(x)^T\Phi(x')
</a>
其对应的无限维的特征转换为:<a href="http://private.codecogs.com/eqnedit.php?latex=\Phi(x)=exp(-x2)(1,\sqrt{\frac{2}{1!}}x,\sqrt{\frac{22}{2!}}x^2,...)" target="_blank">
\Phi(x)=exp(-x^2)(1,\sqrt{\frac{2}{1!}}x,\sqrt{\frac{2^2}{2!}}x^2,...)
</a>
我们看到了径向基核函数,是xi和xj数据之间欧氏距离的函数。
下面是核矩阵和抽样的图像:从上图看到,径向基核函数以每个数据点为中心进行建模,在有数据的区域贡献随机变量的方差,而不再像用单一的径向基函数只在函数中心保有对方差的贡献。上图同样说明,相邻的数据有强相关性,而相离的数据没有什么相关性,即红色区域和蓝色区域说明的情况。
这是高斯过程模型的基础,相比贝叶斯线性模型而言,高斯过程不再对模型参数进行建模(通过对参数分布进行采样,再进行不同基函数模型的组合),而是直接对数据进行相应操作。函数空间浅显解释
空间是数学抽象出来描述具有某些特殊性质和结构的集合。学过线性代数的人都知道线性空间,向量是线性空间的基本元素。空间中还有一个很重要的概念是基。为什么要有基?是为了更好的描述空间。比如说三维空间,这个空间里面的元素的个数是不可数的(也就是和自然数集找不到一一对应的关系),所以一一列出来是不可能的。数学家想出了一个很好的办法,用任意三个不共面向量的线性组合来表示这个空间中的任意一个元素。
有了上面的概念,我们可以理解函数空间就是满足一定性质和结构的函数集合,组成这个空间的元素都是满足一定条件的函数。所以,这个函数空间里面的所有元素都是函数,而且这个空间其实是无穷维的,基有无穷多个。
因为我是通信专业的,现在用傅里叶变换来理解一下函数空间。傅里叶变换就是给出了一组基,要求求出利用每个基线性组合成这一信号(函数)的组合系数,或者说是在这组基下的坐标。傅里叶变换的美妙之处就在于这组基取得实在是太好了。为什么呢?首先他们是正交的,更主要的是它还和自然界的情况有着微妙的联系。自然界中的水波、音波、电磁波等等,如果用数学抽象,显然是三角函数。在振荡电路、模拟通信等等领域中,使用三角函数形式的波形的好处也是非常多的。可以看到,傅里叶变换在一维信号处理领域获得了很大的成功。需要指出的是,傅里叶变换在二维信号处理领域,比如说在图像处理领域的缺点就很多了。直观上,图像的周期现象似乎不是那么明显。而且从一维情况转换到二维情况,复杂度成倍增加。
作者:JasonDing
转自链接:https://www.jianshu.com/p/5cc427f0df33
-
拉格朗日插值法
2019-12-02 00:43:20插值基函数的性质 1、无论x取和值,它们的和都为1 2、插值基函数是线性无关的 -
插值函数总结(下篇之二维插值)
2021-11-17 16:03:07插值函数总结(下篇之二维插值) -
多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]
2020-12-30 09:53:14全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数。关于多项式插值的基本知识,见“计算基本理论”。在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌套算法啊... -
分段三次插值
2020-12-20 22:37:02如何通过这些离散数据找到函数的一个满足精度要求且便于使用的近似表达式,是经常遇到的问题。对于这类问题我们解决的方法为插值法,而最常用也最简单的插值方法就是多项式插值。当然用插值法得到的近似表达式必须... -
插值法原理(一次、二次)
2011-07-19 16:38:27插值法原理 插值法的基本思想就是构造一个简单函数y = P(x)作为f(x)的近似表达式,以P(x)的值作为函数f(x)的近似值,而且要求P(x)在给定点xi与取值相同,即P(xi) =...插值的方法很多,这里介绍一元线性插值和二次插值。 -
三次b样条插值函数
2019-05-07 10:55:34三次b样条插值函数是 spline = spapi(knots,x,y) spapi(k,x,y) spapi({knork1,…,knorkm},{x1,…,xm},y) spapi(…,‘noderiv’) % B样条曲线生成程序 % 说明:给定8个控制顶点{(3 5),(2 4),(3 2),(6 1),(5 8),(10 6)... -
Lagrange插值函数及其Matlab代码
2019-11-29 19:31:39为什么要引进插值函数 在实际问题中,两个变量的关系y=f(x)经常要 靠实验和观测来获得,而在通常的情况下只能得到f(x)在有限个点上的值 =(), i=0,1,2,...,n 人们希望找到f(x)的一个近似函数y=(x),使得 ... -
三角域上C.^1连续的插值样条函数 (2001年)
2021-05-25 20:28:58通过引进三角域上的插值基函数,给出了一种新的三角域上的二元三次插值样条函数,这种插值样条函数整体达到C’连续,且在各网格点处的参数可由递推公式得到。文中给出的插值样条函数较之Farin提出的分裂三角形方法,... -
matlab编写拉格朗日插值代码函数
2021-12-08 19:13:33function[y]=lagrange(x0,y0,x) %建立一个函数名为lagrange的函数,输入x0,y0为插值点的坐标,均为数组,x为要求的点的横坐标,此处为一个数组,长度为n,表示一次可以求n个点。 N=length(x0); n=length(x); y=zeros... -
基于离散余弦变换基函数迭代的人脸图像识别.pdf
2020-04-12 20:41:18基于离散余弦变换基函数迭代的人脸图像识别 -
多项式函数插值:全域多项式插值(一)单项式基插值、拉格朗日插值、牛顿插值 [MATLAB]...
2018-10-06 10:26:00全域多项式插值指的是在整个插值区域内形成一个多项式函数作为插值函数。关于多项式插值的基本知识,见“计算基本理论”。 在单项式基插值和牛顿插值形成的表达式中,求该表达式在某一点处的值使用的Horner嵌套... -
怎样用matlab进行抛物插值(二次插值)
2021-04-18 07:32:344.1问题的提法一个多项式的幂级数形式可表示为:p(x)= a0xn + a1xn-1 + … + an-1x + an在MATLAB中,多项式用行向量表示,其元素为多项式的系数,且从左到右按降幂排列。如多项式p(x)= ax+ ax+ … + ax + a在MATLAB ... -
机器学习中的数学基函数与函数空间
2021-01-12 00:38:41机器学习中的数学基函数与函数空间【机器学习中的数学】基函数与函数空间引言在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常... -
OpenCV图像缩放插值之BiCubic双三次插值
2022-03-30 14:37:27在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值(立体插值),兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度,... -
Aitken(埃特金)逐次插值法 | 一次插值、二次插值、k次插值
2020-06-03 22:25:43Aitken(埃特金)逐次插值法 判断离散数据(xi,yi)(i=0,1,2,⋯ ,n)(x_i,y...这种在插值计算精度不够时增加节点(插值多项式的次数一般不宜超过6~8次)以提高插值精度方法就是所谓的逐次插值法。 在上述情况中,运用Lagr -
c++ 拉格朗日插值、分段线性插值、三次样条插值源码
2018-04-07 00:43:48该程序由c++编写,主要用于实现基于函数y=e^(-2x)在区间[0,6]的插值函数,开发工具为VS2015,请用此IDE或者更高版本的IDE打开工程文件~~~~~ -
求解n次函数多项式之拉格朗日插值
2018-08-21 10:44:15设F(x)=a0+a1x+a2x2+...+anxnF(x)=a0+a1x+a2x2+...+anxnF(x)=a_0+a_1x+a_2x^2+...+a_nx^n 在一些题目中例如找规律,比如是我上次在区域赛的时候如果可以真名或者猜...这里就用到了一个东西叫拉格朗日插值法。 假如... -
计算方法--函数插值
2022-03-24 18:42:31拉格朗日插值() 线性插值 将相邻插值点连成线段。 公式 对于两点(x0,y0)(x_0,y_0)(x0,y0),(x1,y1)(x_1,y_1)(x1,y1)线性插值: L(x)=x−x1x0−x1y0+x−x0x1−x0y1L(x) = \frac{x-x_1}{x_0-x_1}y_0+\frac{x-... -
径向基函数的自适应残差二次采样:这个简单的代码自适应地解决了初始边界值问题,特别是伯格斯方程-matlab...
2021-06-01 19:47:52参考: TA Driscoll 和 ARH Heryudono 径向基函数插值和搭配问题的自适应残差二次采样方法,提交给。 计算。 数学。 应用程序论文可从以下网址下载: ... -
双三次插值及Matlab实现
2022-02-02 12:50:22双三次插值与Matlab实现 -
数值分析复习(四)——多项式插值与函数逼近
2022-01-04 22:42:14数值分析复习,包含拉格朗日插值、差商 Newton 插值、Hermite 插值、高阶插值的缺点及分段低次插值、最佳一致逼近 -
图像插值-双三次插值(bicubic)
2020-08-20 16:21:13双三次插值 本文将未做插值的原始图像称作源图像,源图像插值缩放K倍后的图像称作目标图像。 以下标识符的意义: 算法 如下图,双三次插值就是通过对周边16个点(A,B,C,…N,O,P)进行加权计算得到目标像素点的值,... -
数值分析实习作业(各种插值函数与积分公式的python代码实现)
2018-06-11 09:36:48数值分析实习作业 ...1.对函数f(x)f(x)f(x)进行插值 f(x)=11+x2f(x)=11+x2f(x)=\frac{1}{1+x^{2}} (1)令插值节点为等距节点−5,−4,−3,−2,−1,0,1,2,3,4,5−5,−4,−3,−2,−1,0,1,2,3,4,... -
【机器学习中的数学】基函数与函数空间
2020-12-19 07:07:40引言在学习线性回归模型的时候就会遇到基函数,可能我们会遇到多项式基函数、高斯基函数、sigmoid基函数,当然在高等数学和信号系统中还经常会碰到傅里叶基。有时候,不禁要问,这些基函数为什么这么设计?这些基...