Function 混合两个函数,其中一个是逆函数

Function 混合两个函数,其中一个是逆函数,function,math,blending,inverse,Function,Math,Blending,Inverse,让我先解释一下这个想法。实际的数学问题在屏幕截图下面。 出于音乐目的,我正在构建一个groove算法,其中事件位置由数学函数F(X)转换。位置在凹槽范围内被标准化,因此我基本上处理0到1之间的值(这使得凹槽曲线的成形更加容易,唯一的限制是x'>=0)。 groove算法可以接受任何事件位置,还可以从数据结构(如时间线注释轨迹)中过滤静态注释。为了过滤特定范围内的事件(音频块大小),我需要反向groove函数来定位曲目中的音符,并将它们转换为groove空间。到现在为止,一直都还不错。它起作用了

让我先解释一下这个想法。实际的数学问题在屏幕截图下面。 出于音乐目的,我正在构建一个groove算法,其中事件位置由数学函数F(X)转换。位置在凹槽范围内被标准化,因此我基本上处理0到1之间的值(这使得凹槽曲线的成形更加容易,唯一的限制是x'>=0)。 groove算法可以接受任何事件位置,还可以从数据结构(如时间线注释轨迹)中过滤静态注释。为了过滤特定范围内的事件(音频块大小),我需要反向groove函数来定位曲目中的音符,并将它们转换为groove空间。到现在为止,一直都还不错。它起作用了

简而言之:我使用一个反函数来表示它镜像到(y=x)的事实。所以我可以插入一个值x,得到一个y。很明显,这个y可以插入到反函数中,再次得到第一个x

问题:我现在希望能够将groove混合到另一个groove中,但通常的线性(提示)混合代码的行为与我预期的不一样。为了简化,我首先尝试混合到y=x

B(x)=alpha*F(x) + (1-alpha)*x;
iB(x)=alpha*iF(x) + (1-alpha)*x;
对于alpha=1,我们得到完整的曲线。对于alpha=0,我们得到一条直线。但是对于0到1之间的alpha,B(x)和iB(x)不再被镜像(接近,但不够),F(x)和iF(x)仍然被镜像


是否有解决方案(除了将曲线量化为线段)?我应该关注的主题是什么?

你把两个函数f(x)和g(x)结合起来,这样y=af(x)+(1-a)g(x)。给定一些y,a,f和g,你想找到x。至少,这是我的理解

一般来说,我不知道如何做到这一点(尽管我没有尽力——我的意思是,这值得向其他人请教),但我怀疑,对于你似乎正在使用的“漂亮”形状的函数,牛顿的方法会相当快

你想找到x,使得y=af(x)+(1-a)g(x)。换句话说,当0=af(x)+(1-a)g(x)-y时

那么让我们定义r(x)=af(x)+(1-a)g(x)-y,并找到它的“零”。从中间的猜测开始,XY0=0.5。计算x_1=x_0-r(x_0)/r'(x_0)。重复一遍。如果你幸运的话,这将快速收敛(如果不是,你可以考虑定义相对于y= x的函数,你似乎已经在做了,然后再试一次)。
参见

一般来说,这个问题不能用代数方法解决

比如说

y=2e^x
(逆
x=log 0.5y

y=2x
(逆
x=0.5y

将这些元素与权重0.5混合在一起得到
y=e^x+x
,众所周知,这里仅使用初等函数无法求解
x
,即使很容易找到每个元素的倒数


您需要使用数值方法来近似逆运算,正如上面andrew所讨论的。

等等。。。你就是制作音阶矩阵的安德烈·米歇尔吗?如果是这样的话,那么感谢你制作了这么棒的应用程序!是的,谢谢。我猜这个解是方程的一个近似解。我希望数学更可靠。我已经添加了图像内联。你能在不依赖“groove”和“blend”(这是指插值)等术语的情况下解释更多吗?也许是通过评论图片?听起来好像你有两个函数,从[0,1]->[0,1]以线性方式组合,你想要逆函数?groove是指任何转换事件的函数。通过混合,我的意思是从函数A插值到函数B。让我们看看我是否理解正确:有两个“groove函数”
F(x)
G(x)
,当
x
介于0和1之间时,这两个函数的值都在0和1之间,这些函数的逆函数是
if(x)
iG(x)
。现在构造一个新函数
B(x)=alpha*F(x)+(1-alpha)*G(x)
,需要根据
iF(x)
iG(x)
找到该函数的逆函数?如果是这样的话,我想你可能想在会议上问这个问题,也许是在问这个问题的同时。他们可以告诉你是否有一个有用的数学程序。