Variational Quantum Eigen Solver

using Yao, Yao.AD, Yao.EasyBuild

number of qubits

n = 4
4

depth

d = 5
circuit = dispatch!(variational_circuit(n, d),:random)

gatecount(circuit)

nparameters(circuit)

h = heisenberg(n)
nqubits: 4
+
├─ +
│  ├─ repeat on (1, 2)
│  │  └─ X
│  ├─ repeat on (1, 2)
│  │  └─ Y
│  └─ repeat on (1, 2)
│     └─ Z
├─ +
│  ├─ repeat on (2, 3)
│  │  └─ X
│  ├─ repeat on (2, 3)
│  │  └─ Y
│  └─ repeat on (2, 3)
│     └─ Z
├─ +
│  ├─ repeat on (3, 4)
│  │  └─ X
│  ├─ repeat on (3, 4)
│  │  └─ Y
│  └─ repeat on (3, 4)
│     └─ Z
└─ +
   ├─ repeat on (4, 1)
   │  └─ X
   ├─ repeat on (4, 1)
   │  └─ Y
   └─ repeat on (4, 1)
      └─ Z

pick the one you like either reverse-mode or forward mode grad = faithfulgrad(h, zerostate(n) => circuit; nshots=100)

for i in 1:1000
      _, grad = expect'(h, zero_state(n) => circuit)
      dispatch!(-, circuit, 1e-2 * grad)
      println("Step $i, energy = $(real.(expect(h, zero_state(n)=>circuit)))")
end

using LinearAlgebra
w, _ = eigen(Matrix(mat(h)))
LinearAlgebra.Eigen{ComplexF64, Float64, Matrix{ComplexF64}, Vector{Float64}}
values:
16-element Vector{Float64}:
 -7.9999999999999964
 -4.0
 -3.9999999999999956
 -3.999999999999994
 -7.437659514860159e-32
 -4.426399962566284e-32
  0.0
  2.7369110631344083e-48
  2.003298162163793e-32
  3.552713678800501e-15
  4.440892098500626e-15
  3.9999999999999987
  3.9999999999999996
  4.0
  4.0
  4.0
vectors:
16×16 Matrix{ComplexF64}:
      0.0+0.0im          0.0+0.0im           0.0+0.0im   0.0+0.0im           0.0+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  1.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im          -0.5+0.0im   0.0+0.0im      0.559869+0.0im      0.43191+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im          -0.5+0.0im        0.0+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.5+0.0im   0.0+0.0im   2.22045e-16+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im      0.707107+0.0im           0.0+0.0im           0.0+0.0im          -0.5+0.0im        0.0+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
 0.288675+0.0im  9.56933e-17+0.0im   6.41024e-18+0.0im   0.0+0.0im      0.481733+0.0im    -0.624453+0.0im        0.0+0.0im     -0.211325+0.0im   1.34897e-17+0.0im           0.0+0.0im     -0.288675+0.0im  -6.41024e-18+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im          -0.5+0.0im   0.0+0.0im     -0.559869+0.0im     -0.43191+0.0im        0.0+0.0im           0.0+0.0im   2.22045e-16+0.0im           0.0+0.0im           0.0+0.0im          -0.5+0.0im        0.0+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
 -0.57735+0.0im     0.707107+0.0im  -1.30125e-33+0.0im   0.0+0.0im  -1.30736e-32+0.0im          0.0+0.0im        0.0+0.0im  -8.71576e-33+0.0im   3.06708e-33+0.0im           0.0+0.0im  -1.97795e-16+0.0im   1.30125e-33+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
 0.288675+0.0im  9.56933e-17+0.0im  -2.39233e-17+0.0im   0.0+0.0im      -0.12908+0.0im     0.167322+0.0im        0.0+0.0im      0.788675+0.0im   2.77891e-17+0.0im           0.0+0.0im     -0.288675+0.0im   2.39233e-17+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.0+0.0im  -0.5+0.0im           0.0+0.0im          0.0+0.0im   0.707107+0.0im           0.0+0.0im           0.0+0.0im  -4.71028e-16+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  0.0+0.0im  -0.5+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.5+0.0im   0.0+0.0im  -1.29477e-16+0.0im  6.29876e-17+0.0im        0.0+0.0im   6.06671e-17+0.0im     -0.707107+0.0im           0.0+0.0im           0.0+0.0im          -0.5+0.0im        0.0+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
 0.288675+0.0im  9.56933e-17+0.0im   1.75131e-17+0.0im   0.0+0.0im     -0.352653+0.0im     0.457131+0.0im        0.0+0.0im      -0.57735+0.0im  -4.12788e-17+0.0im           0.0+0.0im     -0.288675+0.0im  -1.75131e-17+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
 -0.57735+0.0im    -0.707107+0.0im   1.30125e-33+0.0im   0.0+0.0im   1.30736e-32+0.0im          0.0+0.0im        0.0+0.0im   8.71576e-33+0.0im  -3.06708e-33+0.0im           0.0+0.0im  -3.14995e-16+0.0im  -1.30125e-33+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.0+0.0im   0.5+0.0im           0.0+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im     -0.707107+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  0.0+0.0im  -0.5+0.0im  0.0+0.0im
 0.288675+0.0im          0.0+0.0im           0.0+0.0im   0.0+0.0im           0.0+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im      0.866025+0.0im           0.0+0.0im  -0.408248+0.0im  0.0+0.0im   0.0+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.0+0.0im  -0.5+0.0im           0.0+0.0im          0.0+0.0im  -0.707107+0.0im           0.0+0.0im           0.0+0.0im  -4.71028e-16+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  0.0+0.0im  -0.5+0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.0+0.0im   0.5+0.0im           0.0+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im      0.707107+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  0.0+0.0im  -0.5-0.0im  0.0+0.0im
      0.0+0.0im          0.0+0.0im           0.0+0.0im   0.0+0.0im           0.0+0.0im          0.0+0.0im        0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im           0.0+0.0im        0.0+0.0im  0.0+0.0im   0.0+0.0im  1.0+0.0im

This page was generated using Literate.jl.