类 BaseAbstractUnivariateIntegrator
java.lang.Object
org.hipparchus.analysis.integration.BaseAbstractUnivariateIntegrator
- 所有已实现的接口:
-
UnivariateIntegrator
- 直接已知子类:
-
IterativeLegendreGaussIntegrator
,MidPointIntegrator
,RombergIntegrator
,SimpsonIntegrator
,TrapezoidIntegrator
public abstract class BaseAbstractUnivariateIntegrator extends Object implements UnivariateIntegrator
提供了几个通用函数的默认实现。
-
字段概要
修饰符和类型字段说明static final double
默认绝对精度。static final int
默认最大迭代次数。static final int
默认最小迭代次数。static final double
默认相对精度。protected final Incrementor
迭代次数。 -
构造器概要
限定符构造器说明protected
BaseAbstractUnivariateIntegrator
(double relativeAccuracy, double absoluteAccuracy) 使用给定的精度构造积分器。protected
BaseAbstractUnivariateIntegrator
(double relativeAccuracy, double absoluteAccuracy, int minimalIterationCount, int maximalIterationCount) 使用给定的精度和迭代次数构造积分器。protected
BaseAbstractUnivariateIntegrator
(int minimalIterationCount, int maximalIterationCount) 使用给定的迭代次数构造积分器。 -
方法概要
修饰符和类型方法说明protected double
computeObjectiveValue
(double point) 计算目标函数值。protected abstract double
在派生类中实现实际积分算法的方法。double
获取绝对精度。int
获取积分器上次运行的函数评估次数。int
获取积分器上次运行的迭代次数。protected double
getMax()
获取上限。int
获取迭代次数的上限。protected double
getMin()
获取下限。int
获取迭代次数的下限。double
获取相对精度。double
integrate
(int maxEval, UnivariateFunction f, double lower, double upper) 在给定区间内对函数进行积分。protected void
setup
(int maxEval, UnivariateFunction f, double lower, double upper) 准备计算。
-
字段详细资料
-
DEFAULT_ABSOLUTE_ACCURACY
public static final double DEFAULT_ABSOLUTE_ACCURACY默认绝对精度。- 另请参阅:
-
DEFAULT_RELATIVE_ACCURACY
public static final double DEFAULT_RELATIVE_ACCURACY默认相对精度。- 另请参阅:
-
DEFAULT_MIN_ITERATIONS_COUNT
public static final int DEFAULT_MIN_ITERATIONS_COUNT默认最小迭代次数。- 另请参阅:
-
DEFAULT_MAX_ITERATIONS_COUNT
public static final int DEFAULT_MAX_ITERATIONS_COUNT默认最大迭代次数。- 另请参阅:
-
iterations
迭代次数。
-
-
构造器详细资料
-
BaseAbstractUnivariateIntegrator
protected BaseAbstractUnivariateIntegrator(double relativeAccuracy, double absoluteAccuracy, int minimalIterationCount, int maximalIterationCount) throws MathIllegalArgumentException 使用给定的精度和迭代次数构造积分器。各个参数的含义如下:
- 相对精度: 当由于较大的值或短尾数长度而无法达到绝对精度时,将使用此值停止迭代。如果这应该是收敛的主要标准而不是安全措施,请将绝对精度设置为一个极小的值,如
Precision.SAFE_MIN
。 - 绝对精度: 通常选择默认值,以便在区间-10..-0.1和+0.1..+10中可以找到具有合理精度的结果。如果您的结果的预期绝对值数量级要小得多,请将其设置为较小的值。
- 最小迭代次数: 需要最小迭代次数以避免错误的早期收敛,例如,样本点碰巧是函数的零点。用户可以使用默认值或选择他们认为合适的值。
- 最大迭代次数: 通常高迭代次数表示收敛问题。然而,对于不同的算法,“合理值”差异很大。建议用户使用算法提供的默认值。
- 参数:
-
relativeAccuracy
- 结果的相对精度 -
absoluteAccuracy
- 结果的绝对精度 -
minimalIterationCount
- 最小迭代次数 -
maximalIterationCount
- 最大迭代次数 - 抛出:
-
MathIllegalArgumentException
- 如果最小迭代次数不是严格正数 -
MathIllegalArgumentException
- 如果最大迭代次数小于或等于最小迭代次数
- 相对精度: 当由于较大的值或短尾数长度而无法达到绝对精度时,将使用此值停止迭代。如果这应该是收敛的主要标准而不是安全措施,请将绝对精度设置为一个极小的值,如
-
BaseAbstractUnivariateIntegrator
protected BaseAbstractUnivariateIntegrator(double relativeAccuracy, double absoluteAccuracy) 使用给定的精度构造积分器。- 参数:
-
relativeAccuracy
- 结果的相对精度 -
absoluteAccuracy
- 结果的绝对精度
-
BaseAbstractUnivariateIntegrator
protected BaseAbstractUnivariateIntegrator(int minimalIterationCount, int maximalIterationCount) throws MathIllegalArgumentException 使用给定的迭代次数构造积分器。- 参数:
-
minimalIterationCount
- 最小迭代次数 -
maximalIterationCount
- 最大迭代次数 - 抛出:
-
MathIllegalArgumentException
- 如果最小迭代次数不是严格正数 -
MathIllegalArgumentException
- 如果最大迭代次数小于或等于最小迭代次数
-
-
方法详细资料
-
getRelativeAccuracy
public double getRelativeAccuracy()获取相对精度。- 指定者:
-
getRelativeAccuracy
在接口中UnivariateIntegrator
- 返回:
- 精度
-
getAbsoluteAccuracy
public double getAbsoluteAccuracy()获取绝对精度。- 指定者:
-
getAbsoluteAccuracy
在接口中UnivariateIntegrator
- 返回:
- 精度
-
getMinimalIterationCount
public int getMinimalIterationCount()获取迭代次数的下限。- 指定者:
-
getMinimalIterationCount
在接口中UnivariateIntegrator
- 返回:
- 实际下限
-
getMaximalIterationCount
public int getMaximalIterationCount()获取迭代次数的上限。- 指定者:
-
getMaximalIterationCount
在接口中UnivariateIntegrator
- 返回:
- 实际上限
-
getEvaluations
public int getEvaluations()获取积分器上次运行的函数评估次数。- 指定者:
-
getEvaluations
在接口中UnivariateIntegrator
- 返回:
- 函数评估次数
-
getIterations
public int getIterations()获取积分器上次运行的迭代次数。- 指定者:
-
getIterations
在接口中UnivariateIntegrator
- 返回:
- 迭代次数
-
getMin
protected double getMin()获取下限。- 返回:
- 下限。
-
getMax
protected double getMax()获取上限。- 返回:
- 上限。
-
computeObjectiveValue
计算目标函数值。- 参数:
-
point
- 必须评估目标函数的点。 - 返回:
- 指定点处的目标函数值。
- 抛出:
-
MathIllegalStateException
- 如果超过了最大函数评估次数。
-
setup
protected void setup(int maxEval, UnivariateFunction f, double lower, double upper) throws MathIllegalArgumentException, NullArgumentException 准备计算。如果子类重写任何solve
方法,则必须调用此方法。- 参数:
-
maxEval
- 最大评估次数。 -
f
- 被积函数 -
lower
- 区间的最小边界 -
upper
- 区间的上限 - 抛出:
-
NullArgumentException
- 如果f
为null
。 -
MathIllegalArgumentException
- 如果min >= max
。
-
integrate
public double integrate(int maxEval, UnivariateFunction f, double lower, double upper) throws MathIllegalArgumentException, MathIllegalStateException, NullArgumentException 在给定区间内积分函数。- 指定者:
-
integrate
在接口中UnivariateIntegrator
- 参数:
-
maxEval
- 最大评估次数。 -
f
- 被积函数 -
lower
- 区间的下限 -
upper
- 区间的上限 - 返回:
- 积分值
- 抛出:
-
MathIllegalArgumentException
- 如果min > max
或端点不满足积分器指定的要求 -
MathIllegalStateException
- 如果超过最大函数评估次数 -
MathIllegalStateException
- 如果超过最大迭代次数或积分器检测到收敛问题 -
NullArgumentException
- 如果f
为null
。
-
doIntegrate
在派生类中实现实际积分算法的方法。- 返回:
- 根。
- 抛出:
-
MathIllegalStateException
- 如果超过了最大评估次数。 -
MathIllegalStateException
- 如果超过最大迭代次数或积分器检测到收敛问题
-