使用java在点处插入函数f的多项式

时间:2011-02-12 03:58:58

标签: java math interpolation

我有值

x = 0   =>   y = 0
x = 1   =>   y = 1
x = 3   =>   y = 27
x = 4   =>   y = 64

我想用JAVA创建一个多项式函数来创建函数x ^ 3。程序应该创建函数并显示它,如果我给出任何值,它应该计算插值。我已经创建了一个函数,它只使用Aitken生成了值,但它不会生成函数,并且很难理解如何执行该函数。因为我不知道如何将X值作为X放在java程序中。

3 个答案:

答案 0 :(得分:2)

我和你有同样的问题,最后得到了解决方案。 只需看看Apache commons math API。您可以使用拉格朗日方法或牛顿方法计算每个多项式度数的系数。

您可以下载API here的.jar文件和文档here

答案 1 :(得分:1)

假设您有4对(x,y)点。考虑等式a0 + a1 * x + a2 * x ^ 2 + a3 * x ^ 3 = y。放4对(x,y),你有4个变量的4个线性方程。使用矩阵求解器或编写自己的求解器(a0 ... a3)。现在你可以有一个方法插值(双x){return a0 * x + a1 * x * x + a2 * x ^ 2 + a3 * x ^ 3; }。希望有所帮助。

答案 2 :(得分:0)

我有值x = 0 => y = 0 x = 1 => y = 1 x = 2 => y = 27 x = 3 => y = 64

这是列出积分的奇怪方法。

太糟糕了,他们不属于y = x ^ 3。这些是:

(x,y)= {(0,0),(1,1),(2,8),(3,27),(4,64),(5,125)...} < / p>

更新:

我会以不同的方式说出你的问题。您的“示例”点集不正确且具有误导性。听起来你真的在说“我有一套任意的点,我想为它们配合一个功能。”

如果您知道所需函数的形式,问题仅在于计算未知系数。如果你有多少积分可以解决它们(如果存在解决方案)。如果你有比系数更多的点,你可以做最少的方形拟合。

但这一切都取决于事先知道你想要什么功能。

要求计算机为您找出最佳形式和系数值是一项艰巨的任务。

你当然可以在点之间使用拉格朗日插值,但它仍然可能不是告诉你什么是“最佳”函数来表示你的点。它采用多项式形式,因此混合其他函数不是方法的一部分。它可以为sin(x)提供一个非常好的表示,但它不会出来告诉你正弦函数比多项式近似更容易理解。