
    Ed                         d 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  ed          fdZd ZdS )z:

Routines for computing eigenvectors with DomainMatrix.

    )Dummy   )FiniteExtension)dup_factor_list)roots)PolyCRootOf   )DomainMatrixlambdac                 `   |                                  }| j        \  }| j        t          |          \  }}g }g }|D ]f\  }}	t	          |          dk    ru|d          |d         z  fdt          |          D             }
t          |
|f          }| |z
                                  }|                    |	|f           t          j
        |          }t          |                     fd| j                                        D             }fd|D             }t          ||f          }fdt          |          D             }
t          |
|f          }||z
                                  }|                    ||	|f           h||fS )	Nr   r   r   c                 L    g | ]fd t                    D              S )c                 .    g | ]}|k    rnj         S  zero.0jeigenvalfieldis     :lib/python3.11/site-packages/sympy/polys/matrices/eigen.py
<listcomp>z-dom_eigenvects.<locals>.<listcomp>.<listcomp>   (    IIIQ!V3III    ranger   r   colsr   r   s    @r   r   z"dom_eigenvects.<locals>.<listcomp>   K     & & & JIIIIIU4[[III& & &r   domainc                 .    g | ]}fd |D             S )c                 J    g | ]}t          j        |g           j         S )r#   )r   	from_listrep)r   itemr$   ls     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>+   s/    NNN$&999=NNNr   r   )r   rowr$   r*   s     r   r   z"dom_eigenvects.<locals>.<listcomp>*   sA     + + + ONNNN#NNN+ + +r   c                 ,    g | ]}fd |D             S )c                 &    g | ]} |          S r   r   )r   r)   r   s     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>-   s!    555t555r   r   )r   r+   r   s     r   r   z"dom_eigenvects.<locals>.<listcomp>-   s.    JJJ#5555555JJJr   c                 L    g | ]fd t                    D              S )c                 .    g | ]}|k    rnj         S r   r   r   s     r   r   z-dom_eigenvects.<locals>.<listcomp>.<listcomp>0   r   r   r   r    s    @r   r   z"dom_eigenvects.<locals>.<listcomp>/   r"   r   )charpolyshaper$   r   lenr   r   	nullspaceappendr   r'   r   r(   to_ddm)Ar*   r0   rows_factorsrational_eigenvectsalgebraic_eigenvectsbaseexpEE_itemsEEbasisminpolyAA_itemsAAr!   r$   r   r   s    `              @@@@r   dom_eigenvectsrD      s2   zz||HJD$XF 622JAw F F	ct99> 	FEQx$q')H& & & & & &t& & &H hte<<BV&&((E&&xe'DEEEEnT1V<<<G#G,,EuQxxH+ + + + +5<<>>+ + +H KJJJJJJHhte<<B& & & & & &t& & &H hte<<B"W''))E ''e(DEEEE 444r   c                 r  
 g }| D ]\\  
}}|j                                         }                    
          
fd|D             }|                    
||f           ]|D ]\  }}|j                                         }j        d         fd|D             }                                }                                t          fi |}	t          |	          |k    rfdt          |          D             }	|	D ]*

fd|D             }|                    
||f           +|S )Nc                 >    g | ]} fd |D                       S )c                 :    g | ]}                     |          S r   to_sympyr   xr   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>D   s%    444!ENN1%%444r   r   )r   vectMatrixr   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>C   sH     $ $ $ F4444t44455$ $ $r   r   c                 ,    g | ]}fd |D             S )c                 :    g | ]}                     |          S r   rH   rJ   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>L   s%    777Qu~~a((777r   r   )r   rL   r   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>L   s.    OOOD7777$777OOOr   c                 2    g | ]}t          |          S r   r	   )r   idxr*   rA   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>R   s%    KKKc!S11KKKr   c                 @    g | ]} fd |D                       S )c                 <    g | ]}|                               S r   )subs)r   rK   
eigenvaluer*   s     r   r   z6dom_eigenvects_to_sympy.<locals>.<listcomp>.<listcomp>V   s'    <<<!q*--<<<r   r   )r   rL   rM   rU   r*   s     r   r   z+dom_eigenvects_to_sympy.<locals>.<listcomp>U   sK     ( ( ( <<<<<t<<<==( ( (r   )
r(   r5   rI   r4   gensdegreeas_exprr   r2   r   )r:   r;   rM   kwargsresultmultiplicity
eigenvectsnew_eigenvectsrW   	eigenvalsrU   r   r*   rA   s     `       @@@@r   dom_eigenvects_to_sympyr_   :   s    F7J B B3z<^**,,
^^J//
$ $ $ $ $"$ $ $ 	z<@AAAA4H F F0wj^**,,
LOOOOOJOOO
!!//##'1////	y>>V# 	LKKKKKU6]]KKKI# 	F 	FJ( ( ( ( ( (&( ( (N MM:|^DEEEE		F Mr   N)__doc__sympy.core.symbolr   agca.extensionsr   factortoolsr   	polyrootsr   	polytoolsr   rootoftoolsr
   domainmatrixr   rD   r_   r   r   r   <module>rh      s    
 $ # # # # # - - - - - - ) ) ) ) ) )             ! ! ! ! ! ! & & & & & & h &5 &5 &5 &5R         r   