执行Math.pow,然后更新Array-Java

执行Math.pow,然后更新Array-Java,java,arrays,math,Java,Arrays,Math,我正在建立一个程序,它可以接收一组由逗号分隔的数字,然后将它们转换成数组,然后根据某种数学方法进行运算,找到最简单的多项式,然后在序列中给出更多的项。希望这是有道理的 现在,我已经完成了前三个步骤,得到了这里令人惊叹的社区的大量帮助。基本上就是这样。 1重复计算序列中相邻数字之间的差值,直到序列中的每个数字都相同: [1,1,5,13,25]⇒ [0, 4, 8, 12] ⇒ [4,4,4] 2新项的指数为上述步骤数,即2 3新项的系数是最终序列上的数字除以指数的阶乘,即4/2!=2

我正在建立一个程序,它可以接收一组由逗号分隔的数字,然后将它们转换成数组,然后根据某种数学方法进行运算,找到最简单的多项式,然后在序列中给出更多的项。希望这是有道理的

现在,我已经完成了前三个步骤,得到了这里令人惊叹的社区的大量帮助。基本上就是这样。 1重复计算序列中相邻数字之间的差值,直到序列中的每个数字都相同:

[1,1,5,13,25]⇒ [0, 4, 8, 12] ⇒ [4,4,4]

2新项的指数为上述步骤数,即2

3新项的系数是最终序列上的数字除以指数的阶乘,即4/2!=2.因此,新术语是2x^2

第四步有点奇怪

从原始序列的每个元素中减去新项。从第一个元素减去2*1^2,从第二个元素减去2*2^2,从第三个元素减去2*3^2,依此类推。这留下[-1,-7,-13,-19,-25],这是开始下一次迭代的数字序列

我看了一下数学。pow是一种我可以使用的方法,但我不确定如何真正做到这一点。我现在有一个实现前三个步骤的方法,如下所示

public Term nextTerm(){
   double[] lastSequence = sequence;
   int steps = 0;
   while ( !allEqual(lastSequence)) {
      lastSequence = differences(lastSequence);
      steps++;
   }
        return new Term(lastSequence[1]/factorial(steps), steps); 
   }
我相信新的术语应该给我系数和指数

我正在看。我想我有个主意。 我可以在该方法下使用for循环,所以看起来像这样

for(i=0;i<=sequence.length;i++){
sequence[i] - Term.getcoefficient * Math.pow(i,Term.getExponent)
}
请让我知道这是否正确,然后我将如何更新序列数组


谁能帮我一下吗。谢谢各位。

我不确定我是否在遵循,但你们可能会发现使用牛顿插值多项式更容易。您可以添加一个新的术语2xx-1,而不是添加一个新的术语2x^2。那么你就不必去处理其他的减法,等等。。最后你会得到一个多项式,它看起来像c_0/0!+c_1/1!x+c_2/2!xx-1+c_3/3!xx-1x-2+。。。。如果愿意或不愿意,您可以稍后简化该多项式。

如果有人能告诉我,我提出的上述解决方案是否接近,或者我的方向是否正确?我将非常感激。谢谢爱德华,我明白,但这实际上是为了一个大学项目,他们出于某种原因决定采用这种方式。在这个项目中有很多事情可以简化,但是他们迫使我们按照他们的方式去做。所以是的。不幸的是没有那么好。你知道我提出的for循环是否正确吗?它给了我一个编译器错误:不是一个语句,所以我不确定我做错了什么。for循环看起来几乎正确。我看到的唯一问题是第一个-应该是-=。否则它会像你描述的那样工作。不,我试图去掉使用term.getcofficient*Math.powi,term.getExponent得到的术语,然后从序列的每个术语中去掉它。所以它应该是正确的,但我也希望在之后的序列中替换它。基本上是这样。例如如果序列[1]=1,那么我要做的是1-21^2,然后替换序列[1]中的结果值。我不知道如何更换等等。你能帮我吗?我刚才想到的就是这个。我用sequence[i]=上面的语句,现在很好。但现在我有一个错误,找不到Term.getcovercient。这实际上是另一个名为Term的类中的一个方法,它只返回系数。为什么会这样?如果可以,请提供帮助。sequence[i]=sequence[i]-Term.getcofficient*Math.powi,Term.getExponent;