# Math in anywhere | Funciton
# Functions
# Space Concept
函数空间:即我们使用如干简单函数(这部分称之为” 基函数 “)通过线性组合(乘法和加法)的方式张成一个函数空间。
L=span{f1,f2,⋯,fn}={i=1∑naifi(x)∣ai∈R}
fn(n∈R):代表函数空间中的元素
函数空间中的元素,总能表达成 n 个aifi(x) 的加和,其中把系数提取出来就能够获得系数向量
(a1,a2,⋯,an)
具体的实例说明
本质上就是确定函数的类型,然后去确定系数向量
# Weierstrass approximation theorem
定理一:设 f(x) 闭区间 [a,b] 上的连续函数,则存在多项式序列 Pn(x) 在 [a,b] 上一致收敛于 f(x)。也就是对任意给定的 ϵ > 0,存在多项式 P(x),使得:
∣P(x)−f(x)∣<ϵ
对一切x∈[a,b] 成立。
定理二:设 f(x) 是以 2π 为周期的连续函数,则存在三角多项式序列一致收敛于 f(x)。也就是对于任意给定的 ϵ > 0,存在三角多项式 T(x),使得:
∣T(x)−f(x)∣<ϵ
对一切x∈[−∞,∞] 成立。
# Fourier series
客观世界最常见的最简单周期函数:
f(t)=Asin(wt+φ)
这里 t 表示时间,A 表示振幅,ω 为角频率,φ 为初相位。
因为大多数周期信号并没有这么简单,但是傅里叶在《热的解析理论》中推导出使用一系列最简单的三角函数来组合复杂的周期函数,这些都基于三角函数的基本变化规律,如下图。
可以看这个视频,让你更直观的了解傅里叶级数:
傅里叶推导出的公式为:
f(t)=A0+n=1∑∞Ansin(nwt+φn)
由 φn 为常数,An 也是常数,则对上式的Ansin(nwt+φn) 进行变形:
Ansin(nwt+φ)=Ansinφncos(nwt)+Ancosφnsin(nwt)
记an=Ansinφn,bn=Ancosφn 然后进行替换公式 9,然后代进去公式 8
f(t)=A0+n=1∑∞(ancos(nwt)+bnsin(nwt))
这里面的参数的计算:
A0=2π1∫−ππf(t)
an=π1∫−ππf(t)⋅cos(nwt)dt
bn=π1∫−ππf(t)⋅sin(nwt)dt
这个视频能够帮助你系统的了解傅里叶级数和傅里叶变换
# Data Fitting
数据拟合需要我们抓住问题的要点,实际应用问题能够进行抽象成一个数据模型,获取输入,找到合适的函数,优化函数。而这里的核心便是如何找到合适的函数,这里分为三步:
- 确定函数空间
- 这一步就需要我们对数据进行观察,然后根据数据的趋势选取合适的函数空间。
- 确定度量方式
- 求解与优化
插值:就是无误差,数据集的每一个点都刚好可以通过函数变换而来。
# Function interpolation
在许多实际问题中,某个函数 f(x) 往往很复杂、没有解析表达或者未知。我们往往只能通过某些手段观测到反映该函数的一些采样数据。我们希望通过这些观测的采样数据来估计该函数的信息,并预测函数在其他观测点的值。这时,我们从观测数据来求得一个函数 ϕ(x) 来近似 f(x)。
定义:f(x) 为定义在区间 [a,b] 上的函数,x0,x1,⋯,xn 为区间上 n + 1 个互不相同的点,Φ 为给定的某一函数类。求 Φ 上的函数 ϕ(x),满足:
ϕ(xi)=f(xi),i=0,1,⋯,n
则称 ϕ(x) 为 f(x) 关于节点x0,x1,⋯,xn 在Φ 上的插值函数。称x0,x1,⋯,xn 为插值节点,称(xi,f(xi)) 为插值点。
多项式插值定理
定理:若 xi 两两不同,则对任意给定的yi,存在唯一的次数至多是 n 次的多项式 pn,使得pn(xi)=yi,i=0,⋯,n。
证明:在幂基 {1,x,⋯,xn} 下待定多项式 p 的形式为:
p(x)=a0+a1x+a2x2+⋯+anxn
由插值定理可知,可以得到如下的方程
⎣⎢⎢⎢⎢⎢⎢⎡111⋮1x0x1x2⋮xnx02x12x22⋮xn2⋯⋯⋯⋱⋮⋯x0nx1nx2n⋮xnn⎦⎥⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎢⎡a0a1a2⋮an⎦⎥⎥⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎢⎢⎡y0y1y2⋮yn⎦⎥⎥⎥⎥⎥⎥⎤
系数矩阵为 Vandermonde
矩阵,其行列式非零,因此方程组有唯一解。
关于n×n 阶 Vandermonde
矩阵的行列式计算公式如下:
detAn=1≤j≤n∏(xi−xj)
因为我们知道xi 是彼此相异的,代入公式 (17),可知detAn=0,A 是可逆的,因此方程式必定存在唯一解。
Lagrange 插值
定义:给定一组k+1 数据(x0,y0),…,(xj,yj),…,(xk,yk), 其中没有两个 xj 相同,拉格朗日插值多项式是:
L(x):=j=0∑kyjℓj(x)
其中ℓj(x) 是拉格朗日基函数:
ℓj(x):=0≤m≤km=j∏xj−xmx−xm=xj−x0x−x0⋯xj−xj−1x−xj−1(xj−xj+1)(x−xj+1)⋯xj−xkx−xk,0≤j≤k
拉格朗日基本多项式ℓj(x) 的特点是在xj 上取值为 1,在其它的点xi,i=j 上取值为 0 看例子可知。
Example:
假设有二次多项式函数f,已知它在三个点的值为(4,10),(5,5.25),(6,1),求二次多项式
ℓ0(x)=(4−5)(4−6)(x−5)(x−6)ℓ1(x)=(5−4)(5−6)(x−4)(x−6)ℓ2(x)=(6−4)(6−5)(x−4)(x−5)
p(x)=f(4)ℓ0(x)+f(5)ℓ1(x)+f(6)ℓ2(x)=10⋅(4−5)(4−6)(x−5)(x−6)+5.25⋅(5−4)(5−6)(x−4)(x−6)+1⋅(6−4)(6−5)(x−4)(x−5)=41(x2−28x+136)
优缺点:
- 拉格朗日插值法的公式结构整齐紧凑,在理论分析中十分方便
- 在计算中,当插值点增加或减少一个时,所对应的基本多项式就需要全部重新计算,于是整个公式都会变化,非常繁琐。
- 当插值点比较多的时候,拉格朗日插值多项式的次数可能会很高,因此具有数值不稳定的特点,也就是说尽管在已知的几个点取到给定的数值,但在附近却会和 “实际上” 的值之间有很大的偏差(如下图)。这类现象也被称为龙格现象。
Barycentric Form
为了解决数据增多情况下,拉格朗日插值法庞大计算量的问题。可以使用重心拉格朗日形式。首先我们定义一个多项式:
l(x)=(x−x0)(x−x1)⋯(x−xk)
公式 (19) 上下同时乘以(x−xj),然后将公式 (24) 代进去,可得
ℓj=x−xjl(x)⋅∏i=0,i=jk(xj−xi)1
然后我们将∏i=0,i=jk(xj−xi)1 拿出来,将其定义为重心权:(这一步就是简化的关键)
wj=∏i=0,i=jk(xj−xi)1
如果此时又加了一个数,那么新的wj 只需要再除以(xj−xi)
那么原公式就能变换为:
ℓj(x)=ℓ(x)x−xjwj
进而得出重心拉格朗日插值:
L(x):=j=0∑kyjℓj(x)=l(x)j=0∑kx−xjwjyj
进一步的我们还能对该公式进行变换,设有函数满足:
g(x)≡1
∀x,g(x)=ℓ(x)j=0∑kx−xjwj
将L(x) 除以g(x) 后可得到:
L(x)=∑j=0kx−xjwj∑j=0kx−xjwjyj
优点
当插值点的个数增加一个时,将每个wj 都除以(xj−xk+1),就可以得到新的重心权wk+1,计算复杂度为O(n),比重新计算每个基本多项式所需要的复杂度O(n2) 降了一个量级。
Newton 插值
定义:给定一组k+1 数据(x0,y0),…,(xj,yj),…,(xk,yk), 其中没有两个 xj 相同,牛顿插值多项式是:
N(x):=j=0∑kajnj(x)
其中nj(x) 为牛顿基本多项式基函数,其表达式为:中
nj(x):=i=0∏j−1(x−xi) j>0,n0(x)≡1
而aj:=[y0,…,yj] 作为基函数的系数,而[y0,…,yj] 表示差商(也叫均差,是递归除法过程)
均差定义有两种方式:
[yν][yν,…,yν+j]=yν,ν∈{0,…,n}=xν+j−xν[yν+1,…,yν+j]−[yν,…,yν+j−1],ν∈{0,…,n−j}, j∈{1,…,n}
- 向后均差 (我们主要使用这种)
[yν][yν,…,yν−j]=yν,ν∈{0,…,n}=xν−xν−j[yν,…,yν−j+1]−[yν−1,…,yν−j],ν∈{j,…,n}, j∈{1,…,n}
递归的过程通过下图来理解:
[y0][y0,y1][y0,y1,y2][y0,y1,y2,y3][y0,y1,…,yn]=y0=x1−x0y1−y0=x2−x0[y1,y2]−[y0,y1]=x3−x0[y1,y2,y3]−[y0,y1,y2]=xn−x0[y1,y2,…,yn]−[y0,y1,…,yn−1]
x0x1x2x3[y0]=y0[y1]=y1[y2]=y2[y3]=y3[y0,y1][y1,y2][y2,y3][y0,y1,y2][y1,y2,y3][y0,y1,y2,y3]
然后将nj(x) 和aj 带入方程就可以获得,牛顿多项式的这种形式:
N(x)=[y0]+[y0,y1](x−x0)+⋯+[y0,…,yk](x−x0)(x−x1)⋯(x−xk−1)
Example:
已知它在五个点的值为(−23,−14.1014),(−43,−0.931596),(0,0),(43,0.931596)(23,14.1014),求牛顿多项式插值。(构造目标为f(x)=tan(x))
首先计算出差商表
−23−4304323−14.1014−0.93159600.93159614.101417.55971.242131.2421317.5597−10.8784010.87844.834844.834840
然后就能够写出多项式:
−14.1014+17.5597(x+23)−10.8784(x+23)(x+43)+4.83484(x+23)(x+43)(x)+0(x+23)(x+43)(x)(x−43)=−0.00005−1.4775x−0.00001x2+4.83484x3
这里我们能够观察到,数据点的增多并不会使得所有计算需要重新进行,只需要计算新的差商,然后多加一个多项式。
但是牛顿插值也会使得整体的多项式次数过高。
# Function approximation
给出一组离散的点,需要确定一个函数来逼近原函数。由于离散数据通常是由观察或测试得到的,所以不可避免的会有误差。我们需要的逼近原函数的手段要满足如下两个条件:
- 不要求过所有的点(可以消除误差影响)
- 尽可能表现数据的趋势,靠近这些点
用数学的语言来说即是,需要在给定的函数空间 Φ 上找到函数 ϕ,使得 ϕ 到原函数f 的距离最小。这里的距离指的是某种度量,不同的度量对应着不同的拟合方法。则函数 ϕ(x) 称为 f(x) 在空间 Φ 上的拟合曲线。
R2=i=0∑m(ϕ(xi)−f(xi))2
一般我们采用最小二乘法来处理这一类问题,这里我们首先给出离散内积的概念,内积这个计算概念主要是将公式中的项抽离出来的,所以不需要理解他的几何概念。
定义:函数f,g 的关于离散点列{xi}i=0m 的离散内积为:
(f,g)h=i=0∑nf(xi)g(xi)
上述定义中的下标 h 表示对离散内积与离散范数的指代
定义:函数f 的离散范数为:
∣∣f∣∣h=(f,f)h
然后我们将上面离散内积和离散范数运用到最小二乘法中:
设Φ=span{ϕ0,ϕ1,⋯,ϕn}
ϕ(x)=a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x)
进一步最小二乘为:
∣∣f(x)−ϕ(x)∣∣h=∣∣f(x)−a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x)∣∣h
然后我们需要获取关于系数{a0,a1,⋯,an} 最小,我们可以计算 2 范数
∣∣f(x)−ϕ(x)∣∣h2=∣∣f(x)−a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x)∣∣h2=∣∣f∣∣h2−2f(x)[(a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x))]+∣∣a0ϕ0(x)+a1ϕ1(x)+⋯+anϕn(x)∣∣h2=∣∣f∣∣h2−2k=0∑nak(f,ϕk)h+i,k=0∑naiak(ϕi,ϕk)h
我们将这个函数变成Q(ai) 的函数:
Q(ai)=∣∣f∣∣h2−2k=0∑nak(f,ϕk)h+i,k=0∑naiak(ϕi,ϕk)h
为了使得系数的值最小,因此我们对函数求一阶导数,获得函数的极值点:
∂ai∂Q=0,i=0,1,⋯,n(f,ϕi)h=k=0∑nak(ϕi,ϕk)h
然后改为矩阵形式:
⎣⎢⎢⎡(ϕ0,ϕ0)h⋮(ϕn,ϕ0)h⋯⋱⋯(ϕ0,ϕn)h⋮(ϕn,ϕn)h⎦⎥⎥⎤⎣⎢⎢⎡a0⋮an⎦⎥⎥⎤=⎣⎢⎢⎡(f,ϕ0)h⋮(f,ϕn)h⎦⎥⎥⎤
Example:
取 Φ 为线性多项式空间,函数空间的基为 {1,x,x2}, 拟合曲线为 y=a0+a1x+a2x2,则法方
程为:
⎣⎢⎡(1,1)h(x,1)h(x2,1)h(1,x)h(x,x)h(x2,x)h(1,x2)h(x,x2)h(x2,x2)h⎦⎥⎤⎣⎢⎡a0a1a2⎦⎥⎤=⎣⎢⎡(f,1)h(f,x)h(f,x2)h⎦⎥⎤
最小二乘拟合(岭回归正则项)A{a0,a1,⋯,an},函数表达式:
min∣∣Y−AΦ∣∣2+μ∣∣A∣∣22
其中μ 为权重,就是对参数的值的大小的权重控制。
依据同样的思想,稀疏正则化:
min∣∣Y−AΦ∣∣2+μ∣∣W∣∣0
∣∣W∣∣0 表示非零的元素。
拟合的问题:
欠拟合
过拟合
数据去噪
数据增广
增加样本数,或者增加样本的代表性和多样性
模型简化
预测模型过于复杂,拟合了训练样本中的噪声
选用更简单的模型,或者对模型进行裁剪
正则约束