我有值
x = 0 => y = 0
x = 1 => y = 1
x = 3 => y = 27
x = 4 => y = 64
我想用JAVA创建一个多项式函数来创建函数x ^ 3。程序应该创建函数并显示它,如果我给出任何值,它应该计算插值。我已经创建了一个函数,它只使用Aitken生成了值,但它不会生成函数,并且很难理解如何执行该函数。因为我不知道如何将X值作为X放在java程序中。
答案 0 :(得分:2)
我和你有同样的问题,最后得到了解决方案。 只需看看Apache commons math API。您可以使用拉格朗日方法或牛顿方法计算每个多项式度数的系数。
答案 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)提供一个非常好的表示,但它不会出来告诉你正弦函数比多项式近似更容易理解。