
    sg#                        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+y*)+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                   N    e Zd ZdZed        Zed        Zd Zd Zd Z	ddd	Z
y
)r   z1D cartesian position operator.c                      y)N)r    selfs    R/var/www/html/venv/lib/python3.12/site-packages/sympy/physics/quantum/cartesian.pydefault_argszXOp.default_args/           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--qzz:;;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                    |j                  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@   s`    ''u'=#### (6F?+vqwr(   N)__name__
__module____qualname____doc__classmethodr&   r0   r4   r:   r>   rP   r"   r(   r%   r   r   ,   sD    )  < < " 01  r(   r   c                   6    e Zd ZdZed        Zed        Zd Zy)r   z8 Y cartesian coordinate operator (for 2D or 3D systems) c                      y)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   s0    B  < <"r(   r   c                   6    e Zd ZdZed        Zed        Zd Zy)r   z2 Z cartesian coordinate operator (for 3D systems) c                      y)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   s0    <  < <"r(   r   c                   B    e Zd ZdZed        Zed        Zd ZdddZy)	r   z1D cartesian momentum operator.c                      y)N)r   r"   r#   s    r%   r&   zPxOp.default_argso       r(   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                    |j                  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   sb    ''u'=#### (6F?+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                   h    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y
)r   z1D cartesian position eigenket.c                 @     | j                   | gt        |      i |S r*   __new___lowercase_labelsr$   opr9   s      r%   _operators_to_statezXKet._operators_to_state   #    t||DD#4R#8DGDDr(   c                 @     |j                   |gt        |       i |S r*   rl   _uppercase_labelsr$   op_classr9   s      r%   _state_to_operatorszXKet._state_to_operators   2    x E!24!8E<CE 	Er(   c                      y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        zz!}r(   c                     t        | |fi |S r*   _enumerate_continuous_1D)r$   
num_statesr9   s      r%   rG   zXKet._enumerate_state   s    'jDGDDr(   c                 F    t        | j                  |j                  z
        S r*   )r   r6   r$   brahintss      r%   _eval_innerproduct_XBrazXKet._eval_innerproduct_XBra       $--#,,6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   s7    A2dmm#CLL056tAbDIFFr(   N)rQ   rR   rS   rT   rU   rp   rw   r&   r}   propertyr6   rG   r   r   r"   r(   r%   r   r      sl    )E EE      E8Gr(   r   c                   @    e Zd ZdZed        Zed        Zed        Zy)r   z1D cartesian position eigenbra.c                      y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      s?    )     r(   r   c                   f    e Zd ZdZed        Zd Zed        Zed        Z	ed        Z
ed        Zy)	r   z2 Base class for 3D cartesian position eigenstates c                 @     | j                   | gt        |      i |S r*   rk   rn   s      r%   rp   z#PositionState3D._operators_to_state   rq   r(   c                 @     |j                   |gt        |       i |S r*   rs   ru   s      r%   rw   z#PositionState3D._state_to_operators   rx   r(   c                      y)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      so    <E EE        r(   r   c                   &    e Zd ZdZd Zed        Zy)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   sW    3>>13>>13>>1&!*V"44Z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      s    *H  r(   r   c                        e Zd ZdZed        Zy)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      s    * r(   r   c                   h    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y
)r   z1D cartesian momentum eigenket.c                 @     | j                   | gt        |      i |S r*   rk   rn   s      r%   rp   zPxKet._operators_to_state   rq   r(   c                 @     |j                   |gt        |       i |S r*   rs   ru   s      r%   rw   zPxKet._state_to_operators  rx   r(   c                      y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|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  s4    1T]]?3<</45d1R49oEEr(   c                 F    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      sl    )E EE      @F8r(   r   c                   @    e Zd ZdZed        Zed        Zed        Zy)r   z1D cartesian momentum eigenbra.c                      y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     s?    )     r(   r   c                     | d   }| d   }|j                   }|j                  dg       }t        |      dk(  r*|j                  dd      }t        t	        |||z               }t	        t        |            D cg c]  }d }}t        |      D ]8  \  }}	|j                  d   }
 |t        |
      dz   t        |	      z   fi |||<   : |S c c}w )Nr   r@   
index_listrF   _)	__class__poplenlistrange	enumerater/   str)r/   r9   stater   state_classr   rF   ienum_statesindr   s              r%   r   r   4  s    GEaJ//K\2.J
:!kk-3%[:-EFG
#C
O4515K5J' M3

1$SZ#%5C%@LGLAM  6s   7	C
c                     t        | t              s| g} | D cg c](  }t        |j                  d         j	                         * c}S c c}w )Nr   )
isinstancesetr   r   lower)opsargs     r%   rm   rm   G  s=    c3e145#C		!##%555s   -Ac                     t        | t              s| g} | D cg c]G  }t        |j                  d         d   j	                         t        |j                  d         dd  z   I }}|S c c}w )Nr   r@   )r   r   r   r   upper)r   r   new_argss      r%   rt   rt   N  su    c3e 256*- CIIaL!!$**,CIIaL!!"%& 6H 6 O6s   AA(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 9 > $ 0 , R 7 7. 
  <"
 ""
 "&! !. HHH	$ZG3 GD3 "e >C $C 8C 8DC *&6r(   