TEBDEvolver
class TEBDEvolver(evolution_state, *args, order=2, **kwargs)
내부 MPO를 발전시키기 위한 TEBD 알고리즘입니다.
에서 자세히 설명한 것처럼 quimb_tebd에서 자세히 설명한 것처럼 기존 quimb의 quimb.tensor.TEBD 구현 시간의 확장은 기존의 행렬 제품 상태(MPS)가 아닌 내부 행렬 제품 연산자(MPO)를 발전시킵니다.
보다 구체적으로, 내부 객체는 MPOState.
이 클래스의 API는 기본 클래스에서 추가 메서드를 상속하기 때문에 실제로는 여기에 표시된 것보다 훨씬 큽니다 quimb.tensor.TEBD 베이스 클래스에서 추가 메서드를 상속받기 때문입니다. 그러나 여기서는 해당 API를 복제하지 않습니다.
인스턴스를 초기화합니다 TEBDEvolver 인스턴스를 초기화합니다.
매개변수
-
evolution_state (MPOState | MatrixProductState) –
시간 진화 상태에 대한 참조입니다. 이렇게 하면 기본 클래스의
p0인수를 덮어씁니다quimb.tensor.TEBD클래스의 인수를 덮어씁니다.경고기본 동작과 달리 이 상태는 표준화되지 않습니다. 대신 있는 그대로 가져와 참조로 보관합니다(즉, 복사본이 생성되지 않음). 이렇게 하면 이 클래스의 두 인스턴스 간에 동일한 객체를 공유할 수 있습니다
DynamicMPF알고리즘이 요구합니다. -
args - 추가 위치 인수가 있는 경우
quimb.tensor.TEBD생성자로 전달됩니다. -
order (int) – 시간 진화 중에 사용할 기본 제공 스즈키-트로터 공식의 순서를 지정합니다. 이 값은
quimb.tensor.TEBD.step()메서드에 전달됩니다. -
kwargs - 모든 추가 키워드 인수는
quimb.tensor.TEBD생성자로 전달됩니다.
속성
conjugate
이 타임 에볼버 인스턴스가 오른쪽에서 작동하는지 여부를 반환합니다.
evolved_time
현재 진화 시간을 반환합니다.
메소드
step
step()
TEBD의 단일 시간 단계를 수행합니다.
이것은 본질적으로 quimb.tensor.TEBD.step() 를 호출하고 구성 시 제공된 order 속성의 값을 전달합니다.
리턴 유형
없음
sweep
sweep(direction, dt_frac, dt=None, queue=False)
TEBD 알고리즘의 단일 스윕을 수행합니다 [1].
TEBD 알고리즘은 기본 텐서 네트워크의 짝수 결합과 홀수 결합을 번갈아 가며 업데이트합니다. 베이스 클래스의 구현에서 quimb.tensor.TEBD 베이스 클래스의 구현에서는 내부 상태를 왼쪽과 오른쪽 방향으로 번갈아 "스윕"하는 형태로 구현됩니다.
이 서브클래스에서 이 메서드의 동작을 덮어쓰기하여 전문화된 gate_split() 메서드를 호출하기 위해 이 메서드의 동작을 덮어씁니다.
매개변수
- direction (Literal['left', 'right']) – 스윕의 방향을 지정합니다. 리터럴 문자열인
"left"또는"right"중 하나이어야 합니다. - dt_frac (float) – 내부 시간 단계(
dt)의 몇 분의 1을 시간 진화할지 설정합니다. 내장된 스즈키-트로터 공식이 분할을 지정하는 방식입니다. - dt (float | None) – 내부 시간 단계를 덮어쓰는 선택적 값입니다.
- queue (bool) –
True로 설정하면NotImplementedError.
레이즈
- NotImplementedError - 경우
queue=True. - NotImplementedError - 만약
cyclic는True입니다. - NotImplementedError - 만약
imag는True입니다. - RuntimeError - 유효하지 않은
direction을 제공한 경우
리턴 유형
없음
참조
[1]: https://en.wikipedia.org/wiki/Time-evolving _block_decimation