L idZddlZddlZddlmZddlmZddlm Z m Z Gdde Z dd Z dd Zdd Zd Zd Zy)z, Spectral Algorithm for Nonlinear Equations N)OptimizeResult)_check_unknown_options)_nonmonotone_line_search_cruz_nonmonotone_line_search_chengc eZdZy)_NoConvergenceN)__name__ __module__ __qualname__^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/optimize/_spectral.pyr r srr c *+,t|| dvrtd| dd,| *fd} |+,fd},fd}dg}t||||||\}}}+}}d}+*| }||}tj+g| }d }*}d }d } ||}|rt d |d|dd|d| ||||||z|zkrd}d }nt |d| z kDrd| z tj|z}nt || kr| }| |z}| |||} | dk(rt||||| \}!}"}#}$n| dk(rt|||+||| \}!}"}#}$}}"|z }%$|z }&tj|%|%tj|%|&z }|"}|$}#+| dk(r|j|#|dz }t|||}'t||}(t|'|||(|d|d})|)S#t$rY 0`` and ``sum(eta, k=0..inf) < inf``. Default: ``||F||**2 / (1 + k)**2``. sigma_eps : float, optional The spectral coefficient is constrained to ``sigma_eps < sigma < 1/sigma_eps``. Default: 1e-10 sigma_0 : float, optional Initial spectral coefficient. Default: 1.0 M : int, optional Number of iterates to include in the nonmonotonic line search. Default: 10 line_search : {'cruz', 'cheng'} Type of line search to employ. 'cruz' is the original one defined in [Martinez & Raydan. Math. Comp. 75, 1429 (2006)], 'cheng' is a modified search defined in [Cheng & Li. IMA J. Numer. Anal. 29, 814 (2009)]. Default: 'cruz' References ---------- .. [1] "Spectral residual method without gradient information for solving large-scale nonlinear systems of equations." W. La Cruz, J.M. Martinez, M. Raydan. Math. Comp. **75**, 1429 (2006). .. [2] W. La Cruz, Opt. Meth. Software, 29, 24 (2014). .. [3] W. Cheng, D.-H. Li. IMA J. Numer. Anal. **29**, 814 (2009). )chengcruzzInvalid value z for 'line_search'cd|zdzz S)Nrrr )kxFf_0s r eta_strategyz#_root_df_sane..eta_strategyJs!a%!# #rcdz zS)N?r )rf_knexps rfnormz_root_df_sane..fnormOsT? "rcHtjj|zSN)nplinalgnorm)rrs rfmeritz_root_df_sane..fmeritSsyy~~a $&&rrrFz&too many function evaluations requiredTziter z : ||F|| = gz , sigma = zsuccessful convergencerr)etar)shapezdf-sane)rsuccessmessagefunnfevnitmethod)r ValueError _wrap_func collectionsdequeprintabsr!signrrr vdotappend _wrap_resultr)-funcx0argsftolfatolmaxfevrcallbackdispMr sigma_epssigma_0 line_searchunknown_optionsr$r+fx_kx_shapeF_k is_complexrsigma_kF_0_normprev_fsQC convergedr)F_k_normdr&alphaxpfpFps_ky_krrresultrrrs- @@@r _root_df_sanerYsb?+++>+8JKLL D $ } #' 3D,6tR7;VT-K)AsGS#z A CGSzHq)G A AI6G :  E!Jxl*WQKH I   S#  dXo- -.GI  w.wrap_funcsv|v%$&& aLA La ((2A 4>D>*002Aa Aq Aa4Krcdk\r tdxxdz cc<|j}tj|gj }|}||fSr\)r r^r!r_r`) rrrEr:r$r8r=rdres rrfz_wrap_func..wrap_funcse|v%$&& aLA L (#A 4>D>*002Aq Aa4Kr)r!r_r'r` iscomplexobjra) r8r9r$rdr=r:rrIrfres ` ```` @rr/r/sP BBxxH 4?T?#))+A$:(:J BIaL  2  !    b(F1Iq* <gYniNNF Ng|=rr)r r )__doc__r0numpyr!scipy.optimizerscipy.optimize._optimizer _linesearchrr Exceptionr rYr/r7r]rar rrr{sS);V Y FJLP