V0.5 の格子モデルの問題#
今回のQiskit Natureのリリースでは、格子モデルは若干のアップデートを行ったのみです。
重要な 変更点として、すべての格子モデルは古い Property
から新しい Hamiltonian
インターフェースを実装しているため、実際の演算子は second_q_ops()
(末尾の s
に注意してください) の代わりに second_q_op()
メソッドで取得することができます。
概要#
最も注目すべきは、 import が以下のように変更されたことです。
従来の場所 |
新しい場所 |
---|---|
|
|
|
|
|
|
さらに、LatticeModel
クラスで定義されている Lattice
オブジェクトのファクトリーメソッドは、以下のように移行されました。
従来のメソッド |
新しいメソッド |
---|---|
|
|
|
|
|
|
|
|
その他のリソース#
新しいコードの使用方法については、以下のチュートリアルを必ずご確認ください。
FermiHubbardModel.uniform_parameters
#
以前#
from qiskit_nature.problems.second_quantization.lattice.lattices import LineLattice
from qiskit_nature.problems.second_quantization.lattice.models import FermiHubbardModel
line = LineLattice(2)
fermi = FermiHubbardModel.uniform_parameters(line, 2.0, 4.0, 3.0)
print(fermi.second_q_ops()) # Note: the trailing `s`
Fermionic Operator
register length=4, number terms=10
(2+0j) * ( +_0 -_2 )
+ (-2+0j) * ( -_0 +_2 )
+ (4+0j) * ( +_0 -_0 )
+ (4+0j) * ( +_2 -_2 )
+ (2+0j) * ( +_1 -_3 )
+ (-2+0j) * ( -_1 +_3 )
+ (4+0j) * ( +_1 -_1 )
+ (4+0j) * ( +_3 -_3 )
+ (3+0j) * ...
新規#
from qiskit_nature.second_q.hamiltonians.lattices import LineLattice
from qiskit_nature.second_q.hamiltonians import FermiHubbardModel
line = LineLattice(2)
fermi = FermiHubbardModel(line.uniform_parameters(2.0, 4.0), 3.0)
print(fermi.second_q_op()) # Note: NO trailing `s`
Fermionic Operator
number spin orbitals=4, number terms=10
2.0 * ( +_0 -_2 )
+ -2.0 * ( -_0 +_2 )
+ 4.0 * ( +_0 -_0 )
+ 4.0 * ( +_2 -_2 )
+ 2.0 * ( +_1 -_3 )
+ -2.0 * ( -_1 +_3 )
+ 4.0 * ( +_1 -_1 )
+ 4.0 * ( +_3 -_3 )
+ 3.0 * ( +_0 -_0 +_1 -_1 )
+ 3.0 * ( +_2 -_2 +_3 -_3 )
FermiHubbardModel.from_parameters
#
以前#
import numpy as np
from qiskit_nature.problems.second_quantization.lattice.models import FermiHubbardModel
interaction = np.array([[4.0, 2.0], [2.0, 4.0]])
fermi = FermiHubbardModel.from_parameters(interaction, 3.0)
print(fermi.second_q_ops()) # Note: the trailing `s`
Fermionic Operator
register length=4, number terms=10
(4+0j) * ( +_0 -_0 )
+ (2+0j) * ( +_0 -_2 )
+ (-2+0j) * ( -_0 +_2 )
+ (4+0j) * ( +_2 -_2 )
+ (4+0j) * ( +_1 -_1 )
+ (2+0j) * ( +_1 -_3 )
+ (-2+0j) * ( -_1 +_3 )
+ (4+0j) * ( +_3 -_3 )
+ (3+0j) * ...
新規#
import numpy as np
from qiskit_nature.second_q.hamiltonians.lattices import Lattice
from qiskit_nature.second_q.hamiltonians import FermiHubbardModel
interaction = np.array([[4.0, 2.0], [2.0, 4.0]])
lattice = Lattice.from_adjacency_matrix(interaction)
fermi = FermiHubbardModel(lattice, 3.0)
print(fermi.second_q_op()) # Note: NO trailing `s`
Fermionic Operator
number spin orbitals=4, number terms=10
4.0 * ( +_0 -_0 )
+ 2.0 * ( +_0 -_2 )
+ -2.0 * ( -_0 +_2 )
+ 4.0 * ( +_2 -_2 )
+ 4.0 * ( +_1 -_1 )
+ 2.0 * ( +_1 -_3 )
+ -2.0 * ( -_1 +_3 )
+ 4.0 * ( +_3 -_3 )
+ 3.0 * ( +_0 -_0 +_1 -_1 )
+ 3.0 * ( +_2 -_2 +_3 -_3 )
IsingModel.uniform_parameters
#
以前#
from qiskit_nature.problems.second_quantization.lattice.lattices import LineLattice
from qiskit_nature.problems.second_quantization.lattice.models import IsingModel
line = LineLattice(2)
ising = IsingModel.uniform_parameters(line, 2.0, 4.0)
print(ising.second_q_ops()) # Note: the trailing `s`
Z_0 Z_1 * (2+0j)
+ X_0 * (4+0j)
+ X_1 * (4+0j)
新規#
from qiskit_nature.second_q.hamiltonians.lattices import LineLattice
from qiskit_nature.second_q.hamiltonians import IsingModel
line = LineLattice(2)
ising = IsingModel(line.uniform_parameters(2.0, 4.0))
print(ising.second_q_op()) # Note: NO trailing `s`
Spin Operator
spin=1/2, number spins=2, number terms=3
2.0 * ( Z_0 Z_1 )
+ 4.0 * ( X_0 )
+ 4.0 * ( X_1 )
IsingModel.from_parameters
#
以前#
import numpy as np
from qiskit_nature.problems.second_quantization.lattice.models import IsingModel
interaction = np.array([[4.0, 2.0], [2.0, 4.0]])
ising = IsingModel.from_parameters(interaction)
print(ising.second_q_ops()) # Note: the trailing `s`
X_0 * (4+0j)
+ Z_0 Z_1 * (2+0j)
+ X_1 * (4+0j)
新規#
import numpy as np
from qiskit_nature.second_q.hamiltonians.lattices import Lattice
from qiskit_nature.second_q.hamiltonians import IsingModel
interaction = np.array([[4.0, 2.0], [2.0, 4.0]])
lattice = Lattice.from_adjacency_matrix(interaction)
ising = IsingModel(lattice)
print(ising.second_q_op()) # Note: NO trailing `s`
Spin Operator
spin=1/2, number spins=2, number terms=3
4.0 * ( X_0 )
+ 2.0 * ( Z_0 Z_1 )
+ 4.0 * ( X_1 )