-
Notifications
You must be signed in to change notification settings - Fork 0
/
Atv 1 - Und 1 - Dens. Prob. Espaço Real e K (parte 3).py
86 lines (62 loc) · 2.26 KB
/
Atv 1 - Und 1 - Dens. Prob. Espaço Real e K (parte 3).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Disciplina: Mecânica Quântica (FIS01210)
# Aluno: Ramon Rossa de Paula (00243967)
# "Este trabalho foi produzido em Python, utilizando a IDE Visual Studio Code, exclusivamente por mim. Nenhuma parte deste trabalho (texto e fórmulas) foi copiada digitalmente de outras fontes"
# ____________________________________________________________________________________
# Importações
import math
import numpy as np
from numpy import loadtxt
import matplotlib.pyplot as plt
from scipy import integrate
from numpy import sqrt, exp, log, pi, abs
# ____________________________________________________________________________________
# Calculando a transformada de Fourier
def psi(x):
r = (2*np.pi)**-0.25*np.exp(-x**2/4)
return complex(r*np.cos(np.pi/3*x),r*np.sin(np.pi/3*x))
def prob_dens(x):
z = psi(x)
return z.real**2 + z.imag**2
x_arr = np.arange(-5,5,0.1)
pp=[]
for x in x_arr:
pp.append(prob_dens(x))
def A(k):
def integrando1(x):
z = psi(x)
return z.real*np.cos(k*x)-z.imag*np.sin(-k*x)
def integrando2(x):
z = psi(x)
return z.real*np.sin(-k*x)+z.imag*np.cos(k*x)
A1,err1 = integrate.quad(integrando1,-np.inf,np.inf)
A2,err2 = integrate.quad(integrando2,-np.inf,np.inf)
return complex(A1/(np.sqrt(2*np.pi)),A2/(np.sqrt(2*np.pi)))
def prob_dens_fourier(k):
z = A(k)
return (z.real**2 + z.imag**2)
dk = 0.1
k_arr = np.arange(-5,5,0.1)
pp_fourier=[]
for k in k_arr:
pp_fourier.append(prob_dens_fourier(k))
plt.plot(k_arr,pp_fourier)
plt.title('Densidade de Probabilidade k')
plt.xlabel('k')
plt.ylabel('$|A(k)|^2$')
area = np.sum(pp_fourier)*dk
kmean = np.sum(k_arr*pp_fourier)*dk
k2mean = np.sum(k_arr**2*pp_fourier)*dk
delta_k = np.sqrt(k2mean-kmean**2)
print ('area = {:.3f}'.format(area))
print ('média = {:.3f}'.format(kmean))
print ('desvio padrão = {:.3f}'.format(math.sqrt(k2mean-kmean**2)))
# ____________________________________________________________________________________
## Atividade 3: Mostrar com exemplos que Δx Δk ≥ 0.5
fig, axs = plt.subplots(1,2)
axs[0].plot(x_arr,pp)
axs[1].plot(k_arr,pp_fourier)
axs[0].set(xlabel='x', ylabel='$|\Psi(x)|^2$')
axs[1].set(xlabel='k', ylabel='$|A(k)|^2$')
fig.tight_layout(pad=1.0)
plt.show()
print('Dx Dk = {:.3f}'.format(delta_x*delta_k))