回答

1

如果要实际使用积分对象,则需要调用integrate method,该对象需要UnivariateFunction的实例。如果你使用Java 8,这是一个单一方法的接口,所以它自动成为一个功能接口。因此,你可以通过一个lambda或方法的参考,如:

final SimpsonIntegrator si = new SimpsonIntegrator(); 
final double result = si.integrate(50, x -> 2*x, 0, 10); 
System.out.println(result + " should be 100"); 

否则,您必须创建界面自己的实现,或者由具有类实现它,或者通过使用匿名类:

final double result = si.integrate(50, new UnivariateFunction() { 
     @Override public double value(double x) { 
      return 2*x; 
     } 
    }, 0, 10); 
System.out.println(result + " should be 100"); 
+0

非常感谢,它确实有效。 – AlexTitov

+0

我可以使用UnivariateFunction形式org.apache.commons.math3吗? 如果我想使用sin(x),我应该用泰勒级数分解它吗? – AlexTitov

0

它的工作原理!

final SimpsonIntegrator si = new SimpsonIntegrator(); 
final double result1 = si.integrate(10, x -> 2*Math.pow(x, 1), 0.0, 10.0); 
System.out.println(result1 + " should be 100.0"); 
final double result2 = si.integrate(1000, x -> Math.sin(x), 0.0, Math.PI); 
System.out.println(result2 + " should be 2.0000..."); 

谢谢Javier Martín

相关问题