In [1]:
using PyPlot
In [2]:
function H(x, n)
if n < 0
error("negative n not allowed")
elseif n == 0
return Float64(1)
elseif n == 1
return 2*x
else
memory = Array{Float64}(3)
memory[1] = 1
memory[2] = 2*x
for i in 2:n
memory[3] = 2*x*memory[2]-2*(i-1)*memory[1]
memory[1] = memory[2]
memory[2] = memory[3]
end
return memory[2]
end
end
function phi(x,n)
return pi^(-1/4)/sqrt(2^n*factorial(n))*H(x,n)*exp(-1//2*x^2)
end
function V(x)
return 1//2*x^2
end
function E(n)
return n+1//2
end
function trapeze(func, start, stop, N, args=[])
h = (stop-start)/(N-1)
I = -h*(func(start,args...)+func(stop,args...))/2
for x = linspace(start, stop, N)
I += h*func(x, args...)
end
return I
end
;
In [3]:
figure(1)
X = Array(linspace(-5,5,201))
plot(X, V.(X), label="Potential")
for n in 0:4
plot(X, phi.(X,n)+E(n), label="\$\\bar\\phi_$n\$")
end
xlabel("x")
ylabel("Energie")
title("Quantenmechanischer harmonischer Oszillator")
legend()
show()
In [4]:
function prod_phi_mn(x,m,n)
return phi(x,m)*phi(x,n)
end
D = Array{Float64}(5,5)
for m in 0:4
for n in 0:4
D[m+1,n+1] = trapeze(prod_phi_mn,-5,5,100000,[m,n])
end
end
D
Out[4]:
In [ ]: