私はJavaでいくつかの関数を持っています。Javaで逆関数を計算する
Function<BigDecimal, BigDecimal> f = x -> {/*..*/}
入力値を出力で見つけることはできますか?つまり、何らかの形で逆関数を計算できますか?
ありがとうございました。
私はJavaでいくつかの関数を持っています。Javaで逆関数を計算する
Function<BigDecimal, BigDecimal> f = x -> {/*..*/}
入力値を出力で見つけることはできますか?つまり、何らかの形で逆関数を計算できますか?
ありがとうございました。
Javaで自動的に「逆を見つける」方法はありません。しかし、逆関数を自分で実装することはもちろん自由です。実際の多くの関数では、逆関数は適切なアルゴリズムで文書化されているか、簡単に計算されています。
逆関数は、基底関数がinjective functionの場合にのみ計算できます。数学
、単射又は注射または一対一の関数はが鮮明を保存することが機能である:それは、その終域の同じ要素にそのドメインの別個の要素をマッピングすることはありません。
一般に、Java関数は注入型ではありません。
Ciao -> CIAO
ciao -> CIAO
cIaO -> CIAO
機能はさらに時間に依存又はrandomically生成される内部情報を使用することができるので、例えばtoUpperCase
ため単射されません。これらの状況では、逆関数を作成することはできません。 単射について
しかしながら、逆関数を作成することが可能であるが、それは自動プロセスありません。
"自動プロセスではありません"を提案しました。それを自動的に行うのは不可能だろうか?どうして? Thanks – pabvid
@pabvidは、1対1の機能の背後にあるルールを知る必要があるため、自動プロセスではありません。逆論理を別の関数に適用しない限り、元の値を見つけるために使用できる自動化されたメカニック・プロセスはありません。逆論理は、手動で書き込む場合にのみ適用できます。 –
public class myReverse {
public static void main(String[] args) {
int num=54321,reverse=0; //This 54321 is any input.you can Scan new number if you want.
while(num !=0){
int a=num%10;
reverse=reverse*10 + a;
num=num/10;
}
System.out.println(reverse);
}
}
コードを追加しないでください。説明を追加してください – Jens
もちろん自動的ではありません。 – Kayaman
一般的に、逆関数は* many values *を返すことができます。 'x - > x * x'の場合、 '9'の逆の値は' 3'と '-3'です。 'x - > sin(x)'の逆値は 'PI * k'(kは任意の整数*)です。逆の値が –
を探しているはずのドメイン( '[0..Inf]')を指定しなければなりません(2番目の場合は '[-PI/2..PI/2]')。それが一方通行の機能ならば、あなたはできません。あなたの質問は機能に特有ですが、あなたは特定の機能を提供していません。 – Plirkee