§
    OŠtj„#  ã                   ó<  — d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZ dd	lmZ dd
lmZmZ ddlmZmZmZ g d¢Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z ed¦  «        Z ed¦  «        Z ed¦  «        Z  ed¦  «        Z! G d„ de¦  «        Z" G d„ de¦  «        Z# G d„ de¦  «        Z$ G d„ d ee$¦  «        Z% G d!„ d"ee$¦  «        Z& G d#„ d$e¦  «        Z' G d%„ d&e¦  «        Z(d'„ Z)d(„ Z*d)„ Z+d*S )+zuOperators and states for 1D cartesian position and momentum.

TODO:

* Add 3D classes to mappings in operatorset.py

é    )ÚIÚpi)ÚS)Úexp)Úsqrt)Ú
DiracDelta)ÚInterval)Úhbar)ÚL2)ÚDifferentialOperatorÚHermitianOperator)ÚKetÚBraÚState)ÚXOpÚYOpÚZOpÚPxOpÚXÚYÚZÚPxÚXKetÚXBraÚPxKetÚPxBraÚPositionState3DÚPositionKet3DÚPositionBra3Dc                   ó\   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z	ddœd	„Z
d
S )r   z1D cartesian position operator.c                 ó   — dS )N)r   © ©Úselfs    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/quantum/cartesian.pyÚdefault_argszXOp.default_args/   ó   € àˆvó    c                 ód   — t          t          t          j        t          j        ¦  «        ¦  «        S ©N©r   r	   r   ÚNegativeInfinityÚInfinity©r$   Úargss     r%   Ú_eval_hilbert_spacezXOp._eval_hilbert_space3   ó   € å•(�1Ô-­q¬zÑ:Ô:Ñ;Ô;Ð;r(   c                 ó    — t           t          z  S r*   )r   r
   )r$   Úothers     r%   Ú_eval_commutator_PxOpzXOp._eval_commutator_PxOp7   s   € Ý•‰vˆr(   c                 ó   — |j         |z  S r*   )Úposition©r$   ÚketÚoptionss      r%   Ú_apply_operator_XKetzXOp._apply_operator_XKet:   ó   € ØŒ|˜CÑÐr(   c                 ó   — |j         |z  S r*   )Ú
