在 Java 中以分解形式写出多项式
Writing a polynomial in facorized form in Java
所以我有一个复数系数数组。因此,如果 c= a+ib,系数将存储为 (a,b)。我的数组称为 Coeff[i]。我想编写一个函数来接受一个变量,比如 z,并计算多项式。但问题是,我不想使用 Math.Pow 函数,我想像这样计算多项式:
我尝试写下 1、2、3、4 次多项式,由此我注意到了一种模式(我的意思是它有点明显)。但是后来我想不出这样写的方法。如果有人能提供帮助那就太好了。
也许我应该设置一个循环,从最高索引开始并从内部对多项式求和?
我想我必须用这些设置一个循环,但我不确定具体怎么做:
您所描述的称为 Hormer's Method,用于评估多项式。您可以通过从最高阶项开始进行评估,然后重复将其乘以 z,然后添加下一个最高阶项,重复冲洗。它看起来像这样:
Complex eval(Complex z, Complex coeff[]) {
Complex eval = 0;
for (int i = coeff.length-1; i > 0; i--) {
eval += Complex.add(coeff[i], Complex.mul(eval, z));
}
return eval + coeff[0];
}
你需要对输入做一些验证(即确保数组不为空),这假设你有一个 class 来处理复数(我不记得是否有一个标准的可用)。另外,我还没有测试过这个,所以对它持保留态度,但这是一般的想法。
所以我有一个复数系数数组。因此,如果 c= a+ib,系数将存储为 (a,b)。我的数组称为 Coeff[i]。我想编写一个函数来接受一个变量,比如 z,并计算多项式。但问题是,我不想使用 Math.Pow 函数,我想像这样计算多项式:
我尝试写下 1、2、3、4 次多项式,由此我注意到了一种模式(我的意思是它有点明显)。但是后来我想不出这样写的方法。如果有人能提供帮助那就太好了。
也许我应该设置一个循环,从最高索引开始并从内部对多项式求和?
我想我必须用这些设置一个循环,但我不确定具体怎么做:
您所描述的称为 Hormer's Method,用于评估多项式。您可以通过从最高阶项开始进行评估,然后重复将其乘以 z,然后添加下一个最高阶项,重复冲洗。它看起来像这样:
Complex eval(Complex z, Complex coeff[]) {
Complex eval = 0;
for (int i = coeff.length-1; i > 0; i--) {
eval += Complex.add(coeff[i], Complex.mul(eval, z));
}
return eval + coeff[0];
}
你需要对输入做一些验证(即确保数组不为空),这假设你有一个 class 来处理复数(我不记得是否有一个标准的可用)。另外,我还没有测试过这个,所以对它持保留态度,但这是一般的想法。