import numpy as np from matplotlib import pyplot as plt from scipy.optimize import curve_fit %matplotlib inline ## CARGA ##Cargo datos: ## depende del formato uso uno u el otro #Misdatos_exp = np.loadtxt('carga1.txt') #Misdatos_exp = np.loadtxt('carga1.tsv') #import pandas as pd #Misdatos_exp = pd.read_csv('carga1.csv') #xe = Misdatos_exp[:,0] #ye = Misdatos_exp[:,1] ## Carga manual #xe = np.array([ 1, 2 , , ]) #ye = np.array([ , , , ]) dye = ye*0.005 #fijarse en la tabla de errores del multimetro o cargar el valor directo ## ploteo los datos para chequearlos plt.plot(xe,ye,'bo', label = 'datos') plt.errorbar(xe,ye,dye, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show() ##Ajuste CARGA ## Vc = Vo*(1-np.exp(-t/tau)) modelo ## tau = RC def fe(x, a, b, c): return a*(1-np.exp(-x/b))+c param, cov = curve_fit(fe, xe, ye, sigma = dye) plt.plot(xe,ye,'bo', label = 'datos') plt.plot(xe,fe(xe, param[0], param[1], param[2]), 'r-', label = 'Ajuste') plt.errorbar(xe, ye, dye, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show() print('a=', param[0], 'b=', param[1], 'c =', param[2]) print('da=', np.sqrt(cov[0,0]), 'db=', np.sqrt(cov[1,1]), 'dc=', np.sqrt(cov[2,2])) ## DESCARGA ## cargo datos usando mismos sistema que carga #xe = np.array([ , , ,]) #ye = np.array([ , , , ]) dye = ye*0.005 #fijarse en la tabla de errores del multimetro # ploteo los datos para chequearlos plt.plot(xe,ye,'bo', label = 'datos') plt.errorbar(xe,ye,dye, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show() # ajuste exponencial # defino la función que necesito (acorde a la ley o ecuación que espero sigan mis datos) def fe(x, a, b, c): return a*np.exp(-x/b)+c param, cov = curve_fit(fe, xe, ye, sigma = dye) plt.plot(xe,ye,'bo', label = 'datos') plt.plot(xe,fe(xe, param[0], param[1], param[2]), 'r-', label = 'Ajuste') plt.errorbar(xe, ye, dye, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show() print('a=', param[0], 'b=', param[1], 'c =', param[2]) print('da=', np.sqrt(cov[0,0]), 'db=', np.sqrt(cov[1,1]), 'dc=', np.sqrt(cov[2,2]))