【问题标题】:Evaluating the inverse of a function评估函数的逆
【发布时间】:2018-08-01 11:48:07
【问题描述】:

我需要在域 [0,1): 中评估这个函数的逆

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

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

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

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

【问题讨论】:

  • 我认为这个问题在这里完全是主题,就像函数逼近标签中的其他问题一样。
  • 我的程序不在 Mathematica 上,我只用它来绘制函数。

标签: inverse function-approximation


【解决方案1】:

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

在 Mathematica 中,您可能会反转它并得到这个“错误”的答案:

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

这里有一个情节来说明这个“正确”答案的工作原理:

【讨论】:

  • 抱歉,由于我在此堆栈中的声誉,我无法发布图片!
【解决方案2】:

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

【讨论】:

  • 这正是我提到的倒数,但它包含一个术语 sqrt(27A⁴x² - 4A²x⁴),它限制了我可以使用的 A 的值(不可能)。
  • 该术语如何限制您可以使用的 A 值?
猜你喜欢
  • 1970-01-01
  • 2015-12-01
  • 2016-08-14
  • 2019-05-23
  • 1970-01-01
  • 2018-07-31
  • 1970-01-01
  • 2018-10-04
相关资源
最近更新 更多