ó
â3Zc           @   s–   d  d l  Td  d l Tg  d „ Z d „  Z g  d „ Z g  d „ Z g  d „ Z g  d „ Z g  d „ Z g  d	 „ Z	 g  d
 „ Z
 g  d „ Z d „  Z d S(   iÿÿÿÿ(   t   *c         C   s  d } xù t  t |  ƒ ƒ D]å } |  | | d k rH d G| Gd G| GHd S| |  | | 9} d |  | | } t |  | | ƒ | r• | | c | 9<n  xf t  | d t |  ƒ ƒ D]K } | rÞ | | c |  | | | | 8<n  t |  | |  | | | ƒ q¯ Wq W| S(   Ng      ð?g        s$   Gauss_Forward_1: Matrix Singular at t   xi   (   t   ranget   lent   Matrices_Row_Multt   Matrices_Rows_Operation(   t   At   bt   dett   it   factt   j(    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss_Forward_1   s       #$c         C   sy   | } t  |  | | ƒ } xX t | d t |  ƒ ƒ D]= } t  |  | | ƒ | k r4 | } t  |  | | ƒ } q4 q4 W| S(   Ni   (   t   absR   R   (   R   R	   t   pivotet   pivR   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss_Pivote   s     c         C   si  d } x\t  t |  ƒ ƒ D]H} t |  | ƒ } | | k r‚ | re | | } | | | | <| | | <n  t |  | | ƒ | d 9} n  |  | | d k r« d G| Gd G| GHd S| |  | | 9} d |  | | } | rè | | c | 9<n  t |  | | ƒ xf t  | d t |  ƒ ƒ D]K } | rA| | c |  | | | | 8<n  t |  | |  | | | ƒ qWq W| S(   Ng      ð?g      ð¿g        s"   Gauss_Forward: Matrix Singular at R   i   (   R   R   R   t   Matrices_Rows_SwapR   R   (   R   R   R   R	   R   t   tmpR
   R   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss_Forward(   s.    
   #$c         C   s‡   x€ t  t |  ƒ d d d ƒ D]b } xY t  | ƒ D]K } | r_ | | c |  | | | | 8<n  t |  | |  | | | ƒ q0 Wq Wd  S(   Ni   iÿÿÿÿ(   R   R   R   (   R   R   R	   R   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss_BackwardF   s
    # #c         C   s?   t  |  | ƒ } d G| GH| d k r. t ƒ  n  t |  | ƒ | S(   Ns   Gauss Forward, detg        (   R   t   exitR   (   R   R   R   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   GaussL   s    	
c         C   sh   t  |  ƒ } t | ƒ } t |  | ƒ } t | | ƒ } t | | ƒ } t | ƒ t | ƒ } d | GH| S(   Ns   Gauss_Test, Residual: %.6e(   t   Matrix_Copyt   listR   t   Matrix_Mult_Vectort   Vectors_Subt   Vector_Norm(   R   R   t   AAt   bbR   t   res_bt   residual(    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt
   Gauss_TestX   s    	c         C   sS  d } xFt  t |  ƒ ƒ D]2} t |  | ƒ } | | k rp | rS t | | | ƒ n  t |  | | ƒ | d 9} n  |  | | d k r™ d G| Gd G| GHd S| |  | | 9} d |  | | } | rÖ t | | | ƒ n  t |  | | ƒ xb t  | d t |  ƒ ƒ D]G } | r+t | | |  | | | ƒ n  t |  | |  | | | ƒ q Wq W| S(   Ng      ð?g      ð¿g        s#   Gauss2_Forward: Matrix Singular at R   i   (   R   R   R   R   R   R   (   R   t   BR   R	   R   R
   R   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss2_Forwardi   s*        $c         C   sƒ   x| t  t |  ƒ d d d ƒ D]^ } xU t  | ƒ D]G } | r[ t | | |  | | | ƒ n  t |  | |  | | | ƒ q0 Wq Wd  S(   Ni   iÿÿÿÿ(   R   R   R   (   R   R!   R	   R   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss2_Backward„   s
    # c         C   s?   t  |  | ƒ } d G| GH| d k r. t ƒ  n  t |  | ƒ | S(   Ns   Gauss Forward, detg        (   R"   R   R#   (   R   t   XR   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss2Š   s    	
c         C   sh   t  |  ƒ } t  | ƒ } t |  | ƒ } t | | ƒ } t | | ƒ } t | ƒ t | ƒ } d | GH| S(   Ns!   Matrix_Gauss_Test, Residual: %.6e(   R   R%   t   Matrices_Multt   Matrices_Subt   Matrix_Norm(   R   R!   R   t   BBR   t   R_BR   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Gauss2_Test•   s    	c         C   s#   t  t |  ƒ ƒ } t |  | ƒ | S(   N(   t   Matrix_IdentityR   R+   (   R   R$   (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   Inverse¦   s    N(   t   Vectort   MatrixR   R   R   R   R   R    R"   R#   R%   R+   R-   (    (    (    s>   /usr/local/Slides/1_Disciplines/1_CN/9_Tests/2017.2.S/Gauss.pyt   <module>   s   

	