0

我正在尝试编写两个反函数。如果我们将值 10 传递给函数 A,它会返回例如 4,86,如果我们将该数字传递给函数 B,它应该返回原始 10。

我在函数A中使用了这样的东西:

输出 = sqrt(inputForA / range) * inputForA;

那么是否可以在函数 B 中反转它并仅知道输出和范围来计算 inputForA。

4

2 回答 2

1

你只需要使用基本的数学。output = pow(inputForA, 3. / 2.) * pow(range, 1. / 2.)所以inputForA = pow(output * pow(range, 1. / 2.), 2. / 3.)。这仅在inputForAscale具有相同符号时才有效,但第一个函数仅在该间隔上定义,所以这没关系(因为sqrt只为正值定义)。

在 Python 中:

scale = 7.

def f(x):
    return math.sqrt(x / scale) * x

def g(y):
    return math.pow(y * math.pow(scale, 1. / 2), 2. / 3)

print g(f(10))
10.0

print f(g(10))
10.0

您也可以使用Wolfram alpha来获得答案:在此处输入图像描述

于 2013-01-23T19:25:04.753 回答
1

您只需要考虑该等式以挑出 inputForA。以下是代数步骤:

输出 = sqrt(inputForA / range) * inputForA

输出 / inputForA = sqrt(inputForA / 范围)

sq(输出) / sq(inputForA) = inputForA / 范围

范围 * sq(输出) / sq(inputForA) = inputForA

范围 * sq(输出)= 立方体(inputForA)

因此,范围乘以输出平方的立方根应该可以为您提供原始输入。不过,我没有很好的方法在这里展示它......

于 2013-01-23T19:37:21.543 回答