Games102

📅 2026/7/5 21:28:39 👁️ 阅读次数 📝 编程学习
Games102

Games102学习

1. 数据拟合

目的:
若有若干点,我们需要根据这些点来制造一条拟合函数来保存这些点的信息,节省存储成本

三种拟合函数

1.分段线性插值函数(直接把点连起来)
优:误差为0
劣:不光滑,而且不光滑的地方无法求导导致后续会对计算带来麻烦
2.光滑插值函数(把点光滑曲线方式连起来)
优:误差为0
劣:容易被噪声,outliers(脱离线段的点、信息变化大的干扰数据)带跑偏
3.逼近拟合函数(可以不把点连起来,只要整体位置趋势逼近即可)
数据误差不为0,但是足够小

光滑插值函数

多项式插值定理

目的:以多项式插值定理为根基推导拟合函数

PS:这里主要做了三步

1.使用幂基写出一个通用多项式

目的:相当于写出所有函数可能的线性组合,所以要包括各个幂维度的自变量
幂基:一组由某数各个幂组成的空间基,其实就是一个系数集合,这里引入是为了模拟函数可能出现的各个幂维度的项,组成多项式

2.取所有点的x,带入函数

目的:将所有x带入函数,是模拟一条函数需要在各个x处都有对应取值

3.得到矩阵

目的:矩阵可以优化计算过程,让过程计算更方便,看起来干净整洁,就相当于多项式,矩阵只不过简化了写法,将系数和基分别提取,采用了特定的计算方式,以保证方便变换以及计算。这里矩阵主要是用来观察这个式子的解只有一个
a0+a1x0+a2x0^2…
a0+a1x1+a2x1^2…
a0+a1x2+a2x2^2…
a0+a1x3+a2x3^2…
矩阵:
一种特殊的数据表达和计算方式,将多项式的系数进行提取构成新的写法,以特定的方式进行计算求解,分解简化了数据的表示,加速并简化了复杂的计算,将抽象的数据计算,变成了更加抽象的类图形计算,可以自行了解矩阵的计算方法
vandermonde矩阵:
它的第一行全是1,第二行的元素是n个数,第三行元素是这n个数的平方,以此类推
由于这个矩阵的行列式不为0,也就是说这个矩阵没有任意一行全为0,每一行都是有效的(线性不相关的),就可以得出唯一解。
拿二元一次方程举例,就是需要两个有效式子才能求出一组唯一解。
x+y = 0与x+y = 0 只有前面的方程组可以得到唯一解
x+2y=0 2x+2y=0

构造插值问题的通用解

技巧1


目的:想得到一个式子,来直接模拟曲线,这样就不需要构造整个矩阵或方程组
这里采用了一个l(x)的函数作为系数,使得与自己相同下标的x带入就为1,其他就为0,就可以保证,xn带入的结果只保留yn的项
l如何求解:
拉格朗日插值多项式

作用:根据一组点得到一组多项式,使得每一个多项式只有在带入自己对应的点时值为1,带入这一组点中其他任意点均为0

技巧2


目的:根据前面给出的通用多项式形式,我们知道需要一个次数递增的多项式来模拟一组点的插值多项式,而牛顿多项式刚好符合要求,且由于差商的性质,刚好满足x0处得到y0,x1处得到y1的条件,直接得到需要的多项式
牛顿多项式:
给出一组点,根据递归求这些点的差商得到一个次数递增的多项式,满足x0处等于y0,x1处等于y0+k(x1-x0) = y1,…的性质

多项式插值缺点

1.系统矩阵稠密(不好求解)
2.依赖于基函数选取,矩阵可能病态,难以求解
矩阵病态:微小的绕动会带来极大的求解偏差

病态矩阵的刻画条件:矩阵条件数

特征值:
在矩阵变化过程中,总存在一个向量经过矩阵变换后只改变了长度,而不改变方向,这个长度就是特征值,特征值可以用来说明矩阵的部分性质,如特征值越大,说明矩阵使向量的变化越剧烈

根据特征值的性质可以看出条件数代表的含义,即特征值比值越大,各个解之间的变化越剧烈。越不稳定

范德蒙行列式由于项是呈指数递增的,项数越多就会越不稳定

解决方法

正交多项式基:
用相反走势的多项式相互抵消

多项式逼近

最小二乘逼近

