python中数值积分中的解包错误

python中数值积分中的解包错误,python,matplotlib,Python,Matplotlib,下面是我的代码片段,通过NumPy、SciPy和MatPlotLib库绘制一个积分函数: import numpy as np from scipy.integrate import quad import matplotlib.pyplot as plt sigma = 1 def integrand(x,n): return (n/(2*sigma*np.sqrt(np.pi)))*np.exp(-(n**2*x**2)/(4*sigma**2)) tt = np.linspa

下面是我的代码片段,通过
NumPy
SciPy
MatPlotLib
库绘制一个积分函数:

import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt

sigma = 1

def integrand(x,n):
    return (n/(2*sigma*np.sqrt(np.pi)))*np.exp(-(n**2*x**2)/(4*sigma**2))

tt = np.linspace(0, 20, 0.01)
nn = np.linspace(1, 100, 1)

T = np.zeros_like([len(tt), len(nn)])

for i,t in enumerate(tt):
    for j,n in enumerate(nn):
        T[i,j] = quad(integrand, -oo, t, args = (x))

plt.pcolormesh(tt,nn,T)
但是与
解包
相关的问题有如下
值错误

Traceback (most recent call last):
  File "C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 106, in exec_file    exec_code(code, file, global_variables)
  File "C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.1\visualstudio_py_util.py", line 82, in exec_code     exec(code_obj, global_variables)
      File "C:\Users\Matinking\documents\visual studio 2013\Projects\NeuroSimulation\NeuroSimulation\XSundry\test2.py", line 63, in <module>
plt.pcolormesh(tt,nn,T)
  File "C:\Python34\lib\site-packages\matplotlib\pyplot.py", line 2946, in pcolormesh
ret = ax.pcolormesh(*args, **kwargs)
  File "C:\Python34\lib\site-packages\matplotlib\axes.py", line 7747, in pcolormesh
X, Y, C = self._pcolorargs('pcolormesh', *args, allmatch=allmatch)
  File "C:\Python34\lib\site-packages\matplotlib\axes.py", line 7357, in _pcolorargs
numRows, numCols = C.shape
ValueError: need more than 1 value to unpack
Press any key to continue . . .
回溯(最近一次呼叫最后一次):
文件“C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.1\visualstudio\u py\u util.py”,第106行,在exec\u文件exec\u代码(代码、文件、全局变量)中
文件“C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.1\visualstudio\u py\u util.py”,第82行,在exec\u代码exec(代码obj,全局变量)中
文件“C:\Users\Matinking\documents\visual studio 2013\Projects\NeuroSimulation\NeuroSimulation\XSundry\test2.py”,第63行,在
plt.pcolormesh(tt,nn,T)
pcolormesh中的文件“C:\Python34\lib\site packages\matplotlib\pyplot.py”,第2946行
ret=ax.pcolormesh(*args,**kwargs)
pcolormesh中的文件“C:\Python34\lib\site packages\matplotlib\axes.py”,第7747行
十、 Y,C=self.\u pcolorargs('pcolormesh',*args,allmatch=allmatch)
文件“C:\Python34\lib\site packages\matplotlib\axes.py”,第7357行,在_pcolorargs中
numRows,numCols=C.shape
ValueError:需要超过1个值才能解包
按任意键继续。
这个问题似乎与代码的最后一行有关,但我想不出任何解决方案

你能告诉我这个案子吗


循环变量是浮点数。您正在使用的“t”和“n”不是索引变量,您想说的是:“对于枚举(TT)中的i,t”和类似的其他变量。@Sandman:可能是。。但由于我是这个领域的新来者,如果您能告诉我潜在的解决方案,我将不胜感激。。。我的意思是,我应该如何使用
I
变量?谢谢,但是
ValueError
仍然存在,并且没有根据结果进行任何更改…您的被积函数被定义为包含两个参数,但只提供了一个参数。“n”是你想提供的第二个参数吗,因为我没有看到你在循环中的任何地方使用它?你是对的
n
必须作为其他参数考虑。。。那么,代码应该是怎样的?…args=(x,n)在四元函数调用中。虽然我不确定代码中变量“x”的值是从哪里来的,但我不这么认为
args
tuple是积分变量的代表,即
x
args=(x,n)
将一维积分转换为二维积分。。。
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt

sigma = 1

def integrand(x, n):
    return (n/(2*sigma*np.sqrt(np.pi)))*np.exp(-(n**2*x**2)/(4*sigma**2))

tt = np.linspace(0, 19, 20)  # divides range 0 to 19 into 20 equal size portions. Thus, tt = [0, 1, 2, ..., 19]
nn = np.linspace(1, 100, 100)  # nn = [1, 2, ..., 100]

T = np.zeros([len(tt), len(nn)])

for i,t in enumerate(tt):
    for j,n in enumerate(nn):
        T[i, j], _ = quad(integrand, -np.inf, t, args=(n,))  # evaluate integral from -infinity to t, with value of n in the function set to n passed in from here.

x, y = np.mgrid[0:20:1, 1:101:1]  # create a mesh/grid for plotting.

plt.pcolormesh(x, y, T)  #plot

plt.show()