ó
    EñiÚ  ã                   ó¸   • S r SSKrSSKJr  SSKJrJr  SSKJ	r	  SSK
Jr  SSKJr  SS	KJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr  SS
 jrS rS rSS.S jr g)zWThe adaptation of Trust Region Reflective algorithm for a linear
least-squares problem.é    N)Únorm)ÚqrÚsolve_triangular)Úlsmr)ÚOptimizeResulté   )Úgivens_elimination)ÚEPSÚstep_size_to_boundÚfind_active_constraintsÚ	in_boundsÚmake_strictly_feasibleÚbuild_quadratic_1dÚevaluate_quadraticÚminimize_quadratic_1dÚCL_scaling_vectorÚreflective_transformationÚprint_header_linearÚprint_iteration_linearÚcompute_gradÚregularized_lsq_operatorÚright_multiplied_operatorc                 óÐ  • U(       a  UR                  5       nUR                  5       n[        X'XT   5        [        R                  " [        R                  " U5      5      n[
        [        X5      -  [        R                  " U5      -  n	[        R                  " X‰:„  5      u  n
U[        R                  " Xª5         nXz   n[        R                  " U5      n[        X'5      X´U
   '   U$ )a^  Solve regularized least squares using information from QR-decomposition.

The initial problem is to solve the following system in a least-squares
sense::

    A x = b
    D x = 0

where D is diagonal matrix. The method is based on QR decomposition
of the form A P = Q R, where P is a column permutation matrix, Q is an
orthogonal matrix and R is an upper triangular matrix.

Parameters
----------
m, n : int
    Initial shape of A.
R : ndarray, shape (n, n)
    Upper triangular matrix from QR decomposition of A.
QTb : ndarray, shape (n,)
    First n components of Q^T b.
perm : ndarray, shape (n,)
    Array defining column permutation of A, such that ith column of
    P is perm[i]-th column of identity matrix.
diag : ndarray, shape (n,)
    Array containing diagonal elements of D.

Returns
-------
x : ndarray, shape (n,)
    Found least-squares solution.
)Úcopyr	   ÚnpÚabsÚdiagr
   ÚmaxÚnonzeroÚix_Úzerosr   )ÚmÚnÚRÚQTbÚpermr   Úcopy_RÚvÚ
abs_diag_RÚ	thresholdÚnnsÚxs               Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/scipy/optimize/_lsq/trf_linear.pyÚregularized_lsq_with_qrr.      sª   € ö@ Ø�F‰F‹HˆØ�‰‹
€Aä�q˜T™ZÔ(ä—’œŸš ›
Ó#€JÜ”c˜!“i‘¤"§&¢&¨Ó"4Ñ4€IÜ�:Š:�jÑ,Ó-�D€Cà	Œ"�&Š&�Ó
Ñ€AØ	‰€Aä
�Š�‹€AÜ# AÓ)€Aˆ3�i�Là€Hó    c                 ó8  • Sn [        X(U-  -   Xg5      u  pšX’-
  n[        XU5      * nUSU-  U-  :”  a  OUS-  nM8  [        X–U5      n[        R                  " US:g  5      (       a2  [        X$U-  U-  -   Xg5      u  pš[        X–USS9n	X’-
  n[        XU5      * nX+U4$ )z=Find an appropriate step size using backtracking line search.r   gš™™™™™¹¿ç      à?r   ©Úrstep)r   r   r   r   Úanyr   )ÚAÚgr,   ÚpÚthetaÚp_dot_gÚlbÚubÚalphaÚx_newÚ_ÚstepÚcost_changeÚactives                 r-   ÚbacktrackingrB   E   sÀ   € à€EØ
Ü,¨Q¸±©]¸BÓC‰ˆØ‰yˆÜ)¨!°Ó5Ð5ˆØ˜ ™¨Ñ/Ó/ØØ�‰ˆñ ô % U°Ó3€FÜ	‡v‚vˆf˜‰k×ÑÜ,¨Q¸±ÀÑ1BÑ-BÀBÓK‰ˆÜ& u°"¸AÑ>ˆØ‰yˆÜ)¨!°Ó5Ð5ˆà�KÐÐr/   c
                 ól  • [        X-   Xx5      (       a  U$ [        XXx5      u  p«[        R                  " U5      nXËR	                  [
        5      ==   S-  ss'   Xl-  nXJ-  nXZ-  nX-   n[        XíXx5      u  nnSU	-
  U-  nXù-  nUS:”  a+  [        XXÅUS9u  nnn[        UUUUUS9u  nnX\U-  -   nXl-  nO[        R                  nXY-  nXI-  n[        XXSS9nU* nUU-  n[        U UXx5      u  nnUU	-  n[        XUUS9u  nn[        UUSU5      u  nnUU-  nUU:  a  UU:  a  U$ UU:  a  UU:  a  U$ U$ )zDSelect the best step according to Trust Region Reflective algorithm.éÿÿÿÿr   r   )Ús0r   )Úc)r   )
r   r   r   r   ÚastypeÚboolr   r   Úinfr   )r,   ÚA_hÚg_hÚc_hr7   Úp_hÚdr:   r;   r8   Úp_strideÚhitsÚr_hÚrÚ
x_on_boundÚ
r_stride_ur>   Ú
r_stride_lÚaÚbrF   Úr_strideÚr_valueÚp_valueÚag_hÚagÚag_stride_uÚ	ag_strideÚag_values                                r-   Úselect_stepr`   Z   s†  € ä�‘˜×ÑØˆä'¨¨bÓ5�N€HÜ
�'Š'�#‹,€CØ�‰”DÓÓ˜bÑ ÓØ	‰€Að �M€AØ�O€CØ‘€Jô ' z°bÓ=�M€J�ð �e‘)˜zÑ)€JØÑ€Jà�Aƒ~Ü$ S¨sÀÑE‰ˆˆ1ˆaÜ1Øˆq�*˜j¨Añ/Ñˆ�'à˜(‘NÑ"ˆØ‰G‰ä—&‘&ˆð �L€CØ�J€AÜ  ¨3Ñ9€Gàˆ4€DØ	
ˆT‰€BÜ'¨¨2¨rÓ6�N€K�Ø�5Ñ€KÜ˜c¨°3Ñ7�D€A€qÜ/°°1°a¸ÓEÑ€IˆxØˆ)�O€Bà�Ó˜W xÓ/ØˆØ	�7Ó	˜w¨Ó1Øˆàˆ	r/   )Úlsmr_maxiterc
                óL  • U R                   u  p¼[        X#U5      u  pÞ[        XÓUSS9nUS:X  ar  [        U SSS9u  nnnUR                  nX¼:  a0  [
        R                  " U[
        R                  " XË-
  U45      45      n[
        R                  " U5      n[        X¼5      nO1US:X  a+  [
        R                  " X¼-   5      nSnUc  S	U-  nOUS
:X  a  SnU R                  U5      U-
  n[        U U5      nS[
        R                  " UU5      -  nUnS nS nS nUc  SnU	S:X  a
  [        5         [        U5       GHÌ  n[        UUX45      u  nnUU-  n [        U [
        R                  S9n!U!U:  a  SnU	S:X  a  [!        UUUUU!5        Ub    GO}UU-  n"U"S-  n#US-  n$U$U-  n%[#        U U$5      n&US:X  a*  WR                  U5      WS W& [%        X¼WU$W   -  UUU#SS9* n'OZUS:X  aT  ['        U&U#5      n(UWS U& W(       a,  S	[        SU!5      -  n)[)        [*        [        SU)U!-  5      5      n[-        U(UU
XwS9S   * n'U$W'-  n*[
        R                  " U*U5      n+U+S:”  a  SnS[        SU!5      -
  n,[/        UU&U%U"U*U'U$X4U,5
      n-[1        U UU-5      * nUS:  a  [3        U UUU*U,U+X45      u  nn-nO[        UU--   X4SS9n[        U-5      nU R                  U5      U-
  n[        U U5      nUUU-  :  a  SnS[
        R                  " UU5      -  nGMÏ     Uc  Sn[5        XÓXES9n.[7        UUUW!U.WS-   UUS9$ )Ngš™™™™™¹?r2   ÚexactÚeconomicT)ÚmodeÚpivotingr   Fg{®Gáz„?Úautor1   éd   é   )Úordr   )r'   )ÚmaxiterÚatolÚbtolr   rD   g{®Gázt?)Úrtol)r,   ÚfunÚcostÚ
optimalityÚactive_maskÚnitÚstatusÚinitial_cost)Úshaper   r   r   ÚTr   Úvstackr!   ÚminÚdotr   r   Úranger   r   rI   r   r   r.   r   r   r
   r   r`   r   rB   r   r   )/r5   rW   Úx_lsqr:   r;   ÚtolÚ
lsq_solverÚlsmr_tolÚmax_iterÚverbosera   r"   r#   r,   r>   ÚQTr$   r&   ÚQTrÚkÚr_augÚauto_lsmr_tolrR   r6   rp   ru   Útermination_statusÚ	step_normr@   Ú	iterationr(   ÚdvÚg_scaledÚg_normÚdiag_hÚdiag_root_hrN   rK   rJ   rM   Úlsmr_opÚetar7   r9   r8   r?   rr   s/                                                  r-   Ú
trf_linearr‘   Ž   s”  € à�7‰7�D€AÜ$ U°Ó3�D€AÜ˜q b°Ñ4€Aà�WÓÜ˜ °dÑ;‰ˆˆAˆtØ�T‰Tˆà‹5Ü—	’	˜1œbŸhšh¨©¨q zÓ2Ð3Ó4ˆAä�hŠh�q‹kˆÜ�‹I‰Ø	�vÓ	Ü—’˜™“ˆØˆØÑØ˜c‘z‰HØ˜ÓØ ˆMà	�‰ˆa‹�1‰€AÜ�Q˜Ó€AØ”—’˜˜1“Ñ€DØ€LàÐØ€IØ€KàÑØˆà�!ƒ|ÜÔä˜8—_ˆ	Ü! ! Q¨Ó/‰ˆˆ2Ø�q‘5ˆÜ�h¤B§F¡FÑ+ˆØ�C‹<Ø!"Ðà�a‹<Ü" 9¨d°KØ#,¨fô6ð Ñ)Úà�R‘ˆØ ‘mˆØ�‰HˆØ�!‰eˆä'¨¨1Ó-ˆØ˜Ó Ø—f‘f˜Q“iˆC��ˆGÜ*¨1°°Q°t±W±¸cÀ4Ø+6¸uñFð F‰Cà˜6Ó!Ü.¨s°KÓ@ˆGØˆE�"�1ˆIÞØœS  fÓ-Ñ-�Üœs¤C¨¨S°6©\Ó$:Ó;�Ü˜ °Ø%ñ6Ø67ñ9ð 9ˆCð �‰Gˆä—&’&˜˜A“,ˆØ�Q‹;Ø!#Ðà”C˜˜vÓ&Ñ&ˆÜ˜1˜c 3¨°°3¸¸2À5ÓIˆÜ)¨!¨Q°Ó5Ð5ˆð
 ˜‹?Ü#/Ø�1�a˜˜E 7¨Bó$4Ñ ˆAˆt‘[ô ' q¨4¡x°¸qÑAˆAä˜“Jˆ	Ø�E‰E�!‹H�q‰LˆÜ˜˜AÓˆà˜˜t™Ó#Ø!"Ðà”R—V’V˜A˜q“\Ñ!‹ñw %ðz Ñ!ØÐä)¨!°Ñ>€KäØ
�˜¨&¸kØ˜‰MÐ"4Ø!ñ#ð #r/   )T)!Ú__doc__Únumpyr   Únumpy.linalgr   Úscipy.linalgr   r   Úscipy.sparse.linalgr   Úscipy.optimizer   r	   Úcommonr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   rB   r`   r‘   © r/   r-   Ú<module>rš      sQ   ðñã Ý ß -Ý $Ý )å 2÷9÷ 9÷ 9÷ 9ñ 9ô0òf ò*1ðj 37ök#r/   