Está en la página 1de 7

Anexo 2.

Analisis de datos ionizacion


March 5, 2016

Analisis de datos, potencial de ionizaci


on.

In [130]: using PyPlot


using LsqFit
In [251]: import Base: ^
^(a::Array{Number,1},b::Integer)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Number,1},b::Number)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Int64,1},b::Int64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Int64,1},b::Int64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Float64,1},b::Int64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Float64,1},b::Int64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Float64,1},b::Float64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Float64,1},b::Float64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Int64,1},b::Float64)=[a[i]=a[i]^b for i in 1:length(a)]
^(a::Array{Int64,1},b::Float64)=[a[i]=a[i]^b for i in 1:length(a)]
Out[251]: ^ (generic function with 59 methods)
In [172]: mat1=readdlm("1dacorrida.dat")
mat2=readdlm("2dacorrida.dat")
mat3=readdlm("3dacorrida.dat")
mat4=readdlm("4dacorrida.dat")
mat5=readdlm("5dacorrida.dat")
mat6=readdlm("6dacorrida.dat")
mat7=readdlm("7dacorrida.dat")
mat8=readdlm("8dacorrida.dat")
mat9=readdlm("9dacorrida.dat")
mat10=readdlm("10dacorrida.dat");
In [385]: function ajustelineal{T<:Number}(mat::Array{T,2},N1::Int64,N2::Int64)
#N1=cantidad de puntos para ajustar la primer recta
#N2=cantidad de puntos para ajusta la segunda recta
parejas=size(mat)[1]
V=zeros(parejas)
I=zeros(parejas)
for i in 1:parejas
V[i]=mat[i,2]
I[i]=mat[i,3]
end
plot(V,I,"b.")
xlabel(L"V \ [volts]")
ylabel(L"I \ [mA]")
grid("on")
1

