Java 将分段多项式函数转换为单个表达式/模型 简报
假设我们有一个连续的分段多项式,我们如何通过任何编程语言(最好是Java)用一个方程或公式来表达它 在纯数学中,我发现可以用积分或阶梯函数来表示函数。但我找不到的答案是,如果可能的话,如何在编程中进行表示 更多 可以将x传递给,比如,a,然后得到它的y值。 但函数真正做的是对存储在对象中的多项式数组进行二进制搜索,替换为正确的多项式并返回值Java 将分段多项式函数转换为单个表达式/模型 简报,java,math,numerical-methods,polynomial-math,numerical-analysis,Java,Math,Numerical Methods,Polynomial Math,Numerical Analysis,假设我们有一个连续的分段多项式,我们如何通过任何编程语言(最好是Java)用一个方程或公式来表达它 在纯数学中,我发现可以用积分或阶梯函数来表示函数。但我找不到的答案是,如果可能的话,如何在编程中进行表示 更多 可以将x传递给,比如,a,然后得到它的y值。 但函数真正做的是对存储在对象中的多项式数组进行二进制搜索,替换为正确的多项式并返回值 public double value(double v) { if (v < knots[0] || v > knots[n
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]);
}
@阿瑟伯。重点是将“公式”打印到文档中。然后编写此类公式的典型方法是使用一个大左括号,每行区分一个案例。或者你可以用索引定义一组区间,[a_i,b_i)并为每个i定义多项式P_i@ArthurB.所以不可能把它写成一个公式,对吧?这取决于公式的意思。如果允许在公式中包含指示函数,那么如果样条曲线是多边形p1的值,如果x在区间I1,p2的值,如果x在区间I2,那么你可以写样条曲线=Ind_I1*p1+Ind_I2*p2+。。。
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;
}