Thanks to visit codestin.com
Credit goes to github.com

Skip to content

<lambdifygenerated-1>:2: RuntimeWarning: overflow encountered in exp #373

@ghost

Description

Hi.

I am trying to do a curve fitting for two data sets (sig11-lam1) and (sig22-lam2) simultaneously since they have similar parameters.
Both sig11 and sig22 are functions of lam1 and lam2.

I tried to write an script for it like this :

from symfit import parameters, variables, Fit, Model, exp
import numpy as np
sig11e = np.array([0.007238495, 0.034467973, 0.062664953, 0.104778522, 0.155771434, 0.223699358, 0.296058426, 0.402029639, 0.950890584, 2.279527369, 4.079938047, 7.336652019, 10.94126853, 13.02172086, 13.53927407])
sig22e = np.array([0.004357766, 0.02221891, 0.029088113, 0.043979816, 0.132058283, 0.186319261, 0.411808169, 0.715913378, 1.984616059, 3.080248551, 5.472464315, 7.560792707, 9.380019492, 11.17472448, 11.85931825])
lam1e = np.array([0.043208, 0.339967999, 0.471335999, 0.560944, 0.692375999, 0.794935999, 0.911128, 1.032007999, 1.198792, 1.365175999, 1.478463999, 1.619112, 1.762359999, 1.847487999, 1.872296])
lam2e = np.array([0.026567999, 0.221599998, 0.327823999, 0.423647999, 0.673327999, 0.754639999, 0.987504, 1.097208, 1.310032, 1.399063999, 1.540599998, 1.643199999, 1.732247999, 1.827775999, 1.870688])
lam1, lam2, sig11, sig22 = variables('lam1, lam2, sig11, sig22')
a1, a2, a3, a4, a5 = parameters('a1, a2, a3, a4, a5')
model = Model({
    sig11: (-2/(lam1**2*lam2**2)) * (a1 + 2*a2*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3)+ 3*a3*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3)**2) + 2*a1*lam1**2 + 4*a2*lam1**2*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3) + 6*a3*lam1*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3)**2 + 2*lam1**2*a4*(lam1**2-1)*exp(a5*(lam1**2-1)),

    sig22: (-2/lam1**2) * (a1 + a2*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3) + 3*a3*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3)**2) + 2*a1*lam2**2 + 4*a2*lam2**2*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3) + 6*a3*lam2**2*(lam1**2 + lam2**2 + (1/(lam1**2 * lam2**2))-3)**2,
    
})
fit = Fit(model, lam1=lam1e, lam2=lam2e, sig11=sig11e, sig22=sig22e)
fit_result = fit.execute()

Where sig11e, sig22e, lam1e and lam2e are the data which I want to do a curve fitting for and they are considered as variables and a1, a2, a3, a4 and a5 are considered as parameters where a1, a2 and a3 are mutual in both sig11 and sig22 functions.

When I run it, I get the following error:

<lambdifygenerated-1>:2: RuntimeWarning: overflow encountered in exp
  return 2*a1*lam1**2 + 4*a2*lam1**2*(lam1**2 + lam2**2 - 3 + 1/(lam1**2*lam2**2)) + 6*a3*lam1*(lam1**2 + lam2**2 - 3 + 1/(lam1**2*lam2**2))**2 + 2*a4*lam1**2*(lam1**2 - 1)*exp(a5*(lam1**2 - 1)) - 2*(a1 + 2*a2*(lam1**2 + lam2**2 - 3 + 1/(lam1**2*lam2**2)) + 3*a3*(lam1**2 + lam2**2 - 3 + 1/(lam1**2*lam2**2))**2)/(lam1**2*lam2**2)
C:\Users\Alireza\anaconda3\Lib\site-packages\symfit\core\objectives.py:318: RuntimeWarning: overflow encountered in square
  (dep_var_value - dep_data) ** 2 / sigma ** 2

Is there something I am missing here or is it because my functions are somehow long?

Thanks

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions