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('temperatura absoluta (T)')
    plt.ylabel('potência (J)')
    plt.title('Regressão Linear')
    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('temperatura absoluta (T)')
    plt.ylabel('potência (J)')
    plt.title('Regressão Linear')
    plt.grid()
    plt.show()


def grafico_loglog(x,y):       # Gráfico log-log (ambos os eixos em escala logarítmica)
    plt.loglog(x, y)
    plt.xlabel('temperatura absoluta (T)')
    plt.ylabel('potência (J)')
    plt.title('Regressão Linear')
    plt.grid()
    plt.show()


def main():
    T = np.array([200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100])
    E = np.array([0.6950, 4.363, 15.53, 38.74, 75.08, 125.2, 257.9, 344.1, 557.4, 690.7])

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



    #b - gráfico com escala logarítmica no eixo y
    grafico_semilog(T,E)
    grafico_loglog(T,E)



    #c)dependência entre as quantidade energia emitida e a temperatura:
    # O gráfico log-log apresenta os dados aproximadamente em linha reta, indicando que
    # a relação entre E e T segue uma lei de potência.


    #d)potencia para linear
    # log(E) = log(c) + n·log(T)
    logT = np.log(T)
    logE = np.log(E)
    
    
    m, b, r2, dM, dB = regressao_linear(logT, logE)
    c = 10 ** b 

    print(f"Equação ajustada (log-log): log(E) = {m:.4f} * log(T) + log{c:.4f}")
    print(f"Coeficiente de determinação r² = {r2:.5f}")
    print(f"Incerteza em m: {dM:.4f}")
    print(f"Incerteza em b: {dB:.4f}")

    # gráfico log-log com linha de regressão ajustada
    # reta ajustada: E = b * T^m
    E_fit = c * T**m 
    grafico_loglog(T, E_fit)


if __name__ == "__main__":
    main()

