考虑一个整数序列,我怎样才能找到对其建模的多项式函数?(即为 x=1 生成第一项,为 x=2 生成第二项等)
例如,让我们考虑这个序列:1、683、44287、838861。如何找到匹配生成函数是y = 118008*x^3 - 686587*x^2 + (10^6)*x - 665807.
注意:代码必须达到 10 级。
考虑一个整数序列,我怎样才能找到对其建模的多项式函数?(即为 x=1 生成第一项,为 x=2 生成第二项等)
例如,让我们考虑这个序列:1、683、44287、838861。如何找到匹配生成函数是y = 118008*x^3 - 686587*x^2 + (10^6)*x - 665807.
注意:代码必须达到 10 级。
这不是一个真正的 java 问题......这是一个基本的数学问题。如果你考虑 [1, 4, 9, 16, 25],取它们之间的差异,你会得到 [3, 5, 7, 9]。再做一次,你会得到 [2, 2, 2]。
现在看看 [1, 8, 27, 64, 125]... 的区别是 [7, 19, 37, 61]。它们的区别在于 [12, 18, 24],而区别又是 [6, 6]。
如果您为 x^4 执行此操作,那么您将拥有的第四组差异将是 [24, 24, 24...] 等。
换句话说,如果等式中的最高项是 a*x^n,那么在取 n 次差之后,你得到的最终差是 a*n!。
因此,从 [1, 683, 44287, 838861] 开始,第一个差异是 [682, 43604, 794574],第二个差异是 [42922, 750970],第三个差异是 [708048]。所以除以3!或 6,你得到 118008*x^3 的第一项。
现在您可以返回,从原始序列中减去 118008*x^3,然后从新序列 [-118007, -943381, -3141929, -6713651] 中计算出 x^2 项。您可能可以在此处输入一条捷径,这样您就不必一直回到开头,但这取决于您自己的想法。