首页 > 解决方案 > 振荡积分的二维强度图

问题描述

我是 Python 的初学者,我想要一个像这样的情节:

需要的情节

这只是特定函数的绘图示例。对我来说重要的是能够创建这样的图的代码,我并不需要这个。例如,我想在下面绘制一个积分的模:

在此处输入图像描述

每个轴有两个参数。我们假设参数 nu 是固定的。

所以,要做到这一点,我认为我可以写

import numpy as np
import scipy
from numpy import exp,arange
from pylab import meshgrid,cm,imshow,contour,clabel,colorbar,axis,title,show
from scipy.integrate import quad


def integrand(x, muu1, muu2):
    return np.exp(3. * 1j*( x*x*x*x/4. + muu1*x*x/2. + muu2 *x ) )
 

# the function that I'm going to plot
def amplitude(func, minim, maxim):
    def real_func(x):
        return np.real(func(x))
    def imag_func(x):
        return np.imag(func(x))
        
    real_integral, err1 = quad(real_func, minim, maxim)
    
    imag_integral, err2 = quad(imag_func, minim, maxim)
    
    return real_integral*real_integral + imag_integral*imag_integral



mu1 = arange(-3.0,3.0,0.1).astype(int)
mu2 = arange(-3.0,3.0,0.1).astype(int)
X,Y = meshgrid(mu1, mu2) # grid of point

print(X)

Z = amplitude( lambda x: integrand(x, X, Y), -10,10)
im = imshow(Z,cmap=cm.RdBu)
show()

我看到如下错误:

only size-1 arrays can be converted to Python scalars

我不知道如何解决它,因为我不知道如何处理复杂的积分。

请任何人帮助我创建一个类似的情节,也许是一个更简单的功能?谢谢!

标签: pythonplotimshowquad

解决方案


推荐阅读