ó
    pñ:ix  ã                   ó,  • S r SSKrSSKJr  / SQrS rS rS rS r	S	 r
S
 rS rS rS rS rS r " S S\5      r\" 5       rS r " S S\5      r\" 5       rS rS rS rS rS rS rS rS r " S S\5      r\" 5       r " S S \5      r \ " 5       r!g)!zHCollection of Model instances for use with the odrpack fitting package.
é    N)ÚModel)r   ÚexponentialÚmultilinearÚ	unilinearÚ	quadraticÚ
polynomialc                 óh   • U S   U SS  p2UR                   S   S4Ul         X!U-  R                  SS9-   $ ©Nr   é   ©Úaxis)ÚshapeÚsum)ÚBÚxÚaÚbs       ÚT/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/scipy/odr/_models.pyÚ_lin_fcnr   
   s>   € ØˆQ‰4��1�2�€qØ�w‰w�q‰z˜1ˆo€A„Gà�!‘�y‰y˜aˆyÐ Ñ Ð ó    c                 óæ   • [         R                  " UR                  S   [        5      n[         R                  " X!R                  5       45      nU R                  S   UR                  S   4Ul        U$ ©Néÿÿÿÿ)ÚnpÚonesr   ÚfloatÚconcatenateÚravel)r   r   r   Úress       r   Ú_lin_fjbr       sQ   € Ü
�Š�—‘˜‘œUÓ#€AÜ
�.Š.˜!ŸW™W›Y˜Ó
(€CØ—‘˜‘˜aŸg™g b™kÐ*€C„IØ€Jr   c                 ó˜   • U SS  n[         R                  " X!R                  S   4UR                  S   -  SS9nUR                  Ul        U$ )Nr   r   r   r   )r   Úrepeatr   )r   r   r   s      r   Ú_lin_fjdr#      sD   € Ø	ˆ!ˆ"ˆ€AÜ
�	Š	�!—g‘g˜b‘k�^ A§G¡G¨B¡KÑ/°aÑ8€AØ�g‰g€A„GØ€Hr   c                 ó¾   • [        U R                  R                  5      S:X  a  U R                  R                  S   nOSn[        R                  " US-   4[
        5      $ ©Né   r   r   )Úlenr   r   r   r   r   )ÚdataÚms     r   Ú_lin_estr*      sF   € ô
 ˆ4�6‰6�<‰<Ó˜AÓØ�F‰F�L‰L˜‰O‰àˆä�7Š7�A˜‘E�8œUÓ#Ð#r   c                 óž   • U S   U SS  pCUR                   S   S4Ul         U[        R                  " U[        R                  " X5      -  SS9-   $ r
   ©r   r   r   Úpower)r   r   Úpowersr   r   s        r   Ú	_poly_fcnr/   ,   sJ   € ØˆQ‰4��1�2�€qØ�w‰w�q‰z˜1ˆo€A„GàŒr�vŠv�aœ"Ÿ(š( 1Ó-Ñ-°AÑ6Ñ6Ð6r   c                 ó  • [         R                  " [         R                  " UR                  S   [        5      [         R
                  " X5      R                  45      nU R                  S   UR                  S   4Ul        U$ r   )r   r   r   r   r   r-   Úflat)r   r   r.   r   s       r   Ú_poly_fjacbr2   3   s]   € Ü
�.Š.œ"Ÿ'š' !§'¡'¨"¡+¬uÓ5ÜŸ(š( 1Ó-×2Ñ2ð4ó 5€Cà—‘˜‘˜aŸg™g b™kÐ*€C„IØ€Jr   c                 óž   • U SS  nUR                   S   S4Ul         X2-  n[        R                  " U[        R                  " XS-
  5      -  SS9$ )Nr   r   r   r,   )r   r   r.   r   s       r   Ú_poly_fjacdr4   :   sJ   € Ø	ˆ!ˆ"ˆ€AØ�w‰w�q‰z˜1ˆo€A„Gà	‰
€Aä�6Š6�!”b—h’h˜q¨¡(Ó+Ñ+°!Ñ4Ð4r   c                 óF   • U S   [         R                  " U S   U-  5      -   $ ©Nr   r   ©r   Úexp©r   r   s     r   Ú_exp_fcnr:   C   ó"   € ØˆQ‰4”"—&’&˜˜1™ ™Ó"Ñ"Ð"r   c                 óF   • U S   [         R                  " U S   U-  5      -  $ )Nr   r7   r9   s     r   Ú_exp_fjdr=   G   r;   r   c                 óè   • [         R                  " [         R                  " UR                  S   [        5      U[         R
                  " U S   U-  5      -  45      nSUR                  S   4Ul        U$ )Nr   r   r&   )r   r   r   r   r   r8   )r   r   r   s      r   Ú_exp_fjbr?   K   sW   € Ü
�.Š.œ"Ÿ'š' !§'¡'¨"¡+¬uÓ5°q¼2¿6º6À!ÀAÁ$ÈÁ(Ó;KÑ7KÐLÓ
M€CØ�A—G‘G˜B‘KÐ €C„IØ€Jr   c                 ó2   • [         R                  " SS/5      $ )Nç      ð?)r   Úarray©r(   s    r   Ú_exp_estrD   Q   s   € ä�8Š8�R˜�HÓÐr   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )Ú_MultilinearModeléV   aÅ  
Arbitrary-dimensional linear model

This model is defined by :math:`y=\beta_0 + \sum_{i=1}^m \beta_i x_i`

Examples
--------
We can calculate orthogonal distance regression with an arbitrary
dimensional linear model:

>>> from scipy import odr
>>> import numpy as np
>>> x = np.linspace(0.0, 5.0)
>>> y = 10.0 + 5.0 * x
>>> data = odr.Data(x, y)
>>> odr_obj = odr.ODR(data, odr.multilinear)
>>> output = odr_obj.run()
>>> print(output.beta)
[10.  5.]

c           
      óP   >• [         TU ]  [        [        [        [
        SSSS.S9  g )NzArbitrary-dimensional Linearz y = B_0 + Sum[i=1..m, B_i * x_i]z&$y=\beta_0 + \sum_{i=1}^m \beta_i x_i$©ÚnameÚequÚTeXequ)ÚfjacbÚfjacdÚestimateÚmeta)ÚsuperÚ__init__r   r    r#   r*   ©ÚselfÚ	__class__s    €r   rR   Ú_MultilinearModel.__init__m   s.   ø€ Ü‰ÑÜœH¬H¼xØ8Ø;ØEñGð 	ò 	Hr   © ©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rR   Ú__static_attributes__Ú__classcell__©rU   s   @r   rF   rF   V   s   ø† ñ÷,Hó Hr   rF   c                 ó"  • [         R                  " U 5      nUR                  S:X  a  [         R                  " SUS-   5      n[	        U5      S4Ul        [	        U5      S-   nU4S jn[        [        [        [        X14SSUS-
  -  SUS-
  -  S.S9$ )	a.  
Factory function for a general polynomial model.

Parameters
----------
order : int or sequence
    If an integer, it becomes the order of the polynomial to fit. If
    a sequence of numbers, then these are the explicit powers in the
    polynomial.
    A constant term (power 0) is always included, so don't include 0.
    Thus, polynomial(n) is equivalent to polynomial(range(1, n+1)).

Returns
-------
polynomial : Model instance
    Model instance.

Examples
--------
We can fit an input data using orthogonal distance regression (ODR) with
a polynomial model:

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import odr
>>> x = np.linspace(0.0, 5.0)
>>> y = np.sin(x)
>>> poly_model = odr.polynomial(3)  # using third order polynomial model
>>> data = odr.Data(x, y)
>>> odr_obj = odr.ODR(data, poly_model)
>>> output = odr_obj.run()  # running ODR fitting
>>> poly = np.poly1d(output.beta[::-1])
>>> poly_y = poly(x)
>>> plt.plot(x, y, label="input data")
>>> plt.plot(x, poly_y, label="polynomial ODR")
>>> plt.legend()
>>> plt.show()

rW   r   c                 ó:   • [         R                  " U4[        5      $ )N)r   r   r   )r(   Úlen_betas     r   Ú	_poly_estÚpolynomial.<locals>._poly_est©   s   € ä�wŠw˜�{¤EÓ*Ð*r   zSorta-general Polynomialz$y = B_0 + Sum[i=1..%s, B_i * (x**i)]z)$y=\beta_0 + \sum_{i=1}^{%s} \beta_i x^i$rI   )rN   rM   rO   Ú
extra_argsrP   )	r   Úasarrayr   Úaranger'   r   r/   r4   r2   )Úorderr.   rc   rd   s       r   r   r   x   s•   € ôR �ZŠZ˜Ó€FØ‡|�|�rÓä—’˜1˜f q™jÓ)ˆä˜“K Ð#€F„LÜ�6‹{˜Q‰€Hà!)ô +ô ”¤+´[Ø#°	Ø9Ø>À(È1Á*ÑMØGØ! !™ñ%ñ&ñ'ð 'r   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )Ú_ExponentialModeléµ   a£  
Exponential model

This model is defined by :math:`y=\beta_0 + e^{\beta_1 x}`

Examples
--------
We can calculate orthogonal distance regression with an exponential model:

>>> from scipy import odr
>>> import numpy as np
>>> x = np.linspace(0.0, 5.0)
>>> y = -10.0 + np.exp(0.5*x)
>>> data = odr.Data(x, y)
>>> odr_obj = odr.ODR(data, odr.exponential)
>>> output = odr_obj.run()
>>> print(output.beta)
[-10.    0.5]

c           
      óP   >• [         TU ]  [        [        [        [
        SSSS.S9  g )NÚExponentialzy= B_0 + exp(B_1 * x)z$y=\beta_0 + e^{\beta_1 x}$rI   ©rN   rM   rO   rP   )rQ   rR   r:   r=   r?   rD   rS   s    €r   rR   Ú_ExponentialModel.__init__Ë   s.   ø€ Ü‰Ñœ¬¼Ü"*Ø'4Ø&=Ø)GñIð 	ò 	Jr   rW   rX   r`   s   @r   rk   rk   µ   ó   ø† ñ÷*Jó Jr   rk   c                 ó   • XS   -  U S   -   $ r6   rW   r9   s     r   Ú_unilinrs   Ö   s   € Øˆq‰T‰6�A�a‘D‰=Ðr   c                 óX   • [         R                  " UR                  [        5      U S   -  $ )Nr   )r   r   r   r   r9   s     r   Ú_unilin_fjdru   Ú   s    € Ü�7Š7�1—7‘7œEÓ" Q q¡TÑ)Ð)r   c                 ó¤   • [         R                  " U[         R                  " UR                  [        5      45      nSUR                  -   Ul        U$ )N)r&   ©r   r   r   r   r   ©r   r   Ú_rets      r   Ú_unilin_fjbrz   Þ   s8   € Ü�>Š>˜1œbŸgšg a§g¡g¬uÓ5Ð6Ó7€DØ˜Ÿ™‘€D„Jà€Kr   c                 ó   • g)N)rA   rA   rW   rC   s    r   Ú_unilin_estr|   å   s   € Ør   c                 ó.   • XU S   -  U S   -   -  U S   -   $ )Nr   r   r&   rW   r9   s     r   Ú
_quadraticr~   é   s$   € Ø��!‘‰f�q˜‘t‰mÑ˜q ™tÑ#Ð#r   c                 ó$   • SU-  U S   -  U S   -   $ r%   rW   r9   s     r   Ú	_quad_fjdr€   í   s   € ØˆQ‰3ˆq�‰t‰8�a˜‘d‰?Ðr   c                 óª   • [         R                  " X-  U[         R                  " UR                  [        5      45      nSUR                  -   Ul        U$ )N)é   rw   rx   s      r   Ú	_quad_fjbrƒ   ñ   s<   € Ü�>Š>˜1™3 ¤2§7¢7¨1¯7©7´EÓ#:Ð;Ó<€DØ˜Ÿ™‘€D„Jà€Kr   c                 ó   • g)N)rA   rA   rA   rW   rC   s    r   Ú	_quad_estr…   ø   s   € Ør   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )Ú_UnilinearModeléü   a•  
Univariate linear model

This model is defined by :math:`y = \beta_0 x + \beta_1`

Examples
--------
We can calculate orthogonal distance regression with an unilinear model:

>>> from scipy import odr
>>> import numpy as np
>>> x = np.linspace(0.0, 5.0)
>>> y = 1.0 * x + 2.0
>>> data = odr.Data(x, y)
>>> odr_obj = odr.ODR(data, odr.unilinear)
>>> output = odr_obj.run()
>>> print(output.beta)
[1. 2.]

c           
      óP   >• [         TU ]  [        [        [        [
        SSSS.S9  g )NzUnivariate Linearzy = B_0 * x + B_1z$y = \beta_0 x + \beta_1$rI   ro   )rQ   rR   rs   ru   rz   r|   rS   s    €r   rR   Ú_UnilinearModel.__init__  s.   ø€ Ü‰Ñœ¬¼;Ü"-Ø':Ø&9Ø)FñHð 	ò 	Ir   rW   rX   r`   s   @r   r‡   r‡   ü   s   ø† ñ÷*Ió Ir   r‡   c                   ó,   ^ • \ rS rSrSrU 4S jrSrU =r$ )Ú_QuadraticModeli  a¬  
Quadratic model

This model is defined by :math:`y = \beta_0 x^2 + \beta_1 x + \beta_2`

Examples
--------
We can calculate orthogonal distance regression with a quadratic model:

>>> from scipy import odr
>>> import numpy as np
>>> x = np.linspace(0.0, 5.0)
>>> y = 1.0 * x ** 2 + 2.0 * x + 3.0
>>> data = odr.Data(x, y)
>>> odr_obj = odr.ODR(data, odr.quadratic)
>>> output = odr_obj.run()
>>> print(output.beta)
[1. 2. 3.]

c           
      óP   >• [         TU ]  [        [        [        [
        SSSS.S9  g )NÚ	Quadraticzy = B_0*x**2 + B_1*x + B_2z&$y = \beta_0 x^2 + \beta_1 x + \beta_2rI   ro   )rQ   rR   r~   r€   rƒ   r…   rS   s    €r   rR   Ú_QuadraticModel.__init__3  s.   ø€ Ü‰ÑÜœi¬yÄ9Ø%Ø5ØGñIð 	ò 	Jr   rW   rX   r`   s   @r   rŒ   rŒ     rq   r   rŒ   )"r]   Únumpyr   Úscipy.odr._odrpackr   Ú__all__r   r    r#   r*   r/   r2   r4   r:   r=   r?   rD   rF   r   r   rk   r   rs   ru   rz   r|   r~   r€   rƒ   r…   r‡   r   rŒ   r   rW   r   r   Ú<module>r“      sÜ   ðñã Ý $ò€ò!òòò
$ò7òò5ò#ò#òòô
H˜ô Hñ>  Ó!€ò:'ôzJ˜ô Jñ<  Ó!€òò*òòò$òòòôI�eô Iñ< Ó€	ôJ�eô Jñ< Ó�	r   