0

我想写一个函数f_1(a,b) = (x,y),它近似于 f 的倒数,其中f(x,y) = (a,b)是一个双射函数(在特定范围内)

关于如何获得有效数值近似的任何建议?

使用的编程语言并不重要。

4

2 回答 2

1

求解f(x,y)=(a,b)x,y 等效于求f(x,y)-(a,b)(= 0) 的根或最小值,因此您可以使用任何标准的求根或优化算法。如果你自己实现这个,我推荐坐标下降,因为它可能是最简单的算法。您也可以尝试自适应坐标下降,尽管这可能更难分析。

如果你想在一个范围内找到逆,你可以在不同的点计算逆,然后用三次样条进行插值,或者在你想计算逆函数时求解上面的方程。即使您为每个评估求解方程,预先计算一些值仍然可能会有所帮助,以便它们可以用作求解器(例如坐标下降)的初始值。

另见牛顿法二分法

于 2012-11-14T07:47:16.873 回答
0

没有适用于任何一般功能的“自动”解决方案。即使在 y = f(x) 的简单情况下,也很难找到合适的起点。举个例子:

y = x^2 

有一个很好的代数逆

x = sqrt(y)

但是试图用多项式(例如)在 [0..1] 范围内逼近 sqrt 函数非常糟糕。

如果您的范围足够小,并且您的函数表现得足够好,那么您可能会使用 2D 样条曲线进行拟合。如果这可行,那么您应该尝试对 x 和 y 使用独立函数,即使用

y = Y_1(a,b)  and x = X_1(a,b)

而不是更复杂的

(x,y) = F_1(a,b)
于 2012-11-14T02:55:26.560 回答