gpt4 book ai didi

java - Java 上的插值和导数

转载 作者:行者123 更新时间:2023-12-01 11:49:22 25 4
gpt4 key购买 nike

我正在尝试制作一个涉及根据原始数据及其导数计算插值的项目。我有两个如下所示的数组:

A = { 1, 2, 3, 4, ... , n }
B = { 0.23, 0.43, 0.24, 0.19, ... , n }

我想要一个函数来描述以下数组,因此我使用 apache-common-math 库来插值描述函数的多项式,其中:F(A[i]) = B[i]。之后,我希望计算该函数的导数,以便能够找到极值(最大/最小)。

由于某种原因,我在处理导数部分时遇到了问题。

当前使用:

        DividedDifferenceInterpolator devider = new DividedDifferenceInterpolator();
PolynomialFunctionNewtonForm polynom = devider.interpolate(xArray,
yArray);

现在我有了多项式,它是代表我之前的数组的函数。我应该如何计算它的导数..?

谢谢。

最佳答案

您可以通过从牛顿形式多项式中提取系数、从中创建一个PolynomialFunction,然后使用该函数的derivative 方法来获得导数。这是一个例子:

double[] x = {0, 1, 2, 3, 4, 5};
double[] y = new double[6];
for (int i = 0; i < 6; i++) {
y[i] = 1 + 2 * x[i] + 3 * x[i] * x[i];
}
DividedDifferenceInterpolator divider = new DividedDifferenceInterpolator();
PolynomialFunctionNewtonForm polynom = divider.interpolate(x, y);
double[] coefficients = polynom.getCoefficients();
System.out.println(Arrays.toString(coefficients));
PolynomialFunction derivative =
(PolynomialFunction) new PolynomialFunction(coefficients).derivative();
System.out.println(Arrays.toString(derivative.getCoefficients()));

上面的代码根据多项式 y = 1 + 2x + 3x^2 生成点。输出应该是

[1.0, 2.0, 3.0, 0.0, 0.0, 0.0]
[2.0, 6.0]

关于java - Java 上的插值和导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28914707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com