position_xr7   s      r%   Ú_apply_operator_PositionKet3Dz!XOp._apply_operator_PositionKet3D=   ó   € ØŒ~˜cÑ!Ð!r(   é   ©Úindexc                óÐ   — |                      d|¬¦  «        }|d         j        }|d         j        }t          |¦  «        }t          ||z
  ¦  «        }t          t
          z  ||z  z  S ©Né   )Ústart_indexr   r@   )Ú_enumerate_stateÚmomentumr   r   r   r
   ©	r$   ÚbasisrB   r9   ÚstatesÚcoord1Úcoord2ÚdÚdeltas	            r%   Ú_represent_PxKetzXOp._represent_PxKet@   sc   € Ø×'Ò'¨°uÐ'Ñ=Ô=ˆØ˜”Ô#ˆØ˜”Ô#ˆÝ  Ñ(Ô(ˆÝ˜6 F™?Ñ+Ô+ˆå•‰v�q˜‘wÑÐr(   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr&   r0   r4   r:   r>   rP   r"   r(   r%   r   r   ,   s™   € € € € € Ø)Ð)àðð ñ „[ðð ð<ð <ñ „[ð<ðð ð ð ð  ð  ð"ð "ð "ð 01ð  ð  ð  ð  ð  ð  ð  r(   r   c                   óD   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )r   z8 Y cartesian coordinate operator (for 2D or 3D systems) c                 ó   — dS )N)r   r"   r#   s    r%   r&   zYOp.default_argsM   r'   r(   c                 ód   — t          t          t          j        t          j        ¦  «        ¦  «        S r*   r+   r.   s     r%   r0   zYOp._eval_hilbert_spaceQ   r1   r(   c                 ó   — |j         |z  S r*   )Ú
position_yr7   s      r%   r>   z!YOp._apply_operator_PositionKet3DU   r?   r(   N©rQ   rR   rS   rT   rU   r&   r0   r>   r"   r(   r%   r   r   J   s]   € € € € € ØBÐBàðð ñ „[ðð ð<ð <ñ „[ð<ð"ð "ð "ð "ð "r(   r   c                   óD   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )r   z2 Z cartesian coordinate operator (for 3D systems) c                 ó   — dS )N)r   r"   r#   s    r%   r&   zZOp.default_args\   r'   r(   c                 ód   — t          t          t          j        t          j        ¦  «        ¦  «        S r*   r+   r.   s     r%   r0   zZOp._eval_hilbert_space`   r1   r(   c                 ó   — |j         |z  S r*   )Ú
position_zr7   s      r%   r>   z!ZOp._apply_operator_PositionKet3Dd   r?   r(   Nr[   r"   r(   r%   r   r   Y   s]   € € € € € Ø<Ð<àðð ñ „[ðð ð<ð <ñ „[ð<ð"ð "ð "ð "ð "r(   r   c                   óP   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zddœd„ZdS )	r   z1D cartesian momentum operator.c                 ó   — dS )N)r   r"   r#   s    r%   r&   zPxOp.default_argso   ó   € àˆwr(   c                 ód   — t          t          t          j        t          j        ¦  «        ¦  «        S r*   r+   r.   s     r%   r0   zPxOp._eval_hilbert_spaces   r1   r(   c                 ó   — |j         |z  S r*   )rH   r7   s      r%   Ú_apply_operator_PxKetzPxOp._apply_operator_PxKetw   r;   r(   r@   rA   c                óÒ   — |                      d|¬¦  «        }|d         j        }|d         j        }t          |¦  «        }t          ||z
  ¦  «        }t           t
          z  ||z  z  S rD   )rG   r6   r   r   r   r
   rI   s	            r%   Ú_represent_XKetzPxOp._represent_XKetz   se   € Ø×'Ò'¨°uÐ'Ñ=Ô=ˆØ˜”Ô#ˆØ˜”Ô#ˆÝ  Ñ(Ô(ˆÝ˜6 F™?Ñ+Ô+ˆåˆr•$‰w˜˜%™Ñ Ð r(   N)	rQ   rR   rS   rT   rU   r&   r0   rf   rh   r"   r(   r%   r   r   l   s{   € € € € € Ø)Ð)àðð ñ „[ðð ð<ð <ñ „[ð<ð ð  ð  ð /0ð !ð !ð !ð !ð !ð !ð !r(   r   r   r   r   r   c                   ó‚   — e Zd ZdZed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Ze	d„ ¦   «         Z
d„ Zd„ Zd	„ Zd
S )r   z1D cartesian position eigenket.c                 ó>   —  | j         | gt          |¦  «        ¢R i |¤ŽS r*   ©Ú__new__Ú_lowercase_labels©r$   Úopr9   s      r%   Ú_operators_to_statezXKet._operators_to_state�   ó-   € àˆtŒ|˜DÐDÕ#4°RÑ#8Ô#8ÐDÐDÐD¸GÐDÐDÐDr(   c                 ó>   —  |j         |gt          | ¦  «        ¢R i |¤ŽS r*   ©rl   Ú_uppercase_labels©r$   Úop_classr9   s      r%   Ú_state_to_operatorszXKet._state_to_operators”   óD   € ØˆxÔ ð EÝ!2°4Ñ!8Ô!8ðEð Eð EØ<CðEð Eð 	Er(   c                 ó   — dS ©N)Úxr"   r#   s    r%   r&   zXKet.default_args˜   r'   r(   c                 ó   — t           S r*   )r   r#   s    r%   Ú
dual_classzXKet.dual_classœ   ó   € åˆr(   c                 ó   — | j         d         S ©zThe position of the state.r   ©Úlabelr#   s    r%   r6   zXKet.position    ó   € ð Œz˜!Œ}Ðr(   c                 ó   — t          | |fi |¤ŽS r*   ©Ú_enumerate_continuous_1D)r$   Ú
num_statesr9   s      r%   rG   zXKet._enumerate_state¥   s   € Ý'¨¨jÐDÐD¸GÐDÐDÐDr(   c                 ó:   — t          | j        |j        z
  ¦  «        S r*   )r   r6   ©r$   ÚbraÚhintss      r%   Ú_eval_innerproduct_XBrazXKet._eval_innerproduct_XBra¨   ó   € Ý˜$œ-¨#¬,Ñ6Ñ7Ô7Ð7r(   c                 óœ   — t          t           | j        z  |j        z  t          z  ¦  «        t          dt          z  t          z  ¦  «        z  S ©NrE   )r   r   r6   rH   r
   r   r   r‰   s      r%   Ú_eval_innerproduct_PxBrazXKet._eval_innerproduct_PxBra«   s8   € Ý•A�2�d”mÑ# C¤LÑ0µÑ5Ñ6Ô6µt¸A½b¹DÅ¹I±´ÑFÐFr(   N)rQ   rR   rS   rT   rU   rp   rw   r&   r}   Úpropertyr6   rG   rŒ   r�   r"   r(   r%   r   r   �   sÎ   € € € € € Ø)Ð)àðEð Eñ „[ðEðEð Eð Eð ðð ñ „[ðð ðð ñ „[ðð ðð ñ „XððEð Eð Eð8ð 8ð 8ðGð Gð Gð Gð Gr(   r   c                   óT   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )r   z1D cartesian position eigenbra.c                 ó   — dS rz   r"   r#   s    r%   r&   zXBra.default_args²   r'   r(   c                 ó   — t           S r*   )r   r#   s    r%   r}   zXBra.dual_class¶   r~   r(   c                 ó   — | j         d         S r€   r�   r#   s    r%   r6   zXBra.positionº   rƒ   r(   N)	rQ   rR   rS   rT   rU   r&   r}   r‘   r6   r"   r(   r%   r   r   ¯   si   € € € € € Ø)Ð)àðð ñ „[ðð ðð ñ „[ðð ðð ñ „Xðð ð r(   r   c                   ó†   — e Zd ZdZed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
