类 PolynomialFunctionLagrangeForm
java.lang.Object
org.hipparchus.analysis.polynomials.PolynomialFunctionLagrangeForm
- 所有已实现的接口:
-
UnivariateFunction
实现了在拉格朗日形式中表示实数多项式函数。有关参考,请参阅《数值分析导论》,ISBN 038795452X,第2章。
近似函数应该足够平滑,以便拉格朗日多项式能够很好地工作。否则,请考虑改用样条曲线。
-
构造器概要
-
方法概要
修饰符和类型方法说明protected void
从插值数据计算拉格朗日多项式的系数。int
degree()
返回多项式的次数。static double
evaluate
(double[] x, double[] y, double z) 使用内维尔算法评估拉格朗日多项式。double[]
返回系数数组的副本。double[]
返回插值点数组的副本。double[]
返回插值值数组的副本。double
value
(double z) 计算给定点的函数值。static boolean
verifyInterpolationArray
(double[] x, double[] y, boolean abort) 检查插值数组是否有效。
-
构造器详细资料
-
PolynomialFunctionLagrangeForm
使用给定的横坐标和函数值构造拉格朗日多项式。插值点的顺序不重要。构造函数会复制输入数组并将其分配。
- 参数:
-
x
- 插值点 -
y
- 插值点处的函数值 - 抛出:
-
MathIllegalArgumentException
- 如果数组长度不同。 -
MathIllegalArgumentException
- 如果插值点数量小于2。 -
MathIllegalArgumentException
- 如果两个横坐标具有相同的值。
-
-
方法详细资料
-
value
public double value(double z) 计算给定点的函数值。- 指定者:
-
value
在接口中UnivariateFunction
- 参数:
-
z
- 要计算函数值的点。 - 返回:
- 函数值。
- 抛出:
-
MathIllegalArgumentException
- 如果x
和y
长度不同。 -
MathIllegalArgumentException
- 如果x
未严格按升序排序。 -
MathIllegalArgumentException
- 如果x
的大小小于2。
-
degree
public int degree()返回多项式的次数。- 返回:
- 多项式的次数
-
getInterpolatingPoints
public double[] getInterpolatingPoints()返回插值点数组的副本。对返回的副本进行的更改不会影响多项式。
- 返回:
- 插值点数组的新副本
-
getInterpolatingValues
public double[] getInterpolatingValues()返回插值值数组的副本。对返回的副本进行的更改不会影响多项式。
- 返回:
- 插值值数组的新副本
-
getCoefficients
public double[] getCoefficients()返回系数数组的副本。对返回的副本进行的更改不会影响多项式。
请注意,系数计算可能不稳定。请谨慎使用,仅在必要时使用。
- 返回:
- 系数数组的新副本
-
evaluate
使用 Neville's Algorithm计算拉格朗日多项式。时间复杂度为O(n^2)。- 参数:
-
x
- 插值点数组。 -
y
- 插值值数组。 -
z
- 要计算函数值的点。 - 返回:
- 函数值。
- 抛出:
-
MathIllegalArgumentException
- 如果x
和y
长度不同。 -
MathIllegalArgumentException
- 如果x
未严格按升序排序。 -
MathIllegalArgumentException
- 如果x
的大小小于2。
-
computeCoefficients
protected void computeCoefficients()从插值数据计算拉格朗日多项式的系数。时间复杂度为O(n^2)。请注意,此计算可能不稳定:请谨慎使用,仅在必要时使用。 -
verifyInterpolationArray
public static boolean verifyInterpolationArray(double[] x, double[] y, boolean abort) throws MathIllegalArgumentException 检查插值数组是否有效。此方法检查的数组特征是两个数组具有相同的长度,并且此长度至少为2。- 参数:
-
x
- 插值点数组。 -
y
- 插值值数组。 -
abort
- 如果x
未排序是否抛出异常。 - 返回:
-
如果
x
未按升序排序,则为false
,否则为true
。 - 抛出:
-
MathIllegalArgumentException
- 如果数组长度不同。 -
MathIllegalArgumentException
- 如果插值点数量小于2。 -
MathIllegalArgumentException
- 如果x
未严格按升序排序且abort
为true
。 - 另请参阅:
-