import numpy as np
import matplotlib.pyplot as plt
from e1 import regressao_linear

def grafico(x,y):
    plt.plot(x, y, 'ro')
    plt.xlabel('tempo (dias)')
    plt.ylabel('atividade (mCi)')
    plt.title('Regressão Linear (Lei exponencial)')
    plt.grid()
    plt.show()

def grafico_semilog(x,y):       # Gráfico semilog (eixo y em escala logarítmica)
    plt.semilogy(x, y, 'ro')
    plt.xlabel('tempo (dias)')
    plt.ylabel('atividade (mCi)')
    plt.title('Regressão Linear (Lei exponencial)')
    plt.grid()
    plt.show()

def main():
    T = np.linspace(0,50,10)    #np.arange(0, 50, 5)
    A = np.array([9.676, 6.355, 4.261, 2.729, 1.862, 1.184, 0.7680, 0.4883, 0.3461, 0.2119])

    #a - dados experimentais num gráfico
    grafico(T,A)


    #b) gráfico do logaritmo da atividade com o tempo 
    #ln(A)=ln(A0)−λt 

    logA = np.log(A)            ####logA0 = np.log(A[0]) ?

    grafico(T,logA) #a atividade decai exponencialmente com o tempo


    #c) Encontre a função que relaciona a atividade com o tempo
    m, b, r2, dM, dB = regressao_linear(T, logA)

    A0 = np.exp(b)
    lmbda = m

    print(f"Função ajustada: A(t) = {A0:.4f} * e^({lmbda:.4f} * t)")
    print(f"Coeficiente de determinação r² = {r2:.5f}")

    #d) gráfico da função ajustada
    A_fit = A0 * np.exp(lmbda * T)
    grafico(T, A_fit)


if __name__ == "__main__":
    main()