目的:求一个最逼近这些离散点的函数,这个函数由一些函数线性组合而成

解出结果:
1.把f(xj)用多个函数的线性组合逼近
2.发现这个函数最小极值只受[入1,入2]影响,于是对入求偏导。
3.将结果写成矩阵形式

优点:
1.容易计算,光滑
2.总能找到一个函数来拟合

伯恩斯坦多项式逼近

这个多项式有极大值向两边衰减,利用它的性质,在每一组坐标基下与函数值相乘则会无限逼近这些值。得到一条逼近函数
优点:

f(i/n):这些函数在某一点的值
b(n, j)(x),这些点在x处的函数值
目的:利用bernstein多项式的性质(有极大值向两边衰减),将多个函数这一系列函数的函数值在这点进行累加,由于这类函数单个函数各个不同x的函数值f(x)加起来会趋近于某个值(例如趋近1)我们就用多个函数在一点模拟单个函数在不同x的函数值累加,也会趋向于某个值,再乘以需要模拟的点所成函数b(n, j)(x)在这点的函数值。就可以趋近这个函数,趋近的程度也可以通过函数组合进行控制

高斯函数



目的:RBF函数拟合和伯恩斯坦去做拟合类似,都是通过一些同样性质的函数去做拟合,区别RBF函数拟合是通过一堆高斯函数累加去做拟合

其他


目的,自变量表示出函数,根据不同的权重加上偏移模拟出新的函数
套娃形式:

在每一层参数都不定的情况下可以逼近任意函数,关键在于系数之类的参数调成多少

2.参数曲线拟合

概念

1.多元函数
多个x和轴来表示,这里用R^n代替(x1…xn),就是代表多维空间中的函数

2.多元函数张量基
张量:向量在维度上的扩充称呼

目的:为了逼近多维函数,我们采用张量积去表示多维函数,与向量基对应,张量基就是多维的向量例如
a = {(0,0,1)(0,0,1)}这个就是二维张量,而向量基(0,0,1)就是一维张量,为了表示更高维的函数,我们将基函数进行扩充。在物理中,我们也经常遇到需要包含多个向量信息的基,如平面上的一个力,我们需要用一个向量来表示平面,一个向量来表示平面的力,这种时候若是表示这种类型的集合,就需要使用二维张量作为基。而这里主要是展示以前的描述多元函数的方法,可以用多维张量基来表示多元函数
优点:简单
缺点:基函数个数急剧增加,非常耗时
3.多元函数的神经表达

弥补了上述多元函数缺点,不需要不停的扩充基函数个数,只需要用不同的未知数组成新的函数然后组合成最终的多元函数即可
4.向量值函数(多个因变量,一个自变量)
注意:无论曲线在几维空间中表示,本质维度都是1,因为只有一个自变量,多维度表示只是方便过程中的计算和观察

5.特例1
t代表多维度的集合(如xyz都表示为t)并且在他们都是统一的同步变化

6.特例2
用uv构成新的函数,再次构成最终的函数。它是一个流行结构,本质是个由uv表示的二维结构,却在可以三维空间中表示,对应的例子有球面

7.特例3
三维投影到二维

8.特例4
高维投影到低维,会存在信息丢失,如果类似流行这种结构点和点一一对应,可以通过一个g去表达(转换)还原,确保信息不丢失,但是如果是多个点映射到一个点上,就会出现信息丢失了。因为用g转换回去时一个点会映射多个点,无法确定选取哪一个(其实感觉也是可以转换回去的,只要包含这些丢失点对应x,y的逼近曲线就行)

9.非函数曲线拟合问题
用两个函数去拟合即可,用横向的函数和竖向的函数一起去拟合一个新的非函数曲线
拟合的度量误差为:

参数:这里的x,y都是由一个t构成,这个t就是参数,代表着曲线本身的维度
10.点列的参数化

  • 均匀求参:将点与点直接平均分配成若干段
  • 弦长参数化:根据弦长进行分配
  • 中心参数化(很麻烦,效果好,不常用)

    左边的是均匀参数,中间的是弦长参数,右边的是中心参数化
    均匀参数由于很短的地方也分配了同样多段参数t,就会突出
    弦长参数化就比较光滑,因为根据了长短进行分配
    11.曲面参数化
    和曲线参数化一样,将曲面降维,用低维参数表达