【发布时间】:2018-01-26 12:57:23
【问题描述】:
我的任务是整合下面的一维菲涅耳衍射方程,用红色表示:
关键是您正在将光圈转换为屏幕上的图案,但现在只专注于将水平条整合到 1d 中(暂时忽略高度)。因此忽略 yprime。你也有固定的 z 和 k,j 是一个虚数。我为此编写了以下代码:
import math
import numpy as np
import cmath
k=5
z=5
x=0
j=cmath.sqrt(-1)
func=math.exp((j*k/2*z)(x-xp)*(x-xp))
def X(xp1,xp2,function,N):
h=(xp2-xp1)/N
y=0.0
xp=xp1
for x in np.arange(1, N/2 +1): #summing odd order y terms
y+=4*f(xp)
xp+=2*h
xp=xp1+2*h
for x in np.arange(0, N/2): #summing even order y terms
y+=2*f(x)
xp+=2*h
integral= (h/3)*(y+f(xp1)+f(xp2))
return integral
print(simpson(0,5,func,10))
但是,它是说 xp 没有定义。但我在函数中明确定义了xp。
有谁知道可能出了什么问题?
谢谢
编辑:这是我的代码的一个更简洁的版本。但它仍然要求我定义 xp..
import math
import cmath
lamda=0.2
k=(2*math.pi)/lamda
z=0.1
def expfunc(x, xp):
func = math.exp(((1j)*k/2*z)(x-(xp))*(x-(xp)))
return(func)
def X(xp1,xp2,x,f,N):
h=(xp2-xp1)/N
y=0.0
xp=xp1
for i in np.arange(1, N/2 +1): #summing odd order y terms
y+=4*f(xp)
xp+=2*h
xp=xp1+2*h
for i in np.arange(0, N/2): #summing even order y terms
y+=2*f(xp)
xp+=2*h
integral= (h/3)*(y+f(xp1)+f(xp2))
return integral
print(X(0,1,x,expfunc,10))
【问题讨论】:
-
顺便说一句,你不需要
cmath.sqrt(-1),1j工作正常。 -
请将您的问题回滚到之前的状态。如果您认为您的问题不再属于该网站,则可以将其删除。但请不要编辑所有问题详细信息,因为它会使问题的所有答案无效。
标签: python math integration physics