

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Calcolo dei gradienti con OpenQASM 3.0
<a name="braket-openqasm-computing-gradients"></a>

Amazon Braket supporta il calcolo dei gradienti su simulatori on-demand e locali durante l'esecuzione in modalità (esatta). `shots=0` Ciò si ottiene mediante l'uso del metodo di differenziazione aggiuntiva. Per specificare il gradiente da calcolare, è possibile fornire il pragma appropriato, come illustrato nel codice riportato nell'esempio seguente.

```
OPENQASM 3.0;
input float alpha;

bit[2] b;
qubit[2] q;

h q[0];
h q[1];
rx(alpha) q[0];
rx(alpha) q[1];
b[0] = measure q[0];
b[1] = measure q[1];

#pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) alpha
```

Invece di elencare tutti i singoli parametri in modo esplicito, potete anche specificare la parola chiave all'interno del pragma. `all` Questo calcolerà il gradiente rispetto a tutti i `input` parametri elencati, un'opzione utile quando il numero di parametri è molto elevato. In questo caso, il pragma sarà simile al codice nell'esempio seguente.

```
#pragma braket result adjoint_gradient h(q[0]) @ i(q[1]) all
```

Tutti i tipi di osservabili sono supportati nell'implementazione OpenQASM 3.0 di Amazon Braket, inclusi i singoli operatori, i prodotti tensoriali, gli osservabili hermitiani e gli osservabili. `Sum` L'operatore specifico da utilizzare per il calcolo dei gradienti deve essere incluso nella `expectation()` funzione e i qubit su cui agisce ogni termine dell'osservabile devono essere specificati in modo esplicito.