# -*- coding: utf-8 -*- """Resonancia.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1WHal1guY_rqmPo9lCNyEeVGZLqKY9HNY """ # Commented out IPython magic to ensure Python compatibility. 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] #ye1 = Misdatos_exp[:,1] (voltaje) #ye2 = Misdatos_exp[:,2] (fase) #dye1 = MIsdatos_exp[:,3] (error en voltaje) #dye2 = MIsdatos_exp[:,4] (error en fase) ## Carga manual #xe = np.array([ 1, 2 , , ]) #ye1 = np.array([ , , , ]) #ye2 = np.array([ , , , ]) #dye1 = np.array([ , , , ]) #dye2 = np.array([ , , , ]) #fijarse en la tabla de errores del multimetro o cargar el valor directo ##Ajuste CARGA ## I(w) = Vo / Raiz[ R^2 + (wL-1/wC)^2] modelo corriente ## Fi = arctg [ (wL-1/wC) /R] modelo fase def I(w, Vo, R, L, C): return Vo/(R * np.sqrt(R**2 + (2*np.pi*w*L - 1/(2*np.pi*w*C))**2)) def Fase(f, Vo, R, L, C): return np.arctan((2*np.pi* f *L - 1/(2*np.pi* f * C))/R) V0_guess = 10 #V R_guess = 100 #O L_guess = 0.1 #H C_guess = 0.0001 #F p0 = [V0_guess, R_guess, L_guess, C_guess] # Datos de juguete x = np.linspace(10, 500, 100) y_1 = I(x, V0_guess, R_guess, L_guess, C_guess) + np.random.rand() * I(x, V0_guess, R_guess, L_guess, C_guess) * 0.1 y_2 = Fase(x, V0_guess, R_guess, L_guess, C_guess) + np.random.rand() * Fase(x, V0_guess, R_guess, L_guess, C_guess) * 0.1 dye_1 = y_1*0.005 dye_2 = y_2*0.005 # Fin Datos de juguete #Instrucciones para usar los datos del experimento: #Cambiar x por xe, cambiar y_1 por ye1, cambiar y_2 por ye2, cambiar dye_1 por dye1 (o borrar sigma si no hay error), mismo con dye2. param1, cov1 = curve_fit(I, x, y_1, sigma = dye_1, p0=p0) param2, cov2 = curve_fit(Fase, x, y_2, sigma = dye_2, p0=p0) print(param1) print(param2) plt.plot(x, y_1,'bo', label = 'datos') plt.plot(x,I(x, param1[0], param1[1], param1[2], param1[3]), 'r-', label = 'Ajuste') plt.errorbar(x, y_1, dye_1, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show() plt.plot(x, y_2,'bo', label = 'datos') plt.plot(x,Fase(x, param2[0], param2[1], param2[2], param2[3]), 'r-', label = 'Ajuste') plt.errorbar(x, y_2, dye_2, linestyle = 'None') plt.title('X vs Y exp') plt.xlabel('Mediciones X') plt.ylabel('Valores y') plt.legend() plt.show()