ó
    Û“,jü  ã                   ó@  • S r SSKrSSK7  SSKrSSKJr  SSKJr  SSKJr  SSKr	SSK
JrJr  SS	KJrJr  S
rS r " S S\5      r " S S\5      r " S S\R(                  5      r\R,                  " 5       R/                  \5      r\S:X  a   \R<                  " 5         gg)zR
Author(s): Matthew Loper

See LICENCE.txt for licensing and contact information.
é    N)Ú*é   )Úch)Úminimize©ÚCh)ÚrosenÚ	rosen_der)ÚrowÚcolFc                  ó€   • [        S5      [        S5      S.n [        S U 5      n[        S U 5      nX/nX0S   U S   /4$ )Ng      ^Àg      YÀ©Úx1Úx2c                 ó   • XS-  -
  S-  $ )Nç       @g      $@© r   s     Ú¦C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\chumpy/test_optimization.pyÚ<lambda>ÚRosen.<locals>.<lambda>   s   € ˜R b¡&™[¨CÒ/ó    c                 ó   • U S-  S-   $ )Ng      ð¿r   r   )r   s    r   r   r      s   € ˜˜S™ 1šr   r   r   r   )ÚargsÚr1Úr2Úfuncs       r   ÚRosenr      sR   € ô �‹iÜ�‹iñ€Dô 
Ñ/°Ó	6€BÜ	Ñ$ dÓ	+€Bàˆ8€Dà�t‘*˜d 4™jÐ)Ð)Ð)r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)ÚMadsené$   ©Úxc                 ó  • U R                   R                  S   nU R                   R                  S   n[        R                  " US-  US-  -   X-  -   [        R                  " U5      [        R
                  " U5      45      nU$ )Nr   r   é   )r"   ÚrÚnpÚarrayÚsinÚcos)Úselfr   r   Úresults       r   Ú	compute_rÚMadsen.compute_r&   sj   € Ø�V‰V�X‰X�a‰[ˆØ�V‰V�X‰X�a‰[ˆÜ—’Ø�‰E�B˜‘E‰M˜B™GÑ#Ü�FŠF�2‹JÜ�FŠF�2‹Jð
ó ˆð
 ˆr   c                 óZ  • XR                   La  g [        R                  " S5      nU R                   R                  S   nU R                   R                  S   nSU-  U-   US'   SU-  U-   US'   [        R                  " U5      US'   SUS'   SUS	'   [        R
                  " U5      * US
'   U$ )N)é   r$   r   r   r   )r   r   )r   r   )r   r   )r   r   )r$   r   )r$   r   )r"   r&   Úzerosr%   r)   r(   )r*   ÚwrtÚjacr   r   s        r   Úcompute_dr_wrtÚMadsen.compute_dr_wrt0   s›   € Ø—f‘fÒØÜ�hŠh�u‹oˆØ�V‰V�X‰X�a‰[ˆØ�V‰V�X‰X�a‰[ˆØ˜‘7˜R‘<ˆˆC‰Ø˜‘7˜R‘<ˆˆC‰ä—6’6˜"“:ˆˆC‰ØˆˆC‰àˆˆC‰Ü—F’F˜2“J�;ˆˆC‰àˆ
r   c                 óL   • [        U5      U l        [        U R                  5      $ ©N©r   r"   r   r%   ©r*   Úx_ins     r   Úset_and_get_rÚMadsen.set_and_get_rB   ó   € Ü�D“ˆŒÜ�4—6‘6‹{Ðr   c                 óX   • [        U5      U l        U R                  U R                  5      $ r6   )r   r"   Údr_wrtr8   s     r   Úset_and_get_drÚMadsen.set_and_get_drF   s    € Ü�D“ˆŒØ�{‰{˜4Ÿ6™6Ó"Ð"r   N)
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údtermsr,   r3   r:   r?   Ú__static_attributes__r   r   r   r   r   $   s   † Ø€Fòòò$õ#r   r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚRosenChéM   r!   c                 ól   • [         R                  " [        U R                  R                  5      5      nU$ r6   )r&   r'   r	   r"   r%   )r*   r+   s     r   r,   ÚRosenCh.compute_rO   s!   € ä—’œ5 §¡§¡›?Ó-ˆàˆr   c                 óL   • [        U5      U l        [        U R                  5      $ r6   r7   r8   s     r   r:   ÚRosenCh.set_and_get_rU   r<   r   c                 ót   • [        U5      U l        U R                  U R                  5      R                  5       $ r6   )r   r"   r>   Úflattenr8   s     r   r?   ÚRosenCh.set_and_get_drY   s)   € Ü�D“ˆŒØ�{‰{˜4Ÿ6™6Ó"×*Ñ*Ó,Ð,r   c                 óÚ  • XR                   L GaÜ  [        (       Ga¨  SS KJn  [        R
                  " U R                  S-  5      n[        SU4-  5        [        S[        U R                   R                  5      < 35        UR                  " S5        [        U S5      (       d  / U l        / U l        / U l        U R                  R                  U5        U R                  R                  U R                   R                  S   5        U R                  R                  U R                   R                  S   5        UR                  " 5         UR                   " SSS5        UR"                  " U R                  5        UR                   " SSS5        UR"                  " U R                  U R                  5        UR$                  " 5         ['        [)        U R                   R                  5      5      $ g )Nr   r$   z------> RESIDUALS %.2ez------> CURRENT GUESS é{   Úvsr   )r"   Ú	visualizeÚmatplotlib.pyplotÚpyplotr&   Úsumr%   ÚprintÚstrÚfigureÚhasattrrS   ÚxsÚysÚappendÚclfÚsubplotÚplotÚdrawr   r
   )r*   r1   ÚpltÚ	residualss       r   r3   ÚRosenCh.compute_dr_wrt^   s<  € Ø—&‘&‹=ß‹yÝ/ÜŸFšF 4§6¡6¨1¡9Ó-�	ÜÐ.°)°Ñ=Ô>Ý´C¸¿¹¿¹µMÐCÔDØ—
’
˜3”ä˜t T×*Ñ*Ø �D”GØ �D”GØ �D”GØ—‘—‘˜yÔ)Ø—‘—‘˜tŸv™vŸx™x¨™{Ô+Ø—‘—‘˜tŸv™vŸx™x¨™{Ô+Ø—’”	Ø—’˜A˜a Ô"Ø—’˜Ÿ™Ô!Ø—’˜A˜a Ô"Ø—’˜Ÿ™ $§'¡'Ô*Ø—’”
ô ”y §¡§¡Ó*Ó+Ð+ð/ r   )rS   r"   r\   r]   N)
rA   rB   rC   rD   rE   r,   r:   r?   r3   rF   r   r   r   rH   rH   M   s   † Ø€Fòòò-õ
,r   rH   c                   ó\   • \ rS rSrS rS r\R                  " S5      S 5       rS r	S r
Srg	)
ÚTestOptimizationéz   c                 óÈ   • [        5       u  p[        XSSSS.S9  U R                  US   R                  S   S:H  5        U R                  US   R                  S   S:H  5        g )	NÚdoglegiQ  F©ÚmaxiterÚdisp©ÚfunÚx0ÚmethodÚoptionsr   ç      ð?r   )r   r   Ú
assertTruer%   )r*   ÚobjÚfreevarss      r   Útest_dogleg_rosenÚ"TestOptimization.test_dogleg_rosen|   sY   € Ü›‰ˆÜ�S¨hÈCÐY^Ñ@_Ò`Ø�‰˜ ™Ÿ™ aÑ(¨"Ñ,Ô-Ø�‰˜ ™Ÿ™ aÑ(¨"Ñ,Õ-r   c                 óò   • [        [        [        R                  " S5      5      S9n[	        XR
                  /SSSS.S9  U R                  [        R                  " UR                  S-  5      S-  S	:  5        g )
N©g      @rs   r!   rj   é"   Frk   rn   r$   g»žò¾Ø?)	r   r   r&   r'   r   r"   rt   rW   r%   )r*   ru   s     r   Útest_dogleg_madsenÚ#TestOptimization.test_dogleg_madsen‚   sY   € ÜœœBŸHšH WÓ-Ó.Ñ/ˆÜ�SŸe™e˜W¨XÈ2ÐW\Ñ?]Ò^Ø�‰œŸš˜sŸu™u a™xÓ(¨Ñ*¨^Ñ;Õ<r   z2negative sign in exponent screws with reverse modec                 óÊ   • SSK Jn  [        5       u  p#U" USSUS9  U R                  US   R                  S   S:H  5        U R                  US   R                  S   S:H  5        g )Nr   )Úminimize_bfgs_lsqi¥  F)ru   ÚnitersÚverboseÚfree_variablesr   rs   )Úoptimizationr   r   rt   r%   )r*   r   ru   rv   s       r   Útest_bfgs_rosenÚ TestOptimization.test_bfgs_rosen‡   sX   € å3Ü›‰ˆÙ˜c¨#°uÈXÒVØ�‰˜ ™Ÿ™ aÑ(¨"Ñ,Ô-Ø�‰˜ ™Ÿ™ aÑ(¨"Ñ,Õ-r   c                 ót  ^^• SSK Jm  SS Kn[        U4S j5      mU4S jnU4S jn[        R
                  " S5      nUR                  R                  X$USSS	9nU R                  TR                  S
-  S5        UTl
        [        TTR                  /SSSS.S9  U R                  TR                  S
-  S5        g )Nr   )ÚSumOfSquaresr   c                 ó"   >• T" [        U S95      $ )Nr!   )r   )r"   r‡   s    €r   r   Ú3TestOptimization.test_bfgs_madsen.<locals>.<lambda>’   s   ø€ ™L¬°A©Ô7r   c                 ó<   >• [        U 5      Tl        TR                  $ r6   )r   r"   r%   ©r"   ru   s    €r   ÚerrfuncÚ2TestOptimization.test_bfgs_madsen.<locals>.errfunc”   s   ø€ Ü�q“EˆCŒEØ—5‘5ˆLr   c                 óv   >• [        U 5      Tl        TR                  TR                  5      R                  5       $ r6   )r   r"   r>   Úravelr‹   s    €r   ÚgradfuncÚ3TestOptimization.test_bfgs_madsen.<locals>.gradfunc˜   s*   ø€ Ü�q“EˆCŒEØ—:‘:˜cŸe™eÓ$×*Ñ*Ó,Ð,r   rz   é   )Úfprimerl   rm   r   gš™™™™™Ù?ÚbfgsFrk   rn   )r   r‡   Úscipy.optimizer   r&   r'   ÚoptimizeÚ	fmin_bfgsÚ
assertLessr%   r"   r   )r*   ÚscipyrŒ   r�   rp   r   r‡   ru   s         @@r   Útest_bfgs_madsenÚ!TestOptimization.test_bfgs_madsen�   s�   ù€ Ý$ÛÜÔ7Ó9ˆõ	õ	-ô �XŠX�hÓˆð �^‰^×%Ñ% g¸(ÈAÐTUÐ%ÐVˆà�‰˜Ÿ™˜b™ #Ô&ð ˆŒÜ�S˜cŸe™e˜W¨VÈÐTYÑ=ZÒ[Ø�‰˜Ÿ™˜b™ #Õ&r   c                 ó   • S n[         R                  " S5      n[         R                  " S5      n[        U" X#5      USS U/SSS0S9  [         R                  " S5      n[         R                  " S5      n[        U" XE5      USS	 S S
 U/SSS0S9  [        R                  R                  X$5        [        R                  R                  X55        g )Nc                 óT   • SU -
  X-  -   nSU -
  XS-  -  -   nSU -
  XS-  -  -   nX#US.$ )Ng      ø?g      @r$   g      @r/   )Úe1Úe2Úe3r   )r"   Úyrž   rŸ   r    s        r   ÚbealesÚ3TestOptimization.test_nested_select.<locals>.beales¬   sD   € Ø�q‘˜1™3‘ˆBØ˜‘˜Q 1¡™XÑ%ˆBØ˜‘˜Q 1¡™XÑ%ˆBØ¨bÑ1Ð1r   é
   r   é   rj   rm   F)rp   rq   rr   r’   r/   )r   r0   r   r&   ÚtestingÚassert_array_equal)r*   r¢   r   Úy1r   Úy2s         r   Útest_nested_selectÚ#TestOptimization.test_nested_select«   s°   € ò	2ô �XŠX�b‹\ˆÜ�XŠX�b‹\ˆô 	‘˜“ R¨¨! W¨b M¸(ÈVÐUZÈOÒ\ä�XŠX�b‹\ˆÜ�XŠX�b‹\ˆô 	‘˜“ R¨¨! W¨R¨a [°"Ð$5¸hÐQWÐY^ÐP_Ò`Ü
�
‰
×%Ñ% bÔ-Ü
�
‰
×%Ñ% bÕ-r   r   N)rA   rB   rC   rD   rw   r|   ÚunittestÚskipr„   rš   rª   rF   r   r   r   rg   rg   z   s5   † ò.ò=ð
 ‡]‚]ÐGÓHñ.ó Ið.ò'õ8.r   rg   Ú__main__)!Ú__doc__ÚtimeÚnumpyr¬   Ú r   rƒ   r   r   r&   r•   r	   r
   Úutilsr   r   rT   r   r   rH   ÚTestCaserg   Ú
TestLoaderÚloadTestsFromTestCaseÚsuiterA   rU   rV   rc   ÚionÚmainÚpdbÚ	set_tracer   r   r   Ú<module>r¼      s™   ðñó Ü Û Ý Ý "Ý Û ß +ß ð €	ò*ô$#ˆRô $#ôR),ˆbô ),ôZD.�x×(Ñ(ô D.ðN 	×ÒÓ×3Ñ3Ð4DÓE€àˆzÓàð 	�Š�ð r   