-
Notifications
You must be signed in to change notification settings - Fork 0
1. Transizione di Fase Ising TFIM
scan_ising.py mappa il parametro d'ordine di correlazione spin-spin
su una catena di 12 qubit, al variare del campo trasverso
def esegui_circuito_ising_reale(g_campo):
ansatz_circuit = []
for q in range(N_Q - 1):
ansatz_circuit.append(['cx', q, q + 1])
ansatz_circuit.append(['rz', q + 1, float(1.2)])
ansatz_circuit.append(['cx', q, q + 1])
for q in range(N_Q):
ansatz_circuit.append(['rx', q, float(g_campo * 0.6)])
sim.set_initial_state()
sim.run_circuit_jit_beast_mode(ansatz_circuit)
return sim.get_probabilities()Blocchi CX–RZ(1.2)–CX su tutti gli 11 legami della catena aperta, seguiti da rotazioni RX scalate al campo (1.2 e 0.6 sono scelte strutturali dell'ansatz, non parametri "ottimizzati" — a differenza di quanto succedeva in vqe_silicon_molecular.py (vedi capitolo 6).
def calcola_vera_correlazione_zz(prob_array):
...
for q in range(N_Q - 1):
# parità bit q, q+1 -> +1/-1, pesata per probabilità
return somma_zz / (N_Q - 1)Estrazione a parità di bit dalla distribuzione di probabilità — nessuna misura reale, calcolo esatto sullo statevector.
Il valore d'aspettazione decade da
plot_ising.py legge transizione_fase_ising.csv e produce transizione_fase_ising.png — è puro plotting/derivata numerica, non tocca il motore dense_evolution, quindi non ha (e non necessita di) un test dedicato.
esegui_circuito_ising_reale + calcola_vera_correlazione_zz sono validate contro un circuito PennyLane indipendente alla stessa scala reale (N_Q=12), non una versione ridotta — in tests/test_integration_smoke.py::test_scan_ising_correlazione_zz_matches_pennylane, tolleranza tests/test_pennylane_comparison.py::test_ising_zz_de_vs_pennylane) valida la stessa fisica a N_Q=8 riscrivendo l'ansatz a mano.
◀ Home · Capitolo 2 ▶
Dense-Evolution-Ising-Tests · MIT License © 2026 Salvatore Pennacchio (tatopenn-cell) · dipende da Dense-Evolution (Business Source License 1.1)