In [2]:
using DataArrays, DataFrames, Gadfly, Distributions, LinearLeastSquares, Grid, Cairo

In [4]:
using PyCall
ENV["PYTHON"] = "/usr/bin/python3"
#Pkg.build("PyCall")
@pyimport numpy as np
@pyimport numpy.cos as cos


LoadError: @pyimport: cos already defined
while loading In[4], in expression starting on line 362

 in error at error.jl:22

In [17]:
df = DataFrame()
df[:Angulo] = [0,10,20,30,40,50,60,70,80,90]
df[:Medicion1] = [48,39,31,23,27,24,16,11,4,5]
df[:Medicion2] = [42,31,37,30,23,21,14,11,6,4]
df[:Medicion3] = [42,42,38,34,24,23,14,7,3,4]
df[:Promedio] = [(df[:Medicion1][1]+df[:Medicion2][1]+df[:Medicion3][1])/3,
    trunc((df[:Medicion1][2]+df[:Medicion2][2]+df[:Medicion3][2])/3,1),
    trunc((df[:Medicion1][3]+df[:Medicion2][3]+df[:Medicion3][3])/3,1),
    trunc((df[:Medicion1][4]+df[:Medicion2][4]+df[:Medicion3][4])/3,1),
    trunc((df[:Medicion1][5]+df[:Medicion2][5]+df[:Medicion3][5])/3,1),
    trunc((df[:Medicion1][6]+df[:Medicion2][6]+df[:Medicion3][6])/3,1),
    trunc((df[:Medicion1][7]+df[:Medicion2][7]+df[:Medicion3][7])/3,1),
    trunc((df[:Medicion1][8]+df[:Medicion2][8]+df[:Medicion3][8])/3,1),
    trunc((df[:Medicion1][9]+df[:Medicion2][9]+df[:Medicion3][9])/3,1),
    trunc((df[:Medicion1][10]+df[:Medicion2][10]+df[:Medicion3][10])/3,1)]
df[:Error] = [trunc(std([df[:Medicion1][1],df[:Medicion2][1],df[:Medicion3][1]]),1),
    trunc(std([df[:Medicion1][2],df[:Medicion2][2],df[:Medicion3][2]]),1),
    trunc(std([df[:Medicion1][3],df[:Medicion2][3],df[:Medicion3][3]]),1),
    trunc(std([df[:Medicion1][4],df[:Medicion2][4],df[:Medicion3][4]]),1),
    trunc(std([df[:Medicion1][5],df[:Medicion2][5],df[:Medicion3][5]]),1),
    trunc(std([df[:Medicion1][6],df[:Medicion2][6],df[:Medicion3][6]]),1),
    trunc(std([df[:Medicion1][7],df[:Medicion2][7],df[:Medicion3][7]]),1),
    trunc(std([df[:Medicion1][8],df[:Medicion2][8],df[:Medicion3][8]]),1),
    trunc(std([df[:Medicion1][9],df[:Medicion2][9],df[:Medicion3][9]]),1),
    trunc(std([df[:Medicion1][10],df[:Medicion2][10],df[:Medicion3][10]]),1)]
df
writetable("datosAngulos.csv", df, separator = ',', header = true)

In [5]:
ymins = df[:Promedio] .- df[:Error]
ymaxs = df[:Promedio] .+ df[:Error]


#draw(PDF("muones.png", 10inch, 10inch), plot(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))

# Regresión cuadrática (por 2 XD)

# x_data = convert(Array,df[:Voltaje])
# y_data = convert(Array,df[:Promedio])

# t = [510; 870]

# t = reshape([530 : 0.1 : 870], length([530 : 0.1 : 870]), 1)
# t_squared = t .^ 4

# quadratic_coeff = Variable()
# slope = Variable()
# offset = Variable()
# quadratic = offset + x_data * slope + quadratic_coeff * x_data .^ 4
# residuals = quadratic - y_data
# fit_error = sum_squares(residuals)
# optval = minimize!(fit_error)

#plot(layer(df,x="Voltaje",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar),layer(x=t, y=evaluate(offset) + t * evaluate(slope) + t_squared * evaluate(quadratic_coeff), Geom.line))

x = convert(Array,df[:Angulo])

plot(layer(df,x="Angulo",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))#layer(df,x="Angulo",y=cos(x).^2,Geom.line))
#draw(PNG("muones.png", 10inch, 10inch), plot(df,x="Angulo",y="Promedio", ymin=ymins, ymax=ymaxs, Geom.point, Geom.errorbar))


Out[5]:
Angulo -125 -100 -75 -50 -25 0 25 50 75 100 125 150 175 200 225 -100 -95 -90 -85 -80 -75 -70 -65 -60 -55 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135 140 145 150 155 160 165 170 175 180 185 190 195 200 -100 0 100 200 -100 -90 -80 -70 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 -60 -50 -40 -30 -20 -10 0 10 20 30 40 50 60 70 80 90 100 110 -50 -48 -46 -44 -42 -40 -38 -36 -34 -32 -30 -28 -26 -24 -22 -20 -18 -16 -14 -12 -10 -8 -6 -4 -2 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100 -50 0 50 100 -50 -45 -40 -35 -30 -25 -20 -15 -10 -5 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 Promedio