ed„ ¦   «         ZdS )	r   z2 Base class for 3D cartesian position eigenstates c                 ó>   —  | j         | gt          |¦  «        ¢R i |¤ŽS r*   rk   rn   s      r%   rp   z#PositionState3D._operators_to_stateÃ   rq   r(   c                 ó>   —  |j         |gt          | ¦  «        ¢R i |¤ŽS r*   rs   ru   s      r%   rw   z#PositionState3D._state_to_operatorsÇ   rx   r(   c                 ó   — dS )N)r{   ÚyÚzr"   r#   s    r%   r&   zPositionState3D.default_argsË   s   € àˆr(   c                 ó   — | j         d         S )z The x coordinate of the state r   r�   r#   s    r%   r=   zPositionState3D.position_xÏ   rƒ   r(   c                 ó   — | j         d         S )z The y coordinate of the state r@   r�   r#   s    r%   rZ   zPositionState3D.position_yÔ   rƒ   r(   c                 ó   — | j         d         S )z The z coordinate of the state rE   r�   r#   s    r%   r`   zPositionState3D.position_zÙ   rƒ   r(   N)rQ   rR   rS   rT   rU   rp   rw   r&   r‘   r=   rZ   r`   r"   r(   r%   r   r   À   s´   € € € € € Ø<Ð<àðEð Eñ „[ðEðEð Eð Eð ðð ñ „[ðð ðð ñ „Xðð ðð ñ „Xðð ðð ñ „Xðð ð r(   r   c                   ó.   — e Zd ZdZd„ Zed„ ¦   «         ZdS )r   z  3D cartesian position eigenket c                 óº   — | j         |j         z
  }| j        |j        z
  }| j        |j        z
  }t          |¦  «        t          |¦  «        z  t          |¦  «        z  S r*   )r=   rZ   r`   r   )r$   rŠ   r9   Úx_diffÚy_diffÚz_diffs         r%   Ú _eval_innerproduct_PositionBra3Dz.PositionKet3D._eval_innerproduct_PositionBra3Dâ   sT   € Ø” 3¤>Ñ1ˆØ” 3¤>Ñ1ˆØ” 3¤>Ñ1ˆå˜&Ñ!Ô!¥*¨VÑ"4Ô"4Ñ4µZÀÑ5GÔ5GÑGÐGr(   c                 ó   — t           S r*   )r   r#   s    r%   r}   zPositionKet3D.dual_classé   ó   € åÐr(   N)rQ   rR   rS   rT   r¤   rU   r}   r"   r(   r%   r   r   ß   sG   € € € € € Ø*Ð*ðHð Hð Hð ðð ñ „[ðð ð r(   r   c                   ó(   — e Zd ZdZed„ ¦   «         ZdS )r   z  3D cartesian position eigenbra c                 ó   — t           S r*   )r   r#   s    r%   r}   zPositionBra3D.dual_classô   r¦   r(   N)rQ   rR   rS   rT   rU   r}   r"   r(   r%   r   r   ñ   s3   € € € € € Ø*Ð*àðð ñ „[ðð ð r(   r   c                   ó‚   — e Zd ZdZed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Ze	d„ ¦   «         Z
d„ Zd„ Zd	„ Zd
S )r   z1D cartesian momentum eigenket.c                 ó>   —  | j         | gt          |¦  «        ¢R i |¤ŽS r*   rk   rn   s      r%   rp   zPxKet._operators_to_state   rq   r(   c                 ó>   —  |j         |gt          | ¦  «        ¢R i |¤ŽS r*   rs   ru   s      r%   rw   zPxKet._state_to_operators  rx   r(   c                 ó   — dS ©N)Úpxr"   r#   s    r%   r&   zPxKet.default_args  rc   r(   c                 ó   — t           S r*   )r   r#   s    r%   r}   zPxKet.dual_class  ó   € åˆr(   c                 ó   — | j         d         S ©zThe momentum of the state.r   r�   r#   s    r%   rH   zPxKet.momentum  rƒ   r(   c                 ó"   — t          | g|¢R i |¤ŽS r*   r…   )r$   r/   r9   s      r%   rG   zPxKet._enumerate_state  s    € Ý'¨Ð?¨tÐ?Ð?Ð?°wÐ?Ð?Ð?r(   c                 óš   — t          t          | j        z  |j        z  t          z  ¦  «        t          dt          z  t          z  ¦  «        z  S r�   )r   r   rH   r6   r
   r   r   r‰   s      r%   rŒ   zPxKet._eval_innerproduct_XBra  s5   € Ý•1�T”]‘? 3¤<Ñ/µÑ4Ñ5Ô5µd¸1½R¹4Å¹9±o´oÑEÐEr(   c                 ó:   — t          | j        |j        z
  ¦  «        S r*   )r   rH   r‰   s      r%   r�   zPxKet._eval_innerproduct_PxBra  r�   r(   N)rQ   rR   rS   rT   rU   rp   rw   r&   r}   r‘   rH   rG   rŒ   r�   r"   r(   r%   r   r   ý   sÌ   € € € € € Ø)Ð)àðEð Eñ „[ðEðEð Eð Eð ðð ñ „[ðð ðð ñ „[ðð ðð ñ „Xðð@ð @ð @ðFð Fð Fð8ð 8ð 8ð 8ð 8r(   r   c                   óT   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         ZdS )r   z1D cartesian momentum eigenbra.c                 ó   — dS r­   r"   r#   s    r%   r&   zPxBra.default_args"  rc   r(   c                 ó   — t           S r*   )r   r#   s    r%   r}   zPxBra.dual_class&  r°   r(   c                 ó   — | j         d         S r²   r�   r#   s    r%   rH   zPxBra.momentum*  rƒ   r(   N)	rQ   rR   rS   rT   rU   r&   r}   r‘   rH   r"   r(   r%   r   r     si   € € € € € Ø)Ð)àðð ñ „[ðð ðð ñ „[ðð ðð ñ „Xðð ð r(   r   c                  óÚ  — | d         }| d         }|j         }|                     dg ¦  «        }t          |¦  «        dk    r6|                     dd¦  «        }t          t	          |||z   ¦  «        ¦  «        }d„ t	          t          |¦  «        ¦  «        D ¦   «         }t          |¦  «        D ]>\  }}	|j        d         }
 |t          |
¦  «        dz   t          |	¦  «        z   fi |¤Ž||<   Œ?|S )Nr   r@   Ú
index_listrF   c                 ó   — g | ]}d ‘ŒS ©r   r"   )Ú.0Úis     r%   ú
<listcomp>z,_enumerate_continuous_1D.<locals>.<listcomp>>  s   € Ð5Ð5Ð5˜�1Ð5Ð5Ð5r(   Ú_)Ú	__class__ÚpopÚlenÚlistÚrangeÚ	enumerater/   Ústr)r/   r9   Ústater‡   Ústate_classr»   rF   Úenum_statesr¿   Úindr‚   s              r%   r†   r†   4  sð   € Ø�ŒG€EØ�a”€JØ”/€KØ—’˜\¨2Ñ.Ô.€Jå
ˆ:�„˜!ÒÐØ—k’k -°Ñ3Ô3ˆÝ�% ¨[¸:Ñ-EÑFÔFÑGÔGˆ
à5Ð5�e¥C¨
¡O¤OÑ4Ô4Ð5Ñ5Ô5€Kå˜JÑ'Ô'ð Mð M‰ˆˆ3Ø”
˜1”ˆØ$˜¥S¨¡Z¤Z°#Ñ%5½¸C¹¼Ñ%@ÐLÐLÀGÐLÐLˆ�A‰ˆàÐr(   c                 óJ   — t          | t          ¦  «        s| g} d„ | D ¦   «         S )Nc                 óf   — g | ].}t          |j        d          ¦  «                             ¦   «         ‘Œ/S r½   )rÈ   r‚   Úlower©r¾   Úargs     r%   rÀ   z%_lowercase_labels.<locals>.<listcomp>K  s2   € Ð5Ð5Ð5¨#�C�”	˜!”ÑÔ×#Ò#Ñ%Ô%Ð5Ð5Ð5r(   ©Ú
isinstanceÚset)Úopss    r%   rm   rm   G  s/   € Ý�c�3ÑÔð Øˆeˆà5Ð5°Ð5Ñ5Ô5Ð5r(   c                 óN   — t          | t          ¦  «        s| g} d„ | D ¦   «         }|S )Nc                 ó¸   — g | ]W}t          |j        d          ¦  «        d                               ¦   «         t          |j        d          ¦  «        dd…         z   ‘ŒXS )r   r@   N)rÈ   r‚   ÚupperrÐ   s     r%   rÀ   z%_uppercase_labels.<locals>.<listcomp>R  sf   € ð 6ð 6ð 6Ø*-õ �C”I˜a”LÑ!Ô! !Ô$×*Ò*Ñ,Ô,Ý�C”I˜a”LÑ!Ô! ! " "Ô%ñ&ð 6ð 6ð 6r(   rÒ   )rÕ   Únew_argss     r%   rt   rt   N  s@   € Ý�c�3ÑÔð Øˆeˆð6ð 6Ø14ð6ñ 6ô 6€Hð €Or(   N),rT   Úsympy.core.numbersr   r   Úsympy.core.singletonr   Ú&sympy.functions.elementary.exponentialr   Ú(sympy.functions.elementary.miscellaneousr   Ú'sympy.functions.special.delta_functionsr   Úsympy.sets.setsr	   Úsympy.physics.quantum.constantsr
   Úsympy.physics.quantum.hilbertr   Úsympy.physics.quantum.operatorr   r   Úsympy.physics.quantum.stater   r   r   Ú__all__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r†   rm   rt   r"   r(   r%   ú<module>rå      s;  ððð ð 'Ð &Ð &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø >Ð >Ð >Ð >Ð >Ð >Ø $Ð $Ð $Ð $Ð $Ð $à 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø RÐ RÐ RÐ RÐ RÐ RÐ RÐ RØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð €ð. ð  ð  ð  ð  Ð
ñ  ô  ð  ð<"ð "ð "ð "ð "Ð
ñ "ô "ð "ð"ð "ð "ð "ð "Ð
ñ "ô "ð "ð&!ð !ð !ð !ð !Ðñ !ô !ð !ð. €Cˆ�H„H€Ø€Cˆ�H„H€Ø€Cˆ�H„H€Ø	€Tˆ$�Z„Z€ðGð Gð Gð Gð Gˆ3ñ Gô Gð GðDð ð ð ð ˆ3ñ ô ð ð"ð ð ð ð �eñ ô ð ð>ð ð ð ð �C˜ñ ô ð ð$ð ð ð ð �C˜ñ ô ð ð8ð 8ð 8ð 8ð 8ˆCñ 8ô 8ð 8ðDð ð ð ð ˆCñ ô ð ð*ð ð ð&6ð 6ð 6ðð ð ð ð r(   