将分段多项式函数转换为单个表达式/模型

时间:2014-07-28 15:43:40

标签: java math numerical-methods polynomial-math numerical-analysis

简报

假设我们有一个连续的分段多项式,我们如何通过任何编程语言(最好是Java)用单个方程或公式表达它?

在纯数学中,我发现可以用积分或Heaviside阶跃函数来表达函数。但是,如果可能的话,我找不到的答案是如何在编程中进行表示

更多...

可以将x传递给PolynomialSplineFunction,并获取其y值。 source: Wikipedia

但是这里函数真正做的是二元搜索存储在对象中的多项式数组,用右多项式代替并返回值。

public double value(double v) {
        if (v < knots[0] || v > knots[n]) {
            throw new OutOfRangeException(v, knots[0], knots[n]);
        }
        int i = Arrays.binarySearch(knots, v);
        if (i < 0) {
            i = -i - 2;
        }
        // This will handle the case where v is the last knot value
        // There are only n-1 polynomials, so if v is the last knot
        // then we will use the last polynomial to calculate the value.
        if ( i >= polynomials.length ) {
            i--;
        }
    return polynomials[i].value(v - knots[i]);
}

我正在寻找的是一个不会存储值/多项式数组并在以后匹配它们的对象,但是而是在很大程度上计算这样的值与常规数学公式相同的方法(例如ax³+bx²+ cx + d )。这将是这样的代码:

public double value(double x) {
            // the function will do more complex computation here (e.g. integration)
            return a*Math.pow(x, 3) + b*Math.pow(x, 2) + c*x + d;
}

0 个答案:

没有答案