类 PolynomialFunctionLagrangeForm

java.lang.Object
org.hipparchus.analysis.polynomials.PolynomialFunctionLagrangeForm
所有已实现的接口:
UnivariateFunction

public class PolynomialFunctionLagrangeForm extends Object implements UnivariateFunction
实现了在拉格朗日形式中表示实数多项式函数。有关参考,请参阅《数值分析导论》,ISBN 038795452X,第2章。

近似函数应该足够平滑,以便拉格朗日多项式能够很好地工作。否则,请考虑改用样条曲线。

  • 构造器详细资料

  • 方法详细资料

    • value

      public double value(double z)
      计算给定点的函数值。
      指定者:
      value 在接口中 UnivariateFunction
      参数:
      z - 要计算函数值的点。
      返回:
      函数值。
      抛出:
      MathIllegalArgumentException - 如果xy长度不同。
      MathIllegalArgumentException - 如果x未严格按升序排序。
      MathIllegalArgumentException - 如果x的大小小于2。
    • degree

      public int degree()
      返回多项式的次数。
      返回:
      多项式的次数
    • getInterpolatingPoints

      public double[] getInterpolatingPoints()
      返回插值点数组的副本。

      对返回的副本进行的更改不会影响多项式。

      返回:
      插值点数组的新副本
    • getInterpolatingValues

      public double[] getInterpolatingValues()
      返回插值值数组的副本。

      对返回的副本进行的更改不会影响多项式。

      返回:
      插值值数组的新副本
    • getCoefficients

      public double[] getCoefficients()
      返回系数数组的副本。

      对返回的副本进行的更改不会影响多项式。

      请注意,系数计算可能不稳定。请谨慎使用,仅在必要时使用。

      返回:
      系数数组的新副本
    • evaluate

      public static double evaluate(double[] x, double[] y, double z) throws MathIllegalArgumentException
      使用 Neville's Algorithm计算拉格朗日多项式。时间复杂度为O(n^2)。
      参数:
      x - 插值点数组。
      y - 插值值数组。
      z - 要计算函数值的点。
      返回:
      函数值。
      抛出:
      MathIllegalArgumentException - 如果xy长度不同。
      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未严格按升序排序且aborttrue
      另请参阅: