我一直在收到类型错误,但我无法弄清楚导致问题的原因。 我的代码是......
#import modules needed
from math import sin, pi, sqrt
from cmath import exp
from lab2_q4b import q
#Define constants
lamda=500e-6 #wavelength of the incident light, units in meter
n=10 #number of slits in a dffraction grating
f=1.0 #focal length, units in meter
x=0.1 #width of the screen, units in meter
#Define a new function called qnew, which will be our integrand
def qnew(u):
return sqrt(q)*exp(1j*2*pi*x*u/(lamda*f))
我运行它会给我错误..
这是q ..的代码。
#Import modules
from math import sin, pi
#Define a function q that takes u as an argument
def q(u): #transmission function
d=20e-6 #separation of slits, units in meter
alpha=pi/d #
return (sin(alpha*u))**2 #the result of the transmission function
答案 0 :(得分:2)
问题在于qnew
的具体内容:
sqrt(q)
在isoltation中运行这段代码会引发您看到的异常:
>>> sqrt(q)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: a float is required
q
是一个函数,所以你试图取一个函数的平方根,这当然没有意义。我不确定你打算放在哪里,但是你需要修理的区域。
答案 1 :(得分:0)
我假设您想将其更改为:
return sqrt(q(u))*exp(1j*2*pi*x*u/(lamda*f))