求函数的逆

时间:2018-08-01 11:48:08

标签: inverse function-approximation

我需要在[0,1):function to invert

域中评估此函数的逆函数

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

  1. 使用Newton-Raphson方法(或任何其他寻根方法)评估每个f(x)的x;
  2. 使用S型函数对逆进行近似,并通过最小二乘法确定参数。

我趋向于(2),因为它看起来很简单并且不会像(1)那样使我的代码变慢,但是我对近似的有效性并不安全。我也很感谢其他建议。

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

2 个答案:

答案 0 :(得分:1)

尽管您建议的两种建议方法在更一般的情况下都很有趣,但该函数可以解析地反转。

在Mathematica中,您可能将其反转并得到了“错误”答案:

"wrong" answer

正确的真实答案是平方根的绝对值。

以下是说明此“正确”答案的原理图:

"right" answer

答案 1 :(得分:0)

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)。