(我不确定我是否应该在这个网站或数学网站上发布这个问题。如有必要,请随时迁移此帖子。)
我手头的问题是,给定一个值,k
我想用数值计算非线性多项式的有理函数,k
如下所示:(对不起,我不知道如何在这里排版方程......)复数常数
在哪里{a_0, ..., a_N; b_0, ..., b_N}
,{u_0, ..., u_N, v_0, ..., v_N}
是实常数,i
是虚数。我从Numerical Recipes中了解到,如果所有系数都保持不变,那么有很多方法可以快速计算多项式,同时保持舍入误差足够小。但我认为这些想法在我的情况下没有用,因为指数前因数也取决于k
.
目前我在 C 中以蛮力的方式计算它complex.h
(这只是一个伪代码):
double complex function(double k)
{
return (a_0+a_1*cexp(I*u_1*k)*k+a_2*cexp(I*u_2*k)*k*k+...)/(b_0+b_1*cexp(I*v_1*k)*k+v_2*cexp(I*v_2*k)*k*k+...);
}
但是,当调用次数function
增加时(因为这只是我实际计算的一部分),它非常缓慢且不准确(只有 6 个有效数字)。我感谢任何意见和/或建议。