计算函数的反函数

Evaluating the inverse of a function

我需要计算域 [0,1] 中此函数的反函数:

有一个解析逆(我不会费心把它放在这里,因为它很大),但它只适用于常数 A 的有限范围,即如果 A>0.385f(x)。然后,我想到了两种可能的解决方案:

  1. 使用 Newton-Raphson 方法(或任何其他求根方法)计算每个 f(x) 的 x;
  2. 用sigmoid函数逼近逆函数,通过最小二乘法确定参数。

我倾向于 (2),因为它看起来足够简单并且不会像 (1) 那样减慢我的代码速度,但我对近似的有效性没有把握。我也很感激其他建议。

我的代码是用 C++ 编写的,如果有一些内置的方法可以解决我的问题。

y = Ax/(1-x**2)**(1/3),然后y**3 = A**3*x**3/(1-x**2),然后A**3*x**3 = y**3*(1-x**2)。这是一个三次方程。解决它,你会发现 x(y).

虽然您建议的两种提议方法对于更一般的情况都很有趣,但可以分析地反转此函数。

在 Mathematica 中,您可能会反转它并得到这个 "wrong" 答案:

由于平方根,正确的真实答案是这个的绝对值。

这里有一个图来说明这个 "right" 答案有效: