Skip to content

1. Transizione di Fase Ising TFIM

tatopenn-cell edited this page Jul 22, 2026 · 1 revision

1. Transizione di Fase Ising (TFIM)

scan_ising.py mappa il parametro d'ordine di correlazione spin-spin $\langle H_{zz} \rangle$ del modello di Ising a campo trasverso (TFIM):

$$H = -\sum_i Z_i Z_{i+1} - g \sum_i X_i$$

su una catena di 12 qubit, al variare del campo trasverso $g \in [0.0, 2.5]$ su 3.500 punti.


Ansatz

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 ($\theta = 0.6 \cdot g$). 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).

Osservabile

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.

Risultati

Il valore d'aspettazione decade da $+1.0000$ (allineamento ferromagnetico completo, $g=0$) a $\approx +0.0050$ ($g=2.5$). Il punto critico è risolto via susceptibility ($-dE_{zz}/dg$) a $g \approx 1.309$.

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.

Copertura test

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 $10^{-9}$. Un secondo test più vecchio (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 ▶