Profilo di bestplayer

Nome bestplayer
Indirizzo email n/a
Messaggi2
  • Re: Problema fit non lineare
    Forum >> Programmazione Python >> Calcolo scientifico
    Ho già provato queste soluzioni ma non sono servite nel mio caso (vuoi perchè il problema è diverso o perchè ho sbagliato qualcosa io), per questo ho aperto una nuova discussione.
  • Problema fit non lineare
    Forum >> Programmazione Python >> Calcolo scientifico
    Ciao a tutti, stavo provando a effettuare un fit non lineare del tipo:
    Y=a * e**(b*X)**c

    e la mia idea era questa (mutuata dal codice che ho scritto per affrontare un altro problema con fit lineare):




    #!/usr/bin/env python3




    import math

    import numpy as np

    import matplotlib.pyplot as plt

    import scipy

    from scipy.optimize import curve_fit




    minutes = [0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13., 14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24., 25.]

    temperature = [70.9, 70.8, 70.4, 70.1, 69.7, 69.6, 68.5, 68.0, 64.6, 64.0, 62.7, 58.3, 56.5, 50.5, 48.8, 42.1, 35.5, 30.9, 29.7, 22.8, 16.0, 11.0, 9.11, 8.47, 6.27, 3.76]







    minutes_np = np.array(minutes)

    temperature_np = np.array(temperature)






    def exponential(x, a, b, c):

    return (a * math.e ** (b*x) ** c)



    popt, pcov = curve_fit(exponential, minutes_np, temperature_np)




    print (popt)









    popt_np = np.array(popt)

    pcov_np = np.array(pcov)




    matrix = np.corrcoef(minutes_np, temperature_np)

    rho = (matrix01) / (math.sqrt(matrix11*matrix00))






    plt.scatter(minutes_np, temperature_np, zorder=1, c='k')




    x = np.arange(0, 30)




    plt.plot(x, (popt_np0 * math.e ** (popt_np1*x)**popt_np2), zorder=2, color='g')




    plt.show()











    Il problema è che ho un Warning al momento della definizione del modello:




    RuntimeWarning: invalid value encountered in power





    e il risultato del fit non è compatibile con quanto dovrei ottenere.

    Purtroppo sono neofita e non ho affatto chiara la natura del warning e se sia proprio questo a darmi problemi col risultato finale.




    Grazie in anticipo a chiunque possa darmi un suggerimento.