model(x,p)=p[1]x+p[2]
#ajuste de la recta en la primera zona
x1=zeros(N1)
y1=zeros(N1)
for i in 1:N1
x1[i]=V[i]
y1[i]=I[i]
end
fit1=curve_fit(model,x1,y1,[0.5,0.5])
p1=fit1.param
#ajuste de la segunda recta
x2=zeros(N2)
y2=zeros(N2)
for i in 1:N2
x2[i]=V[parejas-N2+i]
y2[i]=I[parejas-N2+i]
end
fit2=curve_fit(model,x2,y2,[0.5,0.5])
p2=fit2.param
errors1 = estimate_errors(fit1, 0.15)
errors2=estimate_errors(fit2,0.15)
#arreglos para lagrafica de las rectas
n=1000
x1=zeros(n)
x2=zeros(n)
y1=zeros(n)
y2=zeros(n)
x1=linspace(0,11,n)
x2=linspace(V[parejas-N2]-0.3,12.4,n)
[y1[i]=model(x1[i],p1) for i in 1:n]
[y2[i]=model(x2[i],p2) for i in 1:n]
plot(x1,y1,"r")
plot(x2,y2,"g")
#savefig("grafica1sinanalisis.jpg")
println(p1),println(p2),println(errors1),println(errors2)
#calculo de la interseccion de las rectas:
Vion=(p2[2]-p1[2])/(p1[1]-p2[1])
Iion=model(Vion,p1)
println("EL POTENCIAL DE IONIZACI
ON ES ",Vion)
println(log(Vion))
#incertidumbre en el potencial
a=-(p2[2]-p1[2])/((p1[1]-p2[1])^2)
b=-1/(p1[1]-p2[1])
c=(p2[2]-p1[2])/((p1[1]-p2[1])^2)
d=-b
suma=a^2*(errors1[1]^2)+b^2*(errors1[2]^2)+c^2*(errors2[1]^2)+b^2*(errors2[2]^2)
dVp=sqrt(suma)
println("La incertidumbre de potencial es ",dVp)
return p1,p2, errors1, errors2, Vion,Iion,dVp
end ;

In [388]: p1,p2,E1,E2,Vion,Iion,dVp=ajustelineal(mat10,15,10);
[0.8259999999773859,-0.25066666654345376]
[64.79412628375566,-716.3105139368283]
[-0.017419637439040278,-0.09487974037010044]
[-5.486325711914847,-64.91902240980426]
EL POTENCIAL DE IONIZACI
ON ES 11.1940100307717
2.415378816553428
La incertidumbre de potencial es 1.3970326996014575

In [370]: function rectificada{T<:Number}(mat::Array{T,2},N1::Int64,N2::Int64)


parejas=size(mat)[1]
V=zeros(parejas)
I=zeros(parejas)
for i in 1:parejas
V[i]=log(mat[i,2]+1.25)
I[i]=log(mat[i,3])
#V[i]=mat[i,1]
#I[i]=mat[i,3]
end
plot(V,I,"b.")
#xlabel(L"ln(V) ")
3

#ylabel(L"ln(I)")
savefig("ajuste1.jpg")
model(x,p)=p[1]x+p[2]
#ajuste de la recta en la primera zona
x1=zeros(N1)
y1=zeros(N1)
for i in 1:N1
x1[i]=V[i]
y1[i]=I[i]
end
fit1=curve_fit(model,x1,y1,[0.5,0.5])
p1=fit1.param
#ajuste de la segunda recta
x2=zeros(N2)
y2=zeros(N2)
for i in 1:N2
x2[i]=V[parejas-N2+i]
y2[i]=I[parejas-N2+i]
end
fit2=curve_fit(model,x2,y2,[0.5,0.5])
p2=fit2.param
errors1 = estimate_errors(fit1)
errors2=estimate_errors(fit2)
#arreglos para lagrafica de las rectas
n=100
x1=zeros(n)
x2=zeros(n)
y1=zeros(n)
y2=zeros(n)
x1=linspace(1,2.5,n)
x2=linspace(2.4,2.6,n)
[y1[i]=model(x1[i],p1) for i in 1:n]
[y2[i]=model(x2[i],p2) for i in 1:n]
plot(x1,y1,"r")#,label=L"ln(I)=(1.011 \pm 0.020 )lnV +(-0.291 \pm 0.028)")
plot(x2,y2,"g")#,label=L"ln(I)=(16.333 \pm 0.443)lnV+(-36.328 \pm 1.091 )")
#plot(x1,y1,"r",label=L"log(I)=(1.6581 \pm 0.2438)V +(4.6156 \pm 1.1108)")
#plot(x2,y2,"g",label=L"log(I)=(0.0274 \pm 0.0047)V-(0.3638 \pm 0.0254)")
#title(L"Ajuste \ para \ encontrar \ V_i ")
#legend(loc="best",fancybox="true",fontsize="medium")
xlabel(L"ln(V)",size=20)
ylabel(L"ln(I)",size=20)
println(p1),println(p2),println(errors1),println(errors2)
savefig("ajuste10corrida.jpg")
#calculo de la interseccion de las rectas:
Vion=(p2[2]-p1[2])/(p1[1]-p2[1])
Iion=model(Vion,p1)
println(Vion)
println("El potencial de ionizaci
on es ",exp(Vion))
#incertidumbre en el potencial
a=-(p2[2]-p1[2])/((p1[1]-p2[1])^2)
b=-1/(p1[1]-p2[1])
c=(p2[2]-p1[2])/((p1[1]-p2[1])^2)
d=-b

suma=a^2*(errors1[1]^2)+b^2*(errors1[2]^2)+c^2*(errors2[1]^2)+b^2*(errors2[2]^2)
dVp=sqrt(suma)
println("La incertidumbre de potencial es ",exp(dVp))
return p1,p2, errors1, errors2, Vion,Iion,dVp
end
Out[370]: rectificada (generic function with 1 method)
In [372]: p1,p2,E1,E2,Vion,Iion,dVp=rectificada(mat10,17,12)
[1.4359412617403033,-1.293743189731878]
[16.558684527153197,-38.706620831898476]
[0.04568587660418561,0.08580136260700405]
[0.9377438504259308,2.4038858759083945]
2.4739478139348763
El potencial de ionizaci
on es 11.869211921231278
La incertidumbre de potencial es 1.2474599765242935

Out[372]: ([1.43594,-1.29374],[16.5587,-38.7066],[0.0456859,0.0858014],[0.937744,2.40389],2.473947813934
In [383]: function child{T<:Number}(mat::Array{T,2},N1::Int64)
parejas=size(mat)[1]
V=zeros(parejas)
I=zeros(parejas)
5

for i in 1:parejas
V[i]=mat[i,1]+1.25
I[i]=mat[i,3]
#V[i]=mat[i,2]
#I[i]=mat[i,3]
end
plot(V,I,"b.")
xlabel(L"V ")
ylabel(L"I")
model(x,p)=p[1]*x^(3/2)+p[2]#^(3/2)
#ajuste de la recta en la primera zona
x1=zeros(N1)
y1=zeros(N1)
for i in 1:N1
x1[i]=V[i]
y1[i]=I[i]
end
fit1=curve_fit(model,x1,y1,[1.3,0.0])
p1=fit1.param
errors1=estimate_errors(fit1,0.12)
n=100
x1=zeros(n)
x1=linspace(0,12,n)
y1=zeros(n)
[y1[i]=0.27*x1[i]^(3/2) for i in 1:n]
plot(x1,y1,"r")
grid("on")
savefig("matlab.jpg")
# x5=linspace(0,12.3,1000)
#y6=zeros(1000)
#y7=zeros(1000)
#for i in 1:1000
#
y6[i]=exp(-36)*x5[i]^(16.27)+6
#
y7[i]=exp(x[i]^1.03)
#end
#plot(x5,y6,"k")
return p1, errors1
end
Out[383]: child (generic function with 1 method)
In [384]: child(mat10,10)

Out[384]: ([1.3,0.0],[-3.21331e-80,-0.0])

También podría gustarte