2014-09-17 2 views
1

Я продолжаю получать ошибку типа, но я не могу понять, что вызывает проблему. мой код ..Продолжайте получать, TypeError: требуется поплавок

#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)) 

и я бег это дает мне ошибку ..

это код для д ..

#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 
+1

Ой, извините, и моя функция д записывается в отдельном сценарии; – user3241976

+0

модулей #import от импорта математики греха, пи #define функции Q, которая принимает U в качестве аргумента четкости Q (U): функция #transmission D = 20e-6 #separation щелей, единиц в метре alpha = pi/d # return (sin (alpha * u)) ** 2 # результат функции передачи – user3241976

ответ

2

Проблема заключается в детализированной qnew:

sqrt(q) 

Запуск этот кусок кода в isoltation поднимет исключение Вы видите:

>>> sqrt(q) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: a float is required 

q является функцией, поэтому вы пытаетесь извлечь квадратный корень из функции, которая, конечно, не имеет никакого смысла. Я не уверен, что вы хотели поставить на свое место, но это место, которое вам нужно исправить.

0

Я предполагаю, что вы хотели бы изменить его:

return sqrt(q(u))*exp(1j*2*pi*x*u/(lamda*f)) 
Смежные вопросы