Итак, я пытаюсь заставить этот график плотности работать для данного интеграла. Не уверен, что мне не хватает, но я получаю эту ошибку.
Traceback:
runfile ('F: / PHY 281 / Домашняя работа / Набор 4 / tyest3.py', wdir = 'F: / PHY
281 / Домашняя работа / Set 4 ') Traceback (последний вызов был последним):
Файл "", строка 1, в
runfile ('F: / PHY 281 / Домашняя работа / Набор 4 / tyest3.py', wdir = 'F: / PHY 281 / Домашняя работа / Набор 4')
Файл
"E: \ Programs \ Anaconda \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 710, в runfile
execfile (имя файла, пространство имен)
Файл
"E: \ Programs \ Anaconda \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 101, в execfile
exec (compile (f.read (), filename, 'exec'), пространство имен)
Файл "F: / PHY 281 / Домашняя работа / Набор 4 / tyest3.py", строка 27, в
gb = quad (Jm, 0,1e-6) [0]
Файл
"E: \ Programs \ Anaconda \ Lib \ сайт-пакеты \ SciPy \ интегрировать \ quadpack.py",
строка 323, в квадрате
точек)
Файл
"E: \ Programs \ Anaconda \ Lib \ сайт-пакеты \ SciPy \ интегрировать \ quadpack.py",
строка 388, в _quad
return _quadpack._qagse (func, a, b, args, full_output, epsabs, epsrel, limit)
TypeError: в скаляры Python могут быть преобразованы только массивы длины-1
from scipy.integrate import quad
import numpy as np
import matplotlib.pyplot as plt
from numpy import cos,sin,pi
lmda = 5e-7
m = 1
def Jm(thta):
return (1/pi)*cos(m*thta-x*sin(thta))
xvals = np.linspace(-10*lmda,10*lmda,200)
zvals = np.linspace(-20*lmda,20*lmda,200)
x,z = np.meshgrid(xvals,zvals)
gb = quad(Jm,0,1e-6) [0]
plt.figure(figsize=(12,8))
plt.imshow(gb,origin='lower',extent=[-10*lmda,10*lmda,-20*lmda,20*lmda])
cbar = plt.colorbar()
cbar.ax.set_ylabel('V/m')
cbar.ax.set_xlabel('E')
plt.xlabel('x nm')
plt.ylabel('y nm')
plt.show()