类 HermiteInterpolator
java.lang.Object
org.hipparchus.analysis.interpolation.HermiteInterpolator
多项式插值器,使用样本值和样本导数。
插值多项式匹配所有样本点,包括值和提供的导数。每个值向量的分量都有一个多项式。所有多项式的次数相同。多项式的次数取决于点的数量和每个点的导数数量。例如,对于没有任何导数的n个样本点的插值多项式都具有次数n-1。对于n个样本点,两个端点具有值和一阶导数,其余点仅具有值的插值多项式都具有次数n+1。对于所有点都具有值、一阶和二阶导数的n个样本点的插值多项式都具有次数3n-1。
-
构造器概要
-
方法概要
修饰符和类型方法说明void
addSamplePoint
(double x, double[]... value) 添加一个样本点。double[][]
derivatives
(double x, int order) 在指定的横坐标处插值值和一阶导数。计算插值多项式。double[]
value
(double x) 在指定的横坐标处插值值。<T extends Derivative<T>>
T[]value
(T x) 计算函数的值。
-
构造器详细资料
-
HermiteInterpolator
public HermiteInterpolator()创建一个空的插值器。
-
-
方法详细资料
-
addSamplePoint
public void addSamplePoint(double x, double[]... value) throws MathIllegalArgumentException, MathRuntimeException 添加一个样本点。每个样本点必须调用一次此方法。允许混合调用只有值的调用和值与一阶导数的调用。
所有调用的点的横坐标必须不同。
- 参数:
-
x
- 样本点的横坐标 -
value
- 样本点的值和导数(如果只传递一行,则为值,如果传递两行,则第一行为值,第二行为导数,依此类推) - 抛出:
-
MathIllegalArgumentException
- 如果添加的点与先前点之间的横坐标差为零(即两个点在相同的横坐标上) -
MathRuntimeException
- 如果导数的数量大于20,这将阻止计算阶乘
-
getPolynomials
计算插值多项式。- 返回:
- 插值多项式数组
- 抛出:
-
MathIllegalArgumentException
- 如果样本为空
-
value
在指定的横坐标处插值。调用此方法等同于调用
value
返回的所有多项式的方法,但不构建中间多项式,因此此方法更快且数值稳定性更好。- 参数:
-
x
- 插值横坐标 - 返回:
- 插值值
- 抛出:
-
MathIllegalArgumentException
- 如果样本为空
-
value
计算函数的值。- 参数:
-
x
- 应计算函数值的点 - 返回:
- 值
- 抛出:
-
MathIllegalArgumentException
- 如果x
不满足函数的约束(例如参数超出范围,或不支持的导数阶数)
-
derivatives
public double[][] derivatives(double x, int order) throws MathIllegalArgumentException, NullArgumentException 在指定的横坐标处插值值和一阶导数。- 参数:
-
x
- 插值横坐标 -
order
- 最大导数阶数 - 返回:
- 插值值和导数(第0行为值,第1阶导数在第1行,...第n阶导数在第n行)
- 抛出:
-
MathIllegalArgumentException
- 如果样本为空 -
NullArgumentException
- 如果x为null
-