위상 설정
개시하다
Qiskit Textbook의 6-1에서 $\pi 펄스, 그리드 $R 소개x (\pi) $가 작용한 것과 같습니다.양자회로를 만들 때도 위상을 바꾸고 싶은 일이 있을 텐데, 이 글에서 펄스에 대한 위상을 조작하는 방법을 소개하고 싶다.
https://qiskit.org/textbook/ch-quantum-hardware/calibrating-qubits-pulse.html#Our-$\pi$-pulse !
먼저 Qiskit Pulse를 이동하기 위해 필요한 기술을 요약합니다.import numpy as np
from qiskit import QuantumCircuit, transpile, Aer, IBMQ
from qiskit.visualization import *
from qiskit.circuit import Gate
from qiskit.circuit import Parameter
from qiskit import pulse
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main')
backend = provider.get_backend('ibmq_armonk')
backend_defaults = backend.defaults()
backend_config = backend.configuration()
위상 설정 방법
shift_phase()
를 사용하여 위상 변경 후의 펄스를 설정할 수 있습니다.GHz = 1.0e9 # Gigahertz
MHz = 1.0e6 # Megahertz
us = 1.0e-6
qubit=0
frequency=4.97194*GHz
drive_sigma_sec=0.075*us
drive_duration_sec = drive_sigma_sec * 8
pi_amp=0.14
with pulse.build(backend) as ry_1:
pulse.set_frequency(frequency, pulse.drive_channel(qubit))
pulse.shift_phase(np.pi/2, pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
ry_1.draw(backend=backend)
draw()
에서 볼 수 있듯이 먼저 상이 (VZ($-\pi/2$)입니다.
다만 이렇게 되면 위상이 변경되면 정의된 펄스가 모두 위상이 바뀐 상태가 된다.위 Schedule에서는 처음 펄스 위상phase_offset()
만 변경하려는 경우 사용할 수 있습니다.with pulse.build(backend) as ry_2:
pulse.set_frequency(frequency, pulse.drive_channel(qubit))
with pulse.phase_offset(np.pi/2, pulse.drive_channel(qubit)):
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
ry_2.draw(backend=backend)
draw()
를 사용해 보면 최초의 펄스 실행 후 위상 설정이 원래의 상태로 바뀌었다는 것을 알 수 있다.펄스를 나타내는 색깔의 농담 상위도 다른 일.
총결산
본고는 위상 설정의 방법을 소개하였다.만약 펄스에 대해 위상을 설정할 수 있다면 실험의 폭은 넓어질 것이다.
Reference
이 문제에 관하여(위상 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kumezawa/items/8937c1cffe848eca9655
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
from qiskit import QuantumCircuit, transpile, Aer, IBMQ
from qiskit.visualization import *
from qiskit.circuit import Gate
from qiskit.circuit import Parameter
from qiskit import pulse
IBMQ.load_account()
provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main')
backend = provider.get_backend('ibmq_armonk')
backend_defaults = backend.defaults()
backend_config = backend.configuration()
GHz = 1.0e9 # Gigahertz
MHz = 1.0e6 # Megahertz
us = 1.0e-6
qubit=0
frequency=4.97194*GHz
drive_sigma_sec=0.075*us
drive_duration_sec = drive_sigma_sec * 8
pi_amp=0.14
with pulse.build(backend) as ry_1:
pulse.set_frequency(frequency, pulse.drive_channel(qubit))
pulse.shift_phase(np.pi/2, pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
ry_1.draw(backend=backend)
with pulse.build(backend) as ry_2:
pulse.set_frequency(frequency, pulse.drive_channel(qubit))
with pulse.phase_offset(np.pi/2, pulse.drive_channel(qubit)):
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
pulse.play(pulse.Gaussian(duration=16 * int(pulse.seconds_to_samples(drive_duration_sec) / 16),
amp=pi_amp/2,
sigma=pulse.seconds_to_samples(drive_sigma_sec),
name="phase"), pulse.drive_channel(qubit))
ry_2.draw(backend=backend)
본고는 위상 설정의 방법을 소개하였다.만약 펄스에 대해 위상을 설정할 수 있다면 실험의 폭은 넓어질 것이다.
Reference
이 문제에 관하여(위상 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kumezawa/items/8937c1cffe848eca9655텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)