PiecewisePolynomialPauliRotations
class qiskit.circuit.library.PiecewisePolynomialPauliRotations(num_state_qubits=None, breakpoints=None, coeffs=None, basis='Y', name='pw_poly')
조각 단위로 다항식으로 제어되는 폴리 회전.
이 클래스는 다음과 같이 중단점과 계수를 통해 정의된 큐비트 진폭에 대해 단편적인 다항식(반드시 연속적일 필요는 없음) 함수인 를 구현합니다. 중단점 이 의 하위 집합이라고 가정하고 은 상태 큐비트 수입니다. 또한 해당 계수를 으로 나타내며, 여기서 은 모든 다항식 중 가장 높은 차수입니다.
그러면 으로 정의됩니다:
여기서 다항식과 같은 수의 중단점이 주어지면 암시적으로 이라고 가정합니다.
계수의 계수에 주목하세요. 이는 키스킷의 폴리 로테이션과 일치합니다.
예제
>>> from qiskit import QuantumCircuit
>>> from qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations import\
... PiecewisePolynomialPauliRotations
>>> qubits, breakpoints, coeffs = (2, [0, 2], [[0, -1.2],[-1, 1, 3]])
>>> poly_r = PiecewisePolynomialPauliRotations(num_state_qubits=qubits,
...breakpoints=breakpoints, coeffs=coeffs)
>>>
>>> qc = QuantumCircuit(poly_r.num_qubits)
>>> qc.h(list(range(qubits)));
>>> qc.append(poly_r.to_instruction(), list(range(qc.num_qubits)));
>>> qc.draw()
┌───┐┌──────────┐
q_0: ┤ H ├┤0 ├
├───┤│ │
q_1: ┤ H ├┤1 ├
└───┘│ │
q_2: ─────┤2 ├
│ pw_poly │
q_3: ─────┤3 ├
│ │
q_4: ─────┤4 ├
│ │
q_5: ─────┤5 ├
└──────────┘참조 자료:
[1] Haener, T., 로텔러, M., & 스보어, K. M. (2018). 산술 연산을 위한 양자 회로 최적화. arXiv:1805.12445
[2] 카레라 바스케스, A., 힙트마이어, R., & 워너너, S. (2022). 리처드슨 외삽법을 사용한 양자 선형 시스템 알고리즘 개선하기. 양자 컴퓨팅에 관한 ACM 거래 3, 1, 2조 2항
qiskit.circuit.library.arithmetic.piecewise_polynomial_pauli_rotations.PiecewisePolynomialPauliRotations 클래스는 키스킷 2.2 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. 대신 PiecewisePolynomialPauliRotationsGate 클래스를 사용하세요.
매개변수
- num_state_qubits (int | None) – 상태를 나타내는 큐비트의 수.
- breakpoints (list[int] | None) – 단편선형 함수를 정의하는 분할점. 기본값은
[0].입니다. - coeffs (list[list[float]] | None) – 단편선형 함수의 각 구간별 다항식의 계수.
coeffs[j][i]는 j번째 다항식에서 x의 i제 승에 대한 계수이다. 기본값은 선형입니다:[[1]]. - basis (str) – 폴리 로테이션 유형 (
'X','Y','Z'). - name (str) – 서킷의 이름입니다.
속성
breakpoints
조각 다항식 함수의 중단점입니다.
이 함수는 [point_i, point_{i+1}] 간격의 다항식이며, 마지막 지점은 암시적으로 2**(num_state_qubits + 1) 입니다.
리턴
중단점 목록입니다.
coeffs
다항식의 계수입니다.
리턴
간격별 다항식 계수를 중첩된 목록으로 표시합니다.
contains_zero_breakpoint
0이 첫 번째 중단점인지 여부.
리턴
0이 첫 번째 중단점인 경우 참, 그렇지 않으면 거짓입니다.
mapped_coeffs
X>=중단점만 비교하기 때문에 내부 표현에 매핑된 계수입니다.
리턴
매핑된 계수입니다.
name
유형: str
사람이 읽을 수 있는 회로의 이름입니다.
예제
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit