背景:我正在尝试使用 Python 和 sympy 制作一个非常简单的 gamma 函数分形绘图,最初是一个非常简单的版本来了解它的工作原理(基于 counter=0 或 1 的值的两种映射颜色)。
基本上,代码(如下)调用了 gamma 函数,然后进行了一些复数比较:只需检查复数“nextcomplex=gamma(mycomplex)”是否比初始“mycomplex”复数更接近“1+0i” . 制作分形的最终算法比这更复杂,但基本计算就像那些一样,所以我需要提高那个简单代码的速度。
对于小间隔它工作正常,我可以绘制值,但对于大间隔非常慢,我现在正在运行它,它已经超过 1 小时并且仍然运行总共 test_limitn x test_limitm=1000x1000 个元素。(例如高达 100x100 就可以了,我可以绘制这些值并看到一个非常基本的分形)
我的问题是:如何增强代码以使其更快?(例如其他 Python 库,或者有其他更好的函数来进行比较等)
from sympy import gamma,I,re,im,zoo
test_limitn = 1000
test_limitm = 1000
for m in range(-test_limitm,test_limitm):
for n in range(-test_limitn, test_limitn):
counter = 0
mycomplex = m+(n*I)
nextcomplex = gamma(mycomplex).evalf(1)
if mycomplex!=zoo and nextcomplex!=zoo:
absrenextcomplex = re(nextcomplex)
absimnextcomplex = abs(im(nextcomplex))
if (abs(n) > absimnextcomplex) and (abs(1-m) > abs(1-absrenextcomplex)):
counter = 1
非常欢迎任何提示,谢谢!