[Munge] - 多项式模拟法 — 重新审视Gametime式脱离贯通

由于现实生活中,很多要素随着时间的变化并非线性的。假设不同时间段的某一要素 y 的变化可以用“指数型回归方程”表示:


其中系数m,n均不同。在非线性回归的分析中可以用“一组指数型多项式”的求和  所形成的多项式:


来模拟变化趋势,即


也就是一个 高次函数。


这里做一种假设,

假设对面是 二次函数,也就是最常见的“一元二次方程”的gametime脱离贯通。

有兴趣的可以看一下:

“Gametime式脱离贯通中的数学原理(辅助理解用)”

http://v-madoka.lofter.com/post/2fdf1b_7195ad1

或者

http://tieba.baidu.com/p/3791272838


用“多项式模拟”来模拟“二次函数”的话

m3 ~ mk  都是0。只有 m0 , m1 , m2 是一个数。


这样的话,三次函数,四次函数也都能很顺利的模拟出来。


但是如果是一些没有规律的散点图呢?


图中 绿色的线,就是 多项式模拟出来的曲线。而棕色的线则是 实际的点连成的线。

x轴一般是时间轴,y轴一般是 函数值的轴


这是根据 这些点的值,也就是函数值y,来进行模拟的。


也许可能你还没懂

为何要用“二次函数”来进行gametime式脱离贯通。


其实最初可能是因为真有一些人用二次函数写gametime脱离的,但是

用二次函数去贯通是一种数学和统计的思想、思维。


这种思维是这样的:

“通过三个或三个以上的值,来模拟出一条 二次函数 曲线。

这条二次函数曲线可能刚好和别人的表达式一致,也可能是在某一段上一致。

甚至是出现模拟曲线刚好和实际值曲线相交,而这个交点对应的时间轴上刚好是整数(gametime为整数)。

这样就可以进行gametime贯通

那么

这里的 k取多大呢?


这个k 随意取值,只是k越大,多项式模拟的就越准确。比如,我用一个100次多项式去模拟一个曲线,

那么这个曲线将非常精准。


下面我们来比较一下

写法上的区别。

这里采用 v圆神 里面 探查10帧的值,来进行模拟。


如图10个点。

因为v圆只 使用侦测到的 前3帧来进行模拟。所以只有前3帧的值模拟出的二次函数曲线,

自然后面的就差了。

不了解 v圆神代码的,请先看上面的“Gametime式脱离贯通中的数学原理(辅助理解用)”


而将其写法改进,每个3帧进行一次求值,来确定多条二次函数曲线(分段函数)

可以看出,精度一下子就上去了。


再看看 多项式模拟的。我这里用的 6次多项式进行模拟。

刚开始可能波动很剧烈。

但是随着时间的推移,多项式的优势也体现出来。

也许本例子中不明显,是因为原函数 有些段上就是二次函数。


但是很多时候,一个函数根本不是二次函数能模拟的,那么多项式模拟就有充足的优势。



有人会问,用多项式模拟出一条和实际值不等的曲线,有什么作用?

有作用的。

①,首先,“二次函数”模拟,是特殊的“多项式模拟”。

②,多项式模拟,可以模拟任意散点,和任意曲线。没有局限性。并且次数越高,越精确

③,很可能多项式模拟的曲线刚好 在整数的gametime上 等于原函数值,从而贯通

④,模拟一条相似的曲线,将这条曲线当作标准值,通过“微扰动法”,将实际值分离

实际值 = 标准值 + 扰动项

只需要对扰动项 进行研究即可。因为很多时候扰动项的一些表达式 可以忽略不计,所以模拟的精度会提高。


最简单的方法就是

把 扰动项 理解成 -2 ~ 2 之间的某一个整数 就好了,

用ifelse,结合random 来书写哦~~

也就是 实际值 = 模拟值 + ifelse(random%2 , -2 , ifelse(random%2 , -1  , ifelse(.....)  ))


这样子,只要 时间一长,总有刚好相等的。这个时候就贯通了。


所以,从大菊观来考虑,多项式 模拟 是很值得考虑的东西。


当然我只是说出一种想法,实行难度上,也是非常大的。

目前的难点是,解 一元高次 方程组。




~ Fin ~

Author : yui

date : 2015.06.02












 
评论
热度(4)
 
回到顶部