Julia中三维晶格上的含时薛定谔方程

Julia中三维晶格上的含时薛定谔方程,julia,physics,differential-equations,Julia,Physics,Differential Equations,我想用,解三维晶格上矩阵形式的含时薛定谔方程 i、 e(∂/∂t) ψ=-iHψ,其中ψ是向量,H是(与时间无关的)矩阵。 我试着这样写代码 #Define the underlying equation function time_evolution(ψdot,ψ,p,t) ψdot.=-im.*H(Lx,Ly,Lz)*ψ end Lx = Ly = Lz = 10 ψ0 = [] # Initial conditions σ = sqrt(5/2) for iz = 1:Lz

我想用,
解三维晶格上矩阵形式的含时薛定谔方程 i、 e(∂/∂t) ψ=-iHψ,其中ψ是向量,H是(与时间无关的)矩阵。
我试着这样写代码

#Define the underlying equation
function time_evolution(ψdot,ψ,p,t)
  ψdot.=-im.*H(Lx,Ly,Lz)*ψ
end

Lx = Ly = Lz = 10
ψ0 = [] #  Initial conditions
σ = sqrt(5/2)

for iz = 1:Lz
    for ix = 1:Lx
        for iy = 1:Ly                  
           gauss = (1/(sqrt(2*π)*σ)^3)*exp(-((ix)^2 + (iy)^2 + (iz)^2)/(2*(σ)^2))
           push!(ψ0,gauss)                           
        end
    end
end

tspan = (0.,1.0) #  Simulation time span


#Pass to Solvers
prob = ODEProblem(time_evolution,ψ0,tspan)
sol = solve(prob)
这里,H(Lx,Ly,Lz)是一个由系统大小Lx,Ly,Lz和N=Lx×Ly×Lz参数化的N×N矩阵。
但是这个代码有一个错误

StackOverflowError:
Stacktrace:
 [1] recursive_unitless_bottom_eltype(::Type{Any}) at 
/Users/username/.julia/packages/RecursiveArrayTools/OAIEc/src/utils.jl:86 (repeats 
80000 times)
代码中的错误在哪里

ψ0 = [] #  Initial conditions
您可能不希望您的等式是非具体类型的,所以您可能希望这样做

ψ0 = Float64[] #  Initial conditions

我不理解[]和Float64[]之间的区别,但它起了作用!谢谢大家!
[]
是任何元素类型,而
Float64[]
严格来说是Float64 eltypes,这允许
eltype(u0)=Float64
。这对速度很重要。关于这方面的重要参考资料,请看哦,我明白了。计算成本很重要。谢谢你给我解释。