No anexo ao artigo, são fornecidos materiais cortados: o caminho das partículas : integrais do caminho, um experimento de dupla fenda em átomos frios de néon, quadros de teletransporte de partículas e outras cenas de crueldade e natureza sexual.
Na minha opinião, não pode haver outra maneira de considerar o formalismo matemático logicamente consistente do que demonstrar o desvio de suas conseqüências da experiência ou provar que suas previsões não esgotam as possibilidades de observação.
Niels Bohr
Em conclusão, o autor gostaria de afirmar que reconhecemos apenas duas boas razões para rejeitar uma teoria que explica uma ampla gama de fenômenos. Em primeiro lugar, a teoria não é consistente internamente e, em segundo lugar, não concorda com os experimentos.
David Bohm
Anteriormente, aprendemos de onde a equação de Schrödinger vem, por que é retirada dali e como é feita por vários métodos.
Agora, vamos dividi-lo em duas equações reais. Para fazer isso, imagine psi na forma polar, :
, . , S -, - - :
, -, , , , S, , , , . , , . -.
— , . , , , . , , , .
, , , . . . , , , .
, , , . , ( - ). :
()
, , , : ,
-, :
using LinearAlgebra, SparseArrays, Plots
const ħ = 1.0546e-34 # J*s
const m = 9.1094e-31 # kg
const q = 1.6022e-19 # Kl
const nm = 1e-9 # m
const fs = 1e-12; # s
function wavefun()
gauss(x) = exp( -(x-x0)^2 / (2*σ^2) + im*x*k )
k = m*v/ħ
#
Vm = spdiagm(0 => V )
H = spdiagm(-1 => ones(Nx-1), 0 => -2ones(Nx), 1 => ones(Nx-1) )
H *= ħ^2 / ( 2m*dx^2 )
H += Vm
A = I + 0.5im*dt/ħ * H #
B = I - 0.5im*dt/ħ * H #
psi = zeros(Complex, Nx, Nt)
psi[:,1] = gauss.(x)
for t = 1:Nt-1
b = B * psi[:,t]
# A*psi = b
psi[:,t+1] = A \ b
end
return psi
end
dx = 0.05nm # x step
dt = 0.01fs # t step
xlast = 400nm
Nt = 260 # Number of time steps
t = range(0, length = Nt, step = dt)
x = [0:dx:xlast;]
Nx = length(x) # Number of spatial steps
a1 = 200nm
a2 = 200.5nm # 5
a3 = 205nm
a4 = 205.5nm
#V = [ a1<xi<a2 ? 2q : 0.0 for xi in x ] # 2 eV
V = [ a1<xi<a2 || a3<xi<a4 ? 2q : 0.0 for xi in x ] # 2 eV
x0 = 80nm # Initial position
σ = 20nm # gauss width
v = -120nm/fs;
@time Psi = wavefun()
P = abs2.(Psi);
function ψ(xi, j)
k = findfirst(el-> abs(el-xi)<dx, x)
k == nothing && ( k = 1 )
Psi[k, j]
end
function corpusculaz(n)
X = zeros(n, Nt)
X[:,1] = x0 .+ σ*randn(n)
for j in 2:Nt, i in 1:n
U = ħ/(2m*dx) * imag( ( ψ(X[i,j-1]+dx, j) - ψ(X[i,j-1]-dx, j) ) / ψ(X[i,j-1], j) )
X[i,j] = X[i,j-1] - U*dt
end
X
end
@time X = corpusculaz(20);
plot(x, P[:, 1], legend = false)
plot!(x, P[:, 80], legend = false)
scatter!( X[:,1], zeros(20) )
scatter!( X[:,80], zeros(20) )
. — , . :
, . Double-slit interference with ultracold metastable neon atoms — - .
using Random, Gnuplot, Statistics
#
function trapez(f, a, b, n)
h = (b - a)/n
result = 0.5*(f(a) + f(b))
for i in 1:n-1
result += f(a + i*h)
end
result * h
end
#
function rk4(f, x, y, h)
k1 = h * f(x , y )
k2 = h * f(x + 0.5h, y + 0.5k1)
k3 = h * f(x + 0.5h, y + 0.5k2)
k4 = h * f(x + h, y + k3)
return y + (k1 + 2*(k2 + k3) + k4)/6.0
end
const ħ = 1.055e-34 # J*s
const kB = 1.381e-23 # J*K-1
const g = 9.8 # m/s^2
const l1 = 76e-3 # m
const l2 = 113e-3 # m
const yh = 2.8e-3 # m
const d = 6e-6 # m
const b = 2e-6 # m
const a1 = 0.5(- d - b) #
const a2 = 0.5(- d + b)
const b1 = 0.5( d - b)
const b2 = 0.5( d + b)
const m = 3.349e-26 # kg
const T = 2.5e-3 # K
const σv = sqrt(kB*T/m) #
const σ₀ = 10e-6 # 10 mkm #
const σz = 3e-4 # 0.3 mm # z
const σk = m*σv / (ħ*√3) # 2e8 m/s #
v₀ = zeros(3)
k₀ = zeros(3);
: , , -, .
k
, . , , — . , , , . , , .
Quantum Mechanics And Path Integrals, A. R. Hibbs, R. P. Feynman, , 3.6 .
,
Z , . ,
, . , X, . :
, :
ε₀(t) = σ₀^2 + ( ħ/(2m*σ₀) * t )^2 + (ħ*t*σv/m)^2
s₀(t) = σ₀ + im*ħ/(2m*σ₀) * t
ρₓ(x, t) = exp( -x^2 / (2ε₀(t)) ) / sqrt( 2π*ε₀(t) )
t₁(v, z) = sqrt( 2*(l1-z)/g + (v/g)^2 ) - v/g
tf1 = t₁(v₀[3], 0) # s #
X1 = range(-100, stop = 100, length = 100)*1e-6
Z1 = range(0, stop = l1, length = 100)
Cron1 = range(0, stop = tf1, length = 100)
P1 = [ ρₓ(x, t) for t in Cron1, x in X1 ]
P1 /= maximum(P1); #
@gp "set title 'Wavefun before the slits'" xlab="Z, mkm" ylab="X, mkm"
@gp :- 1000Z1 1000000X1 P1 "w image notit"
— .
, :
function ρₓ(xᵢ, tᵢ)
Kₓ(xb, tb, xa, ta) = sqrt( m/(2im*π*ħ*(tb-ta)) ) * exp( im*m*(xb-xa)^2 / (2ħ*(tb-ta)) )
function subintrho(k)
ψₓ(x, t) = ( 2π*s₀(t) )^-0.25 * exp( -(x-ħ*k*t/m)^2 / (4σ₀*s₀(t)) + im*k*(x-ħ*k*t/m) )
subintpsi(x) = Kₓ(xᵢ, tᵢ, x, tf1) * ψₓ(x, tf1)
ψa = trapez(subintpsi, a1, a2, 200)
ψb = trapez(subintpsi, b1, b2, 200)
exp( -k^2 / (2σv^2) ) * abs2(ψa + ψb)
end
trapez(subintrho, -10σk, 10σk, 20) / sqrt( 2π*σv^2 )
end
t₂(v, z) = sqrt( 2*(l1+l2-z)/g + (v/g)^2 ) - v/g
tf2 = t₂(v₀[3], 0) # s #
X2 = range(-800, stop = 800, length = 200)*1e-6
Z2 = range(l1, stop = l2, length = 100)
Cron2 = range(tf1, stop = tf2, length = 100)
@time P2 = [ ρₓ(x, t) for t in Cron2, x in X2 ];
P2 /= maximum(P2[4:end,:]);
@gp "set title 'Wavefun after the slits'" xlab="t, s" ylab="X, mkm"
@gp :- Cron2[4:end] 1000000X2 P2[4:end,:] "w image notit"
2 :
:
, ,
function xbs(t, xo, yo, vo)
cosϕ = xo / sqrt( xo^2 + yo^2 )
sinϕ = yo / sqrt( xo^2 + yo^2 )
atnx = -ħ*t / (2m*σ₀^2)
sinatnx = atnx / sqrt( atnx^2 + 1)
cosatnx = 1 / sqrt( atnx^2 + 1)
cosϕt = cosϕ * cosatnx - sinϕ * sinatnx
#sinϕt = sinϕ*cosatnx + cosϕ*sinatnx
σ₀t = sqrt( σ₀^2 + ( ħ*t / (2*m*σ₀) )^2 )
vo*t + sqrt(xo^2 + yo^2) * σ₀t/σ₀ * cosϕt
end
@gp "set title 'Trajectories before slits'" xlab="t, s" ylab="X, mkm" # "set yrange [-10:10]"
@time for i in 1:80
x0 = randn()*σ₀
y0 = randn()*σ₀
v0 = randn()*σv*1e-4
prtclᵢ = [ xbs(t,x0,y0,v0) for t in Cron1 ]
@gp :- Cron1 1000000prtclᵢ "with lines notit lw 2 lc rgb 'black'"
# slits -4-> -2, 2->4 mkm
end
, , , , , . . . , .
Y , , . X . .
" " ,
function Uₓ(t, x)
γ = -m*x / ( ħ*(t-tf1) )
β = m/(2ħ) * ( 1/(t-tf1) + 1 / ( tf1*( 1 + (2m*σ₀^2 / (ħ*tf1) )^2 ) ) )
α = -( 4σ₀^2 * ( 1 + ( ħ*tf1 / (2m*σ₀^2) )^2 ) )^-1
f(x, u, t) = exp( ( α + im*β )*u^2 + im*γ*u )
C = f(x, a2, t) - f(x, a1, t) + f(x, b2, t) - f(x, b1, t)
H = trapez( u-> f(x, u, t) , a1, a2, 400) + trapez( u-> f(x, u, t) , b1, b2, 400)
return 1/(t-tf1) * ( x - 0.5/(α^2 + β^2) * ( β*imag(C/H) + α*real(C/H) - β*γ ) )
end
init() = bitrand()[1] ? rand()*(b2 - b1) + b1 : rand()*(a2 - a1) + a1
myrng(a, b, N) = collect( range(a, stop = b, length = N ÷ 2) )
n = 1
xx = 0
ξ = 1e-5
while xx < Cron2[end]-Cron2[1]
n+=1
xx += (ξ*n)^2
end
n
steps = [ (ξ*i)^2 for i in 1:n1 ]
Cronadapt = accumulate(+, steps, init = Cron2[1] )
function modelsolver(Np = 10, Nt = 100)
#xo = [ init() for i = 1:Np ] #
xo = vcat( myrng(a2, a1, Np), myrng(b1, b2, Np) ) #
xpath = zeros(Nt, Np)
xpath[1,:] = xo
for i in 2:Nt, j in 1:Np
xpath[i,j] = rk4(Uₓ, Cronadapt[i], xpath[i-1,j], steps[i] )
end
xpath
end
@time paths = modelsolver(20, n);
@gp "set title 'Trajectories after the slits'" xlab="t, s" ylab="X, mkm" "set yrange [-800:800]"
for i in 1:size(paths, 2)
@gp :- Cronadapt 1e6paths[:,i] "with lines notit lw 1 lc rgb 'black'"
end
- 4 , . 2
, : , , .
. , ,
function yas(t, xo, yo, vo)
cosϕ = xo / sqrt( xo^2 + yo^2 )
sinϕ = yo / sqrt( xo^2 + yo^2 )
atnx = -ħ*t / (2m*σ₀^2)
sinatnx = atnx / sqrt( atnx^2 + 1)
cosatnx = 1 / sqrt( atnx^2 + 1)
#cosϕt = cosϕ * cosatnx - sinϕ * sinatnx
sinϕt = sinϕ*cosatnx + cosϕ*sinatnx
σ₀t = sqrt( σ₀^2 + ( ħ*t / (2*m*σ₀) )^2 )
vo*t + sqrt(xo^2 + yo^2) * σ₀t/σ₀ * sinϕt
end
function modelsolver2(Np = 10)
Nt = length(Cronadapt)
xo = [ init() for i = 1:Np ]
#xo = vcat( myrng(a2, a1, Np), myrng(b1, b2, Np) )
xcoord = copy(xo)
ycoord = zeros(Np)
for i in 2:Nt, j in 1:Np
xcoord[j] = rk4(Uₓ, Cronadapt[i], xcoord[j], steps[i] )
end
for (i, x) in enumerate(xo)
y0 = randn()*yh
v0 = 0 #randn()*σv*1e-4
ycoord[i] = yas(Cronadapt[end], x, y0, v0)
end
xcoord, ycoord
end
@time X, Y = modelsolver2(100);
@gp "set title 'Impacts on the screen'" xlab="X, mm" ylab="Y, mm"# "set xrange [-1:1]"
@gp :- 1000X 1000Y "with points notit pt 7 ps 0.5 lc rgb 'black'"
, , . , ,