含绝对值的函数初步
1 小时前20 浏览
前言:绝对值其实被低估太多了
之前在糯米的贴子下(你问哪个是?点进论坛全是)讨论了一些,稍做总结打算分享出来.
设玩家初始的随机坐标为(x₀,y₀)
本贴只讨论了部分基础函数,请读者们大胆开发.
1.初步了解
首先,认识一下绝对值,它在游戏中的体现是: abs
abs(任意函数)=|任意函数|
它的做用是让函数的负值变为正值,也可以说是让函数沿x轴翻折.是复数的模的下位
2.简要说明
函数图像沿y轴翻折,那么,对于有对称中心的函数,都可以通过平移(y上加下减,x左加右减)出新函数,达到|a-x|=|x-a|
3.稍作应用
观察函数
y₁=|x|+x
得出该函数在(-∞,0]恒等于0,在(0,+∞)等于2x
那么, y₂=(|x|+x)/2 在(-∞,0]处也等于0,在(0,+∞)等于x
这里把y₂向右平移a个单位,使函数在(-∞,a]等于0,在(a,+∞)等于x-a.[即以(x₀+a,y₀)为原点发射了y=x]
由上句话得,我们可以通过y₂×(待定函数)达成在a之前恒为0,在a时突变为(待定函数)x
这里待定函数可以当做是斜率了.
问题一:我不想输出一次函数,只想突变为sin或cos的这种怎么办?
有些人会想到除以x再乘,让待定函数变为 (想要表现的函数)/x 这种形式
这是个典型的错误,我们试一次就会发现,打不出来.检查一下,分母是不能为0的
所以,想突变为这种非一次函数的,要用y₂×[(想要表现的函数)/(x+一个很小的数)].我们通常用0.001或10⁻⁶或0.1⁶什么的(注意,使用后两个不要使函数过大,近似2¹⁰²³就要小心了)
缺陷:打出来是打出来了,但是渐变的(除非你就想缓缓变大)
实际上,我们想要突变,要在y₂上动手脚
令y₃=(|x-a|+x-a)/(2+一个很小的数)
则y₃*sin(x)便可以达到在a后突变了.
类似的,爱睡觉的小糯米的方法也可行,不过在x=a时是 想表现的函数/2[不过可以稍改一下 想表现的函数/(0.1^-10+(666)^(x-a))].由于那个与绝对值无关,这里不细说了.
问题二:你这函数突变是突变了,但显示出来后就没有收回的余地了啊.我要[始,0]是0,[0,5]是x,[5,7]是sin(x),该怎么办?
我们还是有办法的(没办法我就不发了\不是)
首先提出想法1:约掉
让[0,5]时显示为x,[5,7]时显示个sin(x)-x不就行了么
答案很显然,如果你连这么大错误都发现不了的话,就……就没被我这句话骗到
这个想法其实是可行的
这个想法其实是可行的但实践中也并非完美,它会在a处产生一个断层
以我e的那个g子来说,它产生了一个大约是6的猛降
平稳与简便不可兼得,想要平.就要上增量了
让 想表达的函数1×{[|(x-a₁+b)|-|(x-a₁-b)|]/2b}
a是突变起始点
这里2b是多长变化完(b越小越好)
之后,约分就是
y=想表达的函数1×{[|(x-a₁+b)|-|(x-a₁-b)|]/2b}+【(想表达的函数2-想表达的函数1)×{[|(x-a₂+b)|-|(x-a₂-b)|]/2b}】+……
4.略微结合
前面讲了不少,但实战想在60s内做完就有点捉襟见肘了,有没有什么简便的方法呢?
我们刚开始用(x-a+|x-a|)/2时,不难发现就是想要a左为0,a右为……为…………为我所用![[表情_吐舌头]](https://img-tc.tapimg.com/market/images/945b09ff7a33dc3966007a3e87896ebf.png)
![[表情_吐舌头]](https://img-tc.tapimg.com/market/images/945b09ff7a33dc3966007a3e87896ebf.png)
刚刚又讲了消去的方法,那么,结合一下
得出了个k|x-a|
k依旧是斜率
abs(x-a)=abs(a-x).怎么输都行
因游戏特性,排除了起始点x>a的情况
所以[始,a)中abs(x-a)=a-x
我们利用消去法,可以得出
?x+?₂abs(a-x)+?₃abs(b-x)±……
这里的?不是直接输斜率的
?=k₁-k₂-k₃±……
剩下的也都依此类推
这个运算量随折弯次数增加
注:游戏上把输入的函数的图像与y轴的交点移到了发射点,所以只求k就够了.
fw提醒您:形缺数时难入微.一个好的眼力才是胜利的第一要素.估的不准,公式白推.
引用下@爱睡觉的小糯米的观测结果:一个格子的单位长度是2.5
[os:我(fw)发现了一个近乎100%成功且绝对无法反制的作弊方案.但这太小了,我写不下
]
]
