假设我们有一个连续的分段多项式,我们如何通过任何编程语言(最好是Java)用单个方程或公式表达它?
在纯数学中,我发现可以用积分或Heaviside阶跃函数来表达函数。但是,如果可能的话,我找不到的答案是如何在编程中进行表示。
可以将x传递给PolynomialSplineFunction,并获取其y值。
但是这里函数真正做的是二元搜索存储在对象中的多项式数组,用右多项式代替并返回值。
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;
}