

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Gradientes de computação com o OpenQASM 3.0
<a name="braket-openqasm-computing-gradients"></a>

O Amazon Braket suporta o cálculo de gradientes em simuladores sob demanda e locais quando executado no modo (exato) `shots=0`. Isso é obtido por meio do uso do método de diferenciação adjunta. Para especificar o gradiente que você deseja calcular, você pode fornecer o pragma apropriado, conforme demonstrado no código no exemplo a seguir.

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

Em vez de listar explicitamente todos os parâmetros individuais, você também pode especificar a palavra-chave `all` dentro do pragma. Isso calculará o gradiente em relação a todos os parâmetros `input` listados, o que pode ser uma opção conveniente quando o número de parâmetros é muito grande. Nesse caso, o pragma será semelhante ao código do exemplo a seguir.

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

Todos os tipos observáveis são compatíveis com a implementação do OpenQASM 3.0 do Amazon Braket, incluindo operadores individuais, produtos tensores, observáveis Hermitian e `Sum` observáveis. O operador específico que você deseja usar ao calcular gradientes deve ser encapsulado na função `expectation()`, e os qubits sobre os quais cada termo do observável atua devem ser especificados explicitamente.