Des matériaux découpés sont fournis dans la piÚce jointe à l'article le chemin des particules : intégrales du chemin, une expérience à double fente sur des atomes froids de néon, des cadres de téléportation de particules et d'autres scÚnes de cruauté et de nature sexuelle.
à mon avis, il ne peut y avoir d'autre moyen de considérer le formalisme mathématique comme logiquement cohérent que de démontrer que ses conséquences s'écartent de l'expérience, ou de prouver que ses prédictions n'épuisent pas les possibilités d'observation.
Niels Bohr
En conclusion, l'auteur tient à préciser que nous ne reconnaissons que deux bonnes raisons d'abandonner une théorie qui explique un large éventail de phénomÚnes. PremiÚrement, la théorie n'est pas cohérente en interne, et deuxiÚmement, elle n'est pas cohérente avec les expériences.
David bom
Plus tĂŽt, nous avons appris d' oĂč vient l'Ă©quation de Schrödinger, pourquoi elle est prise Ă partir de lĂ et comment elle est prise par diverses mĂ©thodes.
, - . , :
S â , R â . , , , â -, ( ).
, . , 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'"
, , . , ,