用Java计算反函数
我在Java中有一些函数用Java计算反函数,java,lambda,Java,Lambda,我在Java中有一些函数 Function<BigDecimal, BigDecimal> f = x -> {/*..*/} 函数f=x->{/*..*/} 我能通过输出找到输入值吗,即我能以某种方式计算反函数吗 谢谢 Java中没有自动的“求逆”方法。但是,您当然可以自行实现反函数。对于许多实际函数,它们的逆函数都有很好的文档记录,并且/或者可以使用正确的算法轻松计算。只有当基函数是一个函数时,才能计算逆函数 在数学中,内射函数或内射函数或一对一函数是一个保持显著性的函
Function<BigDecimal, BigDecimal> f = x -> {/*..*/}
函数f=x->{/*..*/}
我能通过输出找到输入值吗,即我能以某种方式计算反函数吗
谢谢 Java中没有自动的“求逆”方法。但是,您当然可以自行实现反函数。对于许多实际函数,它们的逆函数都有很好的文档记录,并且/或者可以使用正确的算法轻松计算。只有当基函数是一个函数时,才能计算逆函数 在数学中,内射函数或内射函数或一对一函数是一个保持显著性的函数:它从不将其域的不同元素映射到其辅域的相同元素 通常,java函数不是内射函数。例如,
toUpperCase
不是内射的,因为
Ciao -> CIAO
ciao -> CIAO
cIaO -> CIAO
函数还可以使用依赖于时间或随机生成的内部信息。在这些情况下,不可能创建反函数
然而,对于内射函数,可以创建反函数,但它不是一个自动过程,当然不是自动过程。在一般情况下,反函数可以返回许多值,例如,对于
x->x*x
,9
的反数值为3
和-3
;对于x->sin(x)
而言0
的反数值为PI*k
(其中k为任意整数);因此,您必须在第一种情况下指定域([0..Inf)
,并且[-PI/2..PI/2]
在第二个)中,逆函数应该在哪里查找否。如果它是单向函数,则不能。您的问题是函数特定的…但您没有提供任何特定的函数。@Plirkee:单向函数意味着它的逆函数非常复杂,但从技术上讲,它可能非常复杂computed@Dmitry拜琴科:反过来呢x->0
的功能?“这不是一个自动过程”.你是说不可能自动完成吗?为什么?Thanks@pabvid不是一个自动过程,因为您需要了解一对一函数背后的规则。没有可用于查找原始值的自动机械过程,除非您在另一个函数中应用反向逻辑。您可以在上应用反向逻辑如果你手工写的话。
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);
}
}