Ë
    âQ(hÚ  ã                   ó´   — d Z ddlZddlm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mZmZmZmZmZmZmZmZmZmZmZmZmZmZ dd
„Zd„ Zd„ Zddœd„Z y)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                 óÊ  — |r|j                  «       }|j                  «       }t        ||||   «       t        j                  t        j                  |«      «      }t
        t        | |«      z  t        j                  |«      z  }	t        j                  ||	kD  «      \  }
|t        j                  |
|
«         }||
   }t        j                  |«      }t        ||«      |||
   <   |S )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               ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/optimize/_lsq/trf_linear.pyÚregularized_lsq_with_qrr.      sº   € ñ@ Ø�F‰F‹HˆØ�‰‹
€Aä�q˜!˜T $™ZÔ(ä—‘œŸ™ ›
Ó#€JÜ”c˜!˜Q“i‘¤"§&¡&¨Ó"4Ñ4€IÜ�:‰:�j 9Ñ,Ó-�D€Cà	Œ"�&‰&��cÓ
Ñ€AØ	ˆ#‰€Aä
�‰�‹€AÜ# A qÓ)€A€dˆ3�i�Là€Hó    c                 óH  — d}	 t        |||z  z   ||«      \  }	}
|	|z
  }t        | ||«       }|d|z  |z  kD  rn|dz  }Œ;t        |	||«      }t        j                  |dk7  «      r;t        |||z  |z  z   ||«      \  }	}
t        |	||d¬«      }	|	|z
  }t        | ||«       }|||fS )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‰ˆˆqØ�q‰yˆÜ)¨!¨Q°Ó5Ð5ˆØ˜ ™¨Ñ/Ò/ØØ�‰ˆð ô % U¨B°Ó3€FÜ	‡v�vˆf˜‰kÔÜ,¨Q°¸±ÀÑ1BÑ-BÀBÈÓK‰ˆˆqÜ& u¨b°"¸AÔ>ˆØ�q‰yˆÜ)¨!¨Q°Ó5Ð5ˆàˆd�KÐÐr/   c
                 óœ  — t        | |z   ||«      r|S t        | |||«      \  }
}t        j                  |«      }||j	                  t
        «      xx   dz  cc<   ||z  }||
z  }||
z  }| |z   }t        ||||«      \  }}d|	z
  |z  }||	z  }|dkD  r5t        |||||¬«      \  }}}t        |||||¬«      \  }}|||z  z   }||z  }nt        j                  }||	z  }||	z  }t        ||||¬«      }| }||z  }t        | |||«      \  }}||	z  }t        ||||¬«      \  }}t        ||d|«      \  }}||z  }||k  r||k  r|S ||k  r||k  r|S |S )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±  € ä��Q‘˜˜BÔØˆä'¨¨1¨b°"Ó5�N€HˆdÜ
�'‰'�#‹,€CØˆ�‰”DÓÓ˜bÑ ÓØ	ˆC‰€Að ˆ�M€AØˆ8�O€CØ�Q‘€Jô ' z°1°b¸"Ó=�M€J�ð �e‘)˜zÑ)€JØ�%Ñ€Jà�A‚~Ü$ S¨#¨s°sÀÔE‰ˆˆ1ˆaÜ1Øˆq�*˜j¨Aô/Ñˆ�'à�C˜(‘NÑ"ˆØ�‰G‰ä—&‘&ˆð ˆ5�L€CØˆ�J€AÜ   c¨3°SÔ9€Gàˆ4€DØ	
ˆT‰€BÜ'¨¨2¨r°2Ó6�N€K�Ø�5Ñ€KÜ˜c 3¨°3Ô7�D€A€qÜ/°°1°a¸ÓEÑ€IˆxØˆ)�O€Bà�Ò˜W xÒ/ØˆØ	�7Ò	˜w¨Ò1Øˆàˆ	r/   )Úlsmr_maxiterc
                ó`  — | j                   \  }}t        |||«      \  }}t        |||d¬«      }|dk(  rtt        | dd¬«      \  }}}|j                  }||k  r/t        j                  |t        j                  ||z
  |f«      f«      }t        j                  |«      }t        ||«      }n.|dk(  r)t        j                  ||z   «      }d}|€d	|z  }n|d
k(  rd}| j                  |«      |z
  }t        | |«      }dt        j                  ||«      z  }|}d }d }d }|€d}|	dk(  r
t        «        t        |«      D �]Î  }t        ||||«      \  }}||z  } t        | t
        j                  ¬«      }!|!|k  rd}|	dk(  rt!        |||||!«       |� �n}||z  }"|"dz  }#|dz  }$|$|z  }%t#        | |$«      }&|dk(  r.j                  |«      d  t%        |||$   z  |||#d¬«       }'nX|dk(  rSt'        |&|#«      }(|d | r,d	t        d|!«      z  })t)        t*        t        d|)|!z  «      «      }t-        |(||
||¬«      d    }'|$'z  }*t        j                  |*|«      }+|+dkD  rd}dt        d|!«      z
  },t/        ||&|%|"|*|'|$|||,«
      }-t1        | ||-«       }|dk  rt3        | |||*|,|+||«      \  }}-}nt        ||-z   ||d¬«      }t        |-«      }| j                  |«      |z
  }t        | |«      }|||z  k  rd}dt        j                  ||«      z  }�ŒÑ |€d}t5        ||||¬«      }.t7        |||!|.dz   ||¬«      S )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€qÜ$ U¨B°Ó3�D€A€qÜ˜q " b°Ô4€Aà�WÒÜ˜ °dÔ;‰ˆˆAˆtØ�T‰TˆàˆqŠ5Ü—	‘	˜1œbŸh™h¨¨A©¨q zÓ2Ð3Ó4ˆAä�h‰h�q‹kˆÜ��1‹I‰Ø	�vÒ	Ü—‘˜˜Q™“ˆØˆØÐØ˜c‘z‰HØ˜ÒØ ˆMà	�‰ˆa‹�1‰€AÜ�Q˜Ó€AØ”—‘˜˜1“Ñ€DØ€LàÐØ€IØ€KàÐØˆà�!‚|ÜÔä˜8“_ó ;"ˆ	Ü! ! Q¨¨BÓ/‰ˆˆ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¨a°°Q°t±W±¸cÀ4Ø+6¸uôFð F‰Cà˜6Ò!Ü.¨s°KÓ@ˆGØˆE�"�1ˆIÙØœS  fÓ-Ñ-�Üœs¤C¨¨S°6©\Ó$:Ó;�Ü˜ °Ø%¨Hô6Ø67ñ9ð 9ˆCð �‰Gˆä—&‘&˜˜A“,ˆØ�QŠ;Ø!#Ðà”C˜˜vÓ&Ñ&ˆÜ˜1˜c 3¨°°3¸¸2¸rÀ5ÓIˆÜ)¨!¨Q°Ó5Ð5ˆð
 ˜Š?Ü#/Ø�1�a˜˜E 7¨B°ó$4Ñ ˆAˆt‘[ô ' q¨4¡x°°R¸qÔAˆAä˜“Jˆ	Ø�E‰E�!‹H�q‰LˆÜ˜˜AÓˆà˜˜t™Ò#Ø!"Ðà”R—V‘V˜A˜q“\Ñ!Šðw;"ðz Ð!ØÐä)¨!¨R°¸#Ô>€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/   