私は2つの逆関数を書こうとしています。関数 A に値 10 を渡すと、たとえば 4,86 が返され、その数値を関数 B に渡すと、元の 10 が返されます。
関数Aで次のようなものを使用しています:
出力 = sqrt(inputForA / 範囲) * inputForA;
関数Bでそれを逆にして、出力と範囲のみを知っているinputForAを計算することは可能ですか?
基本的な数学を使用するだけです。output = pow(inputForA, 3. / 2.) * pow(range, 1. / 2.)
そうinputForA = pow(output * pow(range, 1. / 2.), 2. / 3.)
。これはinputForA
とscale
が同じ符号の場合にのみ機能しますが、最初の関数はその間隔でのみ定義されているため、これで問題ありません (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を使用して答えを得ることもできます。
その方程式を因数分解して、inputForA を選択するだけです。代数ステップは次のとおりです。
出力 = sqrt(inputForA / range) * inputForA
output / inputForA = sqrt(inputForA / range)
sq(出力) / sq(inputForA) = inputForA / 範囲
範囲 * sq(出力) / sq(inputForA) = inputForA
範囲 * 平方 (出力) = キューブ (入力の場合)
したがって、範囲の立方根に出力の二乗を掛けると、元の入力が得られます。ここでそれを示す良い方法はありませんが...