本文可作为线性代数实现线性回归的下篇,先简单回顾一下,线性代数实现线性回归中介绍了子空间的概念,把子空间想象成一个超平面,子空间中任意一个向量都可以用子空间的基线性组成,线性回归原理是已知一个超平面和超平面外的一个向量,该向量与在超平面上的投影距离最短,或者说误差最小,在得到这个投影的同时就知道了未知参数,未知参数是投影在子空间基上的坐标。
上篇中介绍的空间是一个由向量组成的空间,向量中元素是实数。 本文将拓展子空间的概念,空间的元素是函数称之为函数空间,这个空间里面有我们熟悉的各种函数以及这些函数的线性组合。函数空间里的子空间是一系列性质相似的函数集合,比如三角函数可以组成一个子空间,由数学分析知道利用三角函数可以实现傅里叶变换,将其他函数表示为三角函数线性组合成的级数形式。本文中选取的空间是一个多项式空间,即其空间里基是x0,x1,x2,x3,...xn...等多项式,需要将其他函数投影到这个子空间里,其运用的知识还是来自于线性代数。

使用上图来说明函数空间,AP代表了函数空间里的一个函数,而下面的平面代表了多项式子空间,AP在多项式空间里的投影AC就是与AP误差最小的多项式,AC是x0,x1,x2,x3,...xn等多项式的线性组合,我们目标就是求出这个线性组合表达式中每个基前面的系数(坐标)。
一、一元多项式逼近任意一元连续函数
这里结合一段python代码说明,这段代码的功能是利用多项式逼近函数f(x)=sin(x)-3cos(x)。
import numpy as np import math from sympy import * from scipy.integrate import tplquad, dblquad, quad from scipy.linalg import * import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False NSplit_Num = 10000 class polynomialAppro(object): def __init__(self, split=1000): self.splitnum = split pass &n

最低0.47元/天 解锁文章
1301

被折叠的 条评论
为什么被折叠?



