Python 如何提高gamma函数和复数相关代码的速度?

Python 如何提高gamma函数和复数相关代码的速度?,python,sympy,complex-numbers,gamma-function,Python,Sympy,Complex Numbers,Gamma Function,上下文:我正在尝试使用Python和Symphy制作一个非常简单的gamma函数分形绘图,最初是了解其工作原理的一个非常简单的版本(基于counter=0或1的值的两种贴图颜色) 基本上,下面的代码调用gamma函数,然后进行一些复数比较:只需检查复数“nextcomplex=gamma(mycomplex)”是否比初始的“mycomplex”复数更接近“1+0i”。生成分形的最后一个算法比这要复杂得多,但基本计算与这些算法类似,因此我需要提高简单代码的速度 对于小间隔,它工作正常,我可以绘制值

上下文:我正在尝试使用Python和Symphy制作一个非常简单的gamma函数分形绘图,最初是了解其工作原理的一个非常简单的版本(基于counter=0或1的值的两种贴图颜色)

基本上,下面的代码调用gamma函数,然后进行一些复数比较:只需检查复数“nextcomplex=gamma(mycomplex)”是否比初始的“mycomplex”复数更接近“1+0i”。生成分形的最后一个算法比这要复杂得多,但基本计算与这些算法类似,因此我需要提高简单代码的速度

对于小间隔,它工作正常,我可以绘制值,但是对于大间隔,它非常慢,我现在正在运行它,它超过1个小时,并且仍然在运行测试限制n x测试限制m=1000x1000个元素。 (例如,高达100x100就可以了,我可以绘制值并看到一个非常基本的分形)

我的问题是:如何增强代码以使其更快?(例如,其他Python库,或者有其他更好的函数来进行比较,等等)


欢迎任何提示,谢谢

如果您只做数字操作,那么使用NumPy之类的数字库会更好。SymPy是为符号计算而设计的,虽然它可以执行数值计算,但速度不是很快

除此之外,numba还可以提高循环的性能

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