Ë
    0Ò^j¯+  ã            
       óŒ   — d dl mZmZmZmZ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gZ ed¬	«      dddd
d
d
dddœd„«       Zy
)é    )ÚinnerÚvdotÚiscomplexobjÚzerosÚinfÚfinfo)Únorm)Úsqrt)Úxp_capabilitiesé   )Úmake_systemÚminresT)Únp_onlyNgñhãˆµøä>g        F)ÚrtolÚshiftÚmaxiterÚMÚcallbackÚshowÚcheckc                ó  — t        | |||«      \  } }}
}t        | «      rt        nt        }| j                  }|j                  }d}d}| j
                  d   }|€d|z  }g d¢}|rDt        |dz   «       t        |d|d›d	|d
›�z   «       t        |d|d›d|d›�z   «       t        «        d}d}d}d}d}d}|
j                  }t        |«      j                  }|€|j                  «       }n|| |
z  z
  } ||«      } |||«      }|dk  rt        d«      ‚|dk(  r|
dfS t        |«      }|dk(  r|}
|
dfS t        |j                  «      }|	rŽ ||«      } ||«      } |||«      }  |||«      }!t        | |!z
  «      }"| |z   |dz  z  }#|"|#kD  rt        d«      ‚ ||«      } |||«      }  |||«      }!t        | |!z
  «      }"| |z   |dz  z  }#|"|#kD  rt        d«      ‚d}$|}%d}&d}'|}(|})|}*d}+d},d}-t        |«      j                   }.d}/d}0t#        ||¬«      }t#        ||¬«      }1|}|rt        «        t        «        t        d«       ||k  �rÅ|dz  }d|%z  } | |z  }2 ||2«      }|||2z  z
  }|dk\  r||%|$z  |z  z
  } ||2|«      }3||3|%z  |z  z
  }|}|} ||«      }|%}$ |||«      }%|%dk  rt        d«      ‚t        |%j                  «      }%|,|3dz  |$dz  z   |%dz  z   z  },|dk(  r|%|z  d|z  k  rd}|'}4|/|&z  |0|3z  z   }5|0|&z  |/|3z  z
  }6|0|%z  }'|/ |%z  }&t        |6|&g«      }7|)|7z  }8t        |6|%g«      j%                  |«      }9t!        |9|«      }9|6|9z  }/|%|9z  }0|/|)z  }:|0|)z  })d|9z  };|1}<|}1|2|4|<z  z
  |5|1z  z
  |;z  }|
|:|z  z   }
t!        |-|9«      }-t'        |.|9«      }.|*|9z  }"|+|5|"z  z
  }*|' |"z  }+t        |,j                  «      }t        |
«      }||z  }#||z  |z  }=||z  |z  }>|6}?|?dk(  r|#}?|)}(|(}|dk(  s|dk(  rt(        }@n|||z  z  }@|dk(  rt(        }An|7|z  }A|-|.z  }|dk(  r>d@z   }BdAz   }C|Cdk  rd}Bdk  rd}||k\  rd}|d|z  k\  rd}|=|k\  rd}A|k  rd}@|k  rd}d}D|dk  rd}D|dk  rd}D||dz
  k\  rd}D|dz  dk(  rd}D|(d|=z  k  rd}D|(d|>z  k  rd}D|d |z  k  rd}D|dk7  rd}D|rLDrJ|d!›d"|
d   d#›d"@d$›�}Ed"Ad$›�}Fd"|d%›d"|d%›d"|6|z  d%›�}Gt        |E|Fz   |Gz   «       |dz  dk(  r
t        «        |� ||
«       |dk7  rn||k  r�ŒÅ|rrt        «        t        |d&|d›d'|d(›�z   «       t        |d)|d*›d+|d*›�z   «       t        |d,|d*›d-|d*›�z   «       t        |d.8d*›�z   «       t        |||dz      z   «       |dk(  r|}H|
|HfS d}H|
HfS )/ak  
    Solve ``Ax = b`` with the MINimum RESidual method,
    for a real symmetric or complex hermitian matrix `A`.

    MINRES minimizes ``norm(Ax - b)`` for a real symmetric or complex hermitian
    matrix `A`. Unlike the Conjugate Gradient method, `A` can be indefinite
    or singular.

    If ``shift != 0`` then the method solves ``(A - shift*I)x = b``.

    Parameters
    ----------
    A : {sparse array, ndarray, LinearOperator}
        The real symmetric or complex hermitian N-by-N matrix of the
        linear system. Alternatively, `A` can be a linear operator which can
        produce ``Ax`` using, e.g.,
        ``scipy.sparse.linalg.LinearOperator``.
    b : ndarray
        Right hand side of the linear system. Has shape (N,) or (N,1).

    Returns
    -------
    x : ndarray
        The converged solution.
    info : int
        Provides convergence information:
            0  : successful exit
            >0 : convergence to tolerance not achieved, number of iterations
            <0 : illegal input or breakdown

    Other Parameters
    ----------------
    x0 : ndarray
        Starting guess for the solution.
    rtol : float
        Tolerance to achieve. The algorithm terminates when the relative
        residual is below ``rtol``.
    shift : float
        Value to apply to the system ``(A - shift * I)x = b``. Default is 0.
    maxiter : int
        Maximum number of iterations.  Iteration will stop after maxiter
        steps even if the specified tolerance has not been achieved.
    M : {sparse array, ndarray, LinearOperator}
        Preconditioner for `A`.  The preconditioner should approximate the
        inverse of `A`.  Effective preconditioning dramatically improves the
        rate of convergence, which implies that fewer iterations are needed
        to reach a given error tolerance.
    callback : function
        User-supplied function to call after each iteration.  It is called
        as ``callback(xk)``, where ``xk`` is the current solution vector.
    show : bool
        If ``True``, print out a summary and metrics related to the solution
        during iterations. Default is ``False``.
    check : bool
        If ``True``, run additional input validation to check that `A` and
        `M` (if specified) are symmetric. Default is ``False``.

    Notes
    -----
    This file is a translation of the MATLAB implementation [2]_.

    References
    ----------
    .. [1] Solution of sparse indefinite systems of linear equations,
          C. C. Paige and M. A. Saunders (1975),
          SIAM J. Numer. Anal. 12(4), pp. 617-629.
          https://web.stanford.edu/group/SOL/software/minres/
    .. [2] https://web.stanford.edu/group/SOL/software/minres/minres-matlab.zip

    Examples
    --------
    >>> import numpy as np
    >>> from scipy.sparse import csc_array
    >>> from scipy.sparse.linalg import minres
    >>> A = csc_array([[3, 2, 0], [1, -1, 0], [0, 5, 1]], dtype=float)
    >>> A = A + A.T
    >>> b = np.array([2, 4, -1], dtype=float)
    >>> x, exitCode = minres(A, b)
    >>> print(exitCode)            # 0 indicates successful convergence
    0
    >>> np.allclose(A.dot(x), b)
    True
    zEnter minres.   zExit  minres.   r   é   )z3 beta2 = 0.  If M = I, b and x are eigenvectors    z/ beta1 = 0.  The exact solution is x0          z3 A solution to Ax = b was found, given rtol        z3 A least-squares solution was found, given rtol    z3 Reasonable accuracy achieved, given eps           z3 x has converged to an eigenvector                 z3 acond has exceeded 0.1/eps                        z3 The iteration limit was reached                   z3 A  does not define a symmetric matrix             z3 M  does not define a symmetric matrix             z3 M  does not define a pos-def preconditioner       zSolution of symmetric Ax = bz
n      =  Ú3gz     shift  =  z23.14ez
itnlim =  z     rtol   =  z11.2ezindefinite preconditionergUUUUUUÕ?znon-symmetric matrixznon-symmetric preconditioneréÿÿÿÿ)ÚdtypezD   Itn     x(1)     Compatible    LS       norm(A)  cond(A) gbar/|A|r   g      ð?é   é
   é   gš™™™™™¹?é   é   Fé(   Tg{®Gáz„?Ú6gú z12.5ez10.3ez8.1ez istop   =  z               itn   =Ú5gz Anorm   =  z12.4ez      Acond =  z rnorm   =  z      ynorm =  z Arnorm  =  )r   r   r   r   ÚmatvecÚshapeÚprintr   r   ÚepsÚcopyÚ
ValueErrorr	   r
   ÚrealÚabsÚmaxr   ÚastypeÚminr   )IÚAÚbÚx0r   r   r   r   r   r   r   ÚxÚdotprodr%   ÚpsolveÚfirstÚlastÚnÚmsgÚistopÚitnÚAnormÚAcondÚrnormÚynormÚxtyper(   Úr1ÚyÚbeta1ÚbnormÚwÚr2ÚsÚtÚzÚepsaÚoldbÚbetaÚdbarÚepslnÚqrnormÚphibarÚrhs1Úrhs2Útnorm2ÚgmaxÚgminÚcsÚsnÚw2ÚvÚalfaÚoldepsÚdeltaÚgbarÚrootÚArnormÚgammaÚphiÚdenomÚw1ÚepsxÚepsrÚdiagÚtest1Útest2Út1Út2ÚprntÚstr1Ústr2Ústr3ÚinfosI                                                                            úm/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/sparse/linalg/_isolve/minres.pyr   r      sŠ  € ôl ˜Q  2 qÓ)�J€A€qˆ!ˆQä" 1”o�d¬5€GØ�X‰X€FØ�X‰X€Fà€EØ€Dà	�‰�‰
€Aà€Ø�a‘%ˆò
C€Cñ ÜˆeÐ4Ñ4Ô5Üˆe˜
 1 R &¨¸¸f°~ÐFÑFÔGÜˆe˜
 7¨2 ,¨o¸dÀ5¸\ÐJÑJÔKÜŒà€EØ
€CØ€EØ€EØ€EØ€Eà�G‰G€Eä
�‹,×
Ñ
€Cð 
€zØ�V‰V‹X‰à��1‘‰WˆÙˆr‹
€Aá�B˜‹N€Eàˆq‚yÜÐ4Ó5Ð5Ø	�!ŠØ�1ˆvˆä�‹G€EØ�‚zØˆØ�1ˆvˆä�—‘Ó€Eáñ �1‹IˆÙ�A‹YˆÙ�A�a‹LˆÙ�A�b‹MˆÜ��A‘‹JˆØ�C‘˜3 ™>Ñ)ˆØˆtŠ8ÜÐ3Ó4Ð4ñ �A‹YˆÙ�A�a‹LˆÙ�B�r‹NˆÜ��A‘‹JˆØ�C‘˜3 ™>Ñ)ˆØˆtŠ8ÜÐ;Ó<Ð<ð €DØ€DØ€DØ€EØ€FØ€FØ€DØ€DØ€FØ€DÜ�‹<×Ñ€DØ	€BØ	
€BÜˆa�uÔ€AÜ	ˆq˜Ô	€BØ	€BáÜŒÜŒÜÐTÔUà
�‹-Øˆq‰ˆà�‰HˆØˆa‰Cˆá�1‹IˆØ�˜‘	‰Mˆà�!Š8Ø�T˜$‘Y ‘NÑ"ˆAá�q˜‹|ˆØ��d‘˜B‘ÑˆØˆØˆÙ�2‹JˆØˆÙ�r˜!‹}ˆØ�!Š8ÜÐ3Ó4Ð4Ü�D—I‘I‹ˆØ�$˜‘'˜D !™GÑ# d¨A¡gÑ-Ñ-ˆà�!Š8Ø�E‰z˜R ™VÒ#Ø�ð ˆØ�T‘	˜B ™IÑ%ˆØ�D‰y˜2 ™9Ñ$ˆØ�T‘	ˆØˆt�d‰{ˆÜ�T˜4�LÓ!ˆØ˜$‘ˆô �d˜D�\Ó"×)Ñ)¨%Ó0ˆÜ�E˜3“ˆØ�E‰\ˆØ�E‰\ˆØ�6‰kˆØ�f‘ˆð �E‘	ˆØˆØˆØ�˜‘‰]˜U 2™XÑ%¨Ñ.ˆØ��A‘‰Iˆô �4˜ÓˆÜ�4˜ÓˆØ�5‰LˆØ�e˜A‘g‰~ˆØˆw�q‰yˆô �V—[‘[Ó!ˆÜ�Q“ˆØ�s‰{ˆØ�u‰}˜sÑ"ˆØ�u‰}˜tÑ#ˆØˆà�1Š9ØˆDàˆØˆØ�AŠ:˜ !šÜ‰Eà˜U 5™[Ñ)ˆEØ�AŠ:Ü‰Eà˜5‘LˆEð �T‘	ˆð
 �AŠ:Ø�U‘ˆBØ�U‘ˆBØ�QŠwØ�Ø�QŠwØ�à�gŠ~Ø�Ø˜˜C™ÒØ�Ø�uŠ}Ø�ð ˜Š}Ø�Ø˜Š}Ø�ð ˆØ�Š7ØˆDØ�"Š9ØˆDØ�'˜"‘*ÒØˆDØ�‰8�qŠ=ØˆDØ�R˜‘WÒØˆDØ�R˜‘WÒØˆDØ�D˜‘HÒØˆDØ�AŠ:ØˆDá‘DØ˜"�X˜Q˜q ™t E˜l¨!¨E°%¨=Ð9ˆDØ�u˜U�mÐ$ˆDØ�u˜T�l ! E¨$ <¨q°°e±¸DÐ0AÐBˆDä�$˜‘+ Ñ$Ô%à�R‰x˜1Š}Ü”àÐÙ�QŒKà�AŠ:Øðu �Œ-ñx ÜŒÜˆd�| E¨" :Ð-CÀCÈÀ8ÐLÑLÔMÜˆd�| E¨% =°ÀÀe¸}ÐMÑMÔNÜˆd�| E¨% =°ÀÀe¸}ÐMÑMÔNÜˆd�| F¨5 >Ð2Ñ2Ô3Üˆd�S˜˜q™‘\Ñ!Ô"à�‚zØˆð ˆdˆ8€Oð ˆàˆdˆ8€Oó    )N)Únumpyr   r   r   r   r   r   Únumpy.linalgr	   Úmathr
   Úscipy._lib._array_apir   Úutilsr   Ú__all__r   © rq   rp   ú<module>ry      sN   ðß >× >Ý Ý å 1å àˆ*€ñ ˜Ôðn $¨c¸4Ø˜D u°Eónó ñnrq   