接口 UnivariateFunction

所有已知子接口:
UnivariateDifferentiableFunction
所有已知实现类:
Abs, Acos, Acosh, Asin, Asinh, Atan, Atanh, BesselJ, Cbrt, Ceil, Constant, Cos, Cosh, Exp, Expm1, Floor, Gaussian, HarmonicOscillator, Identity, Inverse, Log, Log10, Log1p, Logistic, Logit, Minus, MonitoredFunction, PolynomialFunction, PolynomialFunctionLagrangeForm, PolynomialFunctionNewtonForm, PolynomialSplineFunction, Power, QuinticFunction, Rint, Sigmoid, Sin, Sinc, Sinh, SmoothStepFactory.QuadraticSmoothStepFunction, SmoothStepFactory.SmoothStepFunction, Sqrt, StepFunction, Tan, Tanh, Ulp, XMinus5Function

public interface UnivariateFunction
表示一元实函数的接口。

当一个用户定义的函数在评估过程中遇到错误时,value方法应该抛出一个用户定义的未检查异常。

以下代码摘录展示了使用根求解器作为示例时建议的做法,但同样的结构适用于ODE积分器或优化器。

 private static class LocalException extends RuntimeException {
     // 引起问题的x值。
     private final double x;

     public LocalException(double x) {
         this.x = x;
     }

     public double getX() {
         return x;
     }
 }

 private static class MyFunction implements UnivariateFunction {
     public double value(double x) {
         double y = hugeFormula(x);
         if (somethingBadHappens) {
           throw new LocalException(x);
         }
         return y;
     }
 }

 public void compute() {
     try {
         solver.solve(maxEval, new MyFunction(a, b, c), min, max);
     } catch (LocalException le) {
         // 检索x值。
     }
 }
 
如所示,异常局限于用户的代码,并且保证Hipparchus不会捕获它。
  • 方法概要

    修饰符和类型
    方法
    说明
    double
    value(double x)
    计算函数的值。
  • 方法详细资料

    • value

      double value(double x)
      计算函数的值。
      参数:
      x - 应计算函数值的点。
      返回:
      函数的值。
      抛出:
      IllegalArgumentException - 当激活方法本身可以确定在激活方法级别表达的API中指定的前提条件已被违反时。当Hipparchus抛出IllegalArgumentException时,通常是由于检查传递给方法的实际参数而导致的。