import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
def criar_rede_fractal(n_niveis=3):
G = nx.Graph()
G.add_node(0)
for nivel in range(1, n_niveis+1):
novos_nos = []
for node in list(G.nodes()):
novo = max(G.nodes()) + 1
G.add_edge(node, novo)
novos_nos.append(novo)
# liga os novos nós entre si (auto-similaridade)
for i in range(len(novos_nos)-1):
G.add_edge(novos_nos[i], novos_nos[i+1])
return G
G = criar_rede_fractal(4)
def propagar(G, psi, dt=0.1):
A = nx.to_numpy_array(G)
H = A # Hamiltoniano simplificado
return psi + (-1j * H @ psi) * dt
nucleos = [2, 5, 7]
def decoerencia(psi, nucleos, taxa=0.2):
psi_new = psi.copy()
for n in nucleos:
psi_new[n] *= (1 - taxa) # colapso parcial
return psi_new
def reconfigurar(G, psi, limiar=0.3):
for i, amp in enumerate(np.abs(psi)):
if amp > limiar:
# reforça ligações do nó ativo
vizinhos = list(G.neighbors(i))
for v in vizinhos:
if not G.has_edge(i, v):
G.add_edge(i, v)
return G
def evoluir(G, psi, passos=50):
historico = []
for t in range(passos):
psi = propagar(G, psi)
psi = decoerencia(psi, nucleos)
G = reconfigurar(G, psi)
historico.append(np.abs(psi))
return historico, G, psi
historico, G_final, psi_final = evoluir(G, psi)
plt.figure(figsize=(10,6))
for i in range(len(historico[0])):
plt.plot([h[i] for h in historico], label=f"Nó {i}")
plt.title("Evolução das amplitudes quânticas nos nós fractais")
plt.xlabel("Tempo")
plt.ylabel("|ψ|")
plt.legend()
plt.show()


















































No comments:
Post a Comment