K ibCLdZddlmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZmZmZdd l mZdd lmZdd lmZgd ZGd deZGddeZGddeZGddeZGddeZGddeZGddeZGddeZdZdZ y) zPauli operators and states)Add)MulI)Pow)S)exp)OperatorKetBra ComplexSpace)Matrix)KroneckerDelta)SigmaXSigmaYSigmaZ SigmaMinus SigmaPlus SigmaZKet SigmaZBraqsimplify_paulicLeZdZdZedZedZedZdZ dZ y) SigmaOpBasez Pauli sigma operator, base classc |jdSNr)argsselfs a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/physics/quantum/pauli.pynamezSigmaOpBase.namesyy|c6t|jdduS)NrF)boolrrs r use_namezSigmaOpBase.use_namesDIIaL!..r"cy)N)Frs r default_argszSigmaOpBase.default_argssr"c4tj|g|i|SN)r __new__clsrhintss r r+zSigmaOpBase.__new__#s4d4e44r"c "tjSr*rZerorotherr.s r _eval_commutator_BosonOpz$SigmaOpBase._eval_commutator_BosonOp& vv r"N) __name__ __module__ __qualname____doc__propertyr!r% classmethodr(r+r4r'r"r rrsI* //5r"rcReZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zy )raPauli sigma x operator Parameters ========== name : str An optional string that labels the operator. Pauli operators with different names commute. Examples ======== >>> from sympy.physics.quantum import represent >>> from sympy.physics.quantum.pauli import SigmaX >>> sx = SigmaX() >>> sx SigmaX() >>> represent(sx) Matrix([ [0, 1], [1, 0]]) c4tj|g|i|Sr*rr+r,s r r+zSigmaX.__new__Bs""37777r"c |j|jk7rtjSdtzt |jzSNr!rr1rrr2s r _eval_commutator_SigmaYzSigmaX._eval_commutator_SigmaYE3 99 "66Mq56$)),, ,r"c |j|jk7rtjSdtzt |jzSNr!rr1rrr2s r _eval_commutator_SigmaZzSigmaX._eval_commutator_SigmaZK3 99 "66M7VDII.. .r"c "tjSr*r0r2s r r4zSigmaX._eval_commutator_BosonOpQr5r"c "tjSr*r0r2s r _eval_anticommutator_SigmaYz"SigmaX._eval_anticommutator_SigmaYTr5r"c "tjSr*r0r2s r _eval_anticommutator_SigmaZz"SigmaX._eval_anticommutator_SigmaZWr5r"c|Sr*r'rs r _eval_adjointzSigmaX._eval_adjointZ r"cL|jrdt|jzSy)Nz{\sigma_x^{(%s)}}z {\sigma_x}r%strr!rprinterrs r _print_contents_latexzSigmaX._print_contents_latex] =='#dii.8 8 r"cy)NzSigmaX()r'rVs r _print_contentszSigmaX._print_contentscr"c|jr=|jr0t|jj t |dzSyyr@) is_Integer is_positiverr!__pow__intres r _eval_powerzSigmaX._eval_powerf8 <>> from sympy.physics.quantum import represent >>> from sympy.physics.quantum.pauli import SigmaY >>> sy = SigmaY() >>> sy SigmaY() >>> represent(sy) Matrix([ [0, -I], [I, 0]]) c.tj|g|Sr*r>r,s r r+zSigmaY.__new__""3...r"c |j|jk7rtjSdtzt |jzSr@r!rr1rrr2s r rIzSigmaY._eval_commutator_SigmaZrDr"c |j|jk7rtjSdtzt |jzSrFrBr2s r _eval_commutator_SigmaXzSigmaY._eval_commutator_SigmaXrJr"c "tjSr*r0r2s r _eval_anticommutator_SigmaXz"SigmaY._eval_anticommutator_SigmaXr5r"c "tjSr*r0r2s r rOz"SigmaY._eval_anticommutator_SigmaZr5r"c|Sr*r'rs r rQzSigmaY._eval_adjointrRr"cL|jrdt|jzSy)Nz{\sigma_y^{(%s)}}z {\sigma_y}rTrVs r rXzSigmaY._print_contents_latexrYr"cy)NzSigmaY()r'rVs r r[zSigmaY._print_contentsr\r"c|jr=|jr0t|jj t |dzSyyr@)r^r_rr!r`rarbs r rdzSigmaY._eval_powerrer"c |jdd}|dk(rtdt gtdggStd|zdz)Nrhrirrkrl)rnrrrorps r rrzSigmaY._represent_default_basissWXw/ W Ar7QF+, ,%&A&,'-/B'CD Dr"N)r6r7r8r9r+rIrzr|rOrQrXr[rdrrr'r"r rrs:./- / ! 9Dr"rcLeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z y ) raPauli sigma z operator Parameters ========== name : str An optional string that labels the operator. Pauli operators with different names commute. Examples ======== >>> from sympy.physics.quantum import represent >>> from sympy.physics.quantum.pauli import SigmaZ >>> sz = SigmaZ() >>> sz ** 3 SigmaZ() >>> represent(sz) Matrix([ [1, 0], [0, -1]]) c.tj|g|Sr*r>r,s r r+zSigmaZ.__new__rvr"c |j|jk7rtjSdtzt |jzSr@rHr2s r rzzSigmaZ._eval_commutator_SigmaXrDr"c |j|jk7rtjSdtzt |jzSrFrxr2s r rCzSigmaZ._eval_commutator_SigmaYrJr"c "tjSr*r0r2s r r|z"SigmaZ._eval_anticommutator_SigmaXr5r"c "tjSr*r0r2s r rMz"SigmaZ._eval_anticommutator_SigmaYr5r"c|Sr*r'rs r rQzSigmaZ._eval_adjointrRr"cL|jrdt|jzSy)Nz{\sigma_z^{(%s)}}z {\sigma_z}rTrVs r rXzSigmaZ._print_contents_latexrYr"cy)NzSigmaZ()r'rVs r r[zSigmaZ._print_contentsr\r"c|jr=|jr0t|jj t |dzSyyr@)r^r_rr!r`rarbs r rdzSigmaZ._eval_powerrer"c t|jdd}|dk(rtddgddggStd|zdz)Nrhrirjrrkrlrmrps r rrzSigmaZ._represent_default_basissUXw/ W Aq6Ar7+, ,%&A&,'-/B'CD Dr"N)r6r7r8r9r+rzrCr|rMrQrXr[rdrrr'r"r rrrr"rcdeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZy)raPauli sigma minus operator Parameters ========== name : str An optional string that labels the operator. Pauli operators with different names commute. Examples ======== >>> from sympy.physics.quantum import represent, Dagger >>> from sympy.physics.quantum.pauli import SigmaMinus >>> sm = SigmaMinus() >>> sm SigmaMinus() >>> Dagger(sm) SigmaPlus() >>> represent(sm) Matrix([ [0, 0], [1, 0]]) c.tj|g|Sr*r>r,s r r+zSigmaMinus.__new__rvr"c |j|jk7rtjSt|j Sr*r!rr1rr2s r rzz"SigmaMinus._eval_commutator_SigmaXs- 99 "66M499%% %r"c |j|jk7rtjStt |jzSr*rBr2s r rCz"SigmaMinus._eval_commutator_SigmaY"/ 99 "66Mvdii(( (r"c d|zSr@r'r2s r rIz"SigmaMinus._eval_commutator_SigmaZ(s 4xr"c ,t|jSr*rr!r2s r _eval_commutator_SigmaMinusz&SigmaMinus._eval_commutator_SigmaMinus+dii  r"c "tjSr*r0r2s r rOz&SigmaMinus._eval_anticommutator_SigmaZ.r5r"c "tjSr*rOner2s r r|z&SigmaMinus._eval_anticommutator_SigmaX1 uu r"c 0ttjzSr*)rr NegativeOner2s r rMz&SigmaMinus._eval_anticommutator_SigmaY4s1==  r"c "tjSr*rr2s r _eval_anticommutator_SigmaPlusz)SigmaMinus._eval_anticommutator_SigmaPlus7rr"c,t|jSr*)rr!rs r rQzSigmaMinus._eval_adjoint:s##r"cV|jr|jrtjSyyr*r^r_rr1rbs r rdzSigmaMinus._eval_power= <>> from sympy.physics.quantum import represent, Dagger >>> from sympy.physics.quantum.pauli import SigmaPlus >>> sp = SigmaPlus() >>> sp SigmaPlus() >>> Dagger(sp) SigmaMinus() >>> represent(sp) Matrix([ [0, 1], [0, 0]]) c.tj|g|Sr*r>r,s r r+zSigmaPlus.__new__mrvr"c ~|j|jk7rtjSt|jSr*rr2s r rzz!SigmaPlus._eval_commutator_SigmaXps* 99 "66M$))$ $r"c |j|jk7rtjStt |jzSr*rBr2s r rCz!SigmaPlus._eval_commutator_SigmaYvrr"c ^|j|jk7rtjSd|zSrF)r!rr1r2s r rIz!SigmaPlus._eval_commutator_SigmaZ|s% 99 "66M9 r"c ,t|jSr*rr2s r rz%SigmaPlus._eval_commutator_SigmaMinusrr"c "tjSr*r0r2s r rOz%SigmaPlus._eval_anticommutator_SigmaZr5r"c "tjSr*rr2s r r|z%SigmaPlus._eval_anticommutator_SigmaXrr"c tSr*rr2s r rMz%SigmaPlus._eval_anticommutator_SigmaYsr"c "tjSr*rr2s r _eval_anticommutator_SigmaMinusz)SigmaPlus._eval_anticommutator_SigmaMinusrr"c,t|jSr*)rr!rs r rQzSigmaPlus._eval_adjoints$))$$r"c ||zSr*r')rr3s r _eval_mulzSigmaPlus._eval_muls e|r"cV|jr|jrtjSyyr*rrbs r rdzSigmaPlus._eval_powerrr"cL|jrdt|jzSy)Nz{\sigma_+^{(%s)}}z {\sigma_+}rTrVs r rXzSigmaPlus._print_contents_latexrYr"cy)Nz SigmaPlus()r'rVs r r[zSigmaPlus._print_contentssr"c t|jdd}|dk(rtddgddggStd|zdzrgrmrps r rrz"SigmaPlus._represent_default_basisrsr"N)r6r7r8r9r+rzrCrIrrOr|rMrrQrrdrXr[rrr'r"r rrSsS2/% )  !%! Dr"rcpeZdZdZdZedZedZedZ dZ dZ dZ d Z d Zd Zd Zy )rzKet for a two-level system quantum system. Parameters ========== n : Number The state number (0 or 1). cL|dvr tdtj||SN)rrjzn must be 0 or 1) ValueErrorr r+r-ns r r+zSigmaZKet.__new__& F?/0 0{{3""r"c |jdSrlabelrs r rz SigmaZKet.nzz!}r"ctSr*)rrs r dual_classzSigmaZKet.dual_classr"ctdSr@r )r-rs r _eval_hilbert_spacezSigmaZKet._eval_hilbert_spaces Ar"c Bt|j|jSr*)rr)rbrar.s r _eval_innerproduct_SigmaZBraz&SigmaZKet._eval_innerproduct_SigmaZBrasdffcee,,r"c J|jdk(r|Stj|zSr)rrrroprqs r _apply_from_right_to_SigmaZz%SigmaZKet._apply_from_right_to_SigmaZs! 66Q;K==4' 'r"c L|jdk(r tdStdSNrrj)rrrs r _apply_from_right_to_SigmaXz%SigmaZKet._apply_from_right_to_SigmaXs#vv{y|< ! >> from sympy.physics.quantum.pauli import SigmaX, SigmaY >>> from sympy.physics.quantum.pauli import qsimplify_pauli >>> sx, sy = SigmaX(), SigmaY() >>> sx * sy SigmaX()*SigmaY() >>> qsimplify_pauli(sx * sy) I*SigmaZ() c32K|]}t|ywr*)r).0args r z"qsimplify_pauli..s:C?3':sr)rr rrr typerrargs_cncpoplenrr!rappend) rctcncnc_scurrxyc1nc1s r rros>,!X!c3_% G:166:;;!S 266!9Dr7dK0be[1991 *FF1I,T15**,CCyFr7dK0be[1991 * KK  Awd## Hr"N)!r9sympy.core.addrsympy.core.mulrsympy.core.numbersrsympy.core.powerrsympy.core.singletonr&sympy.functions.elementary.exponentialr sympy.physics.quantumr r r rsympy.matricesr(sympy.functions.special.tensor_functionsr__all__rrrrrrrrrrr'r"r rs  "644.!C  (,FD[FDRCD[CDLCD[CDLQDQDhWD WDt=D=D@2fR4 r"