

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómputo de gradientes con OpenQASM 3.0
<a name="braket-openqasm-computing-gradients"></a>

Amazon Braket admite el cómputo de gradientes en simuladores locales y simuladores bajo demanda cuando se ejecuta en el modo `shots=0` (exacto). Esto se logra mediante el uso del método de diferenciación adjunta. Para especificar el gradiente que desea computar, puede proporcionar el pragma adecuado, tal y como se muestra en el código del siguiente ejemplo.

```
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
```

En lugar de enumerar todos los parámetros individuales de forma explícita, también puede especificar la palabra clave `all` dentro del pragma. Esto calculará el gradiente con respecto a todos los parámetros de `input` enumerados, lo que puede ser una opción conveniente cuando el número de parámetros es muy grande. En este caso, el pragma se verá como el código del siguiente ejemplo.

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

Todos los tipos observables son compatibles con la implementación de OpenQASM 3.0 de Amazon Braket, incluidos los operadores individuales, los productos tensoriales, los observables hermitianos y los observables `Sum`. El operador específico que le interesa utilizar al computar gradientes debe estar envuelto dentro de la función `expectation()` y los qubits sobre los que actúa cada término del observable deben especificarse explícitamente.