如何在域中找到方程的所有复根

计算科学 算法 参考请求
2021-11-30 04:28:17

我面临一个问题,我想找到复杂的根源f(z)=zsin(z)=0数字上。

该函数有无穷多个根,但我只对N最接近原点,或者更一般地说,在复平面的某个域内。

Newton-Raphson 方法也适用于复杂函数,因此给定一些初始z0,我最终在某个根f(z). 然而,这并没有给我所有的根源。我知道根部会有一个吸引力的盆地,所以我基本上需要一个z0在每个吸引人的盆地中,除了我没有这个盆地开始。我能想到的最聪明的方法是从一个网格开始z0的,并选择唯一的。这似乎非常低效。

因此我的问题是:有没有一种有效的方法来找到所有复杂的根f(z)在复平面的域内?

2个回答

要找到某个域中的所有复杂根,您需要使用分支定界方法。通常从一个封闭的盒子开始,然后递归地将其拆分为子盒子,然后应用一些构造方法来获得盒子中解决方案数量的下限和/或上限。如果盒子中不存在解决方案,则可以将其丢弃。

一些适用的测试例如在我的论文
A. Neumaier, Enclosure clusters of zeros of polynomials, J. Comput。应用程序。数学。156 (2003), 389-401。
http://www.mat.univie.ac.at/~neum/ms/polzer.pdf

阿诺德已经给出了很好的答案。通常,您所要求的类似于用于查找函数的所有最小值的全局优化算法(在您的情况下,最小值将是|f(z)|2=f(z)f(z)¯. 如果您知道要查找的关键字(全局优化),则有大量关于此问题的文献。