AJO_1617_Practica2

hace 216 días por sevillad1617

Práctica 2 de AJO 2016-17

 

Límite de entrega de esta práctica: ver tarea en Moodle o calendario de la asignatura. Hasta una semana de retraso: vale hasta el 50%. Más de una semana de retraso: no cuenta para la nota.

Instrucciones:

  1. Haz una copia de la hoja pública y renómbrala: si tu correo es usuario@alumnos.unex.es añade al final del título _usuario, por ejemplo CAv_1314_Practica7_sevillad.
    • Para cambiar el nombre pulsa en el título de la hoja (arriba del todo, entre el logo de Sage y el menú "File...")
  2. Comparte la hoja de trabajo con el usuario sevillad1617 mediante el botón Compartir de arriba a la derecha.
  3. Trabaja la práctica.
  4. Cuando hayas terminado, haz una copia en un fichero PDF y ponlo en el campus virtual. Esa será la versión que se evaluará. La hoja no se considera entregada si no se ha compartido (punto 2).
    • Para generar el PDF lo más sencillo es usar Imprimir arriba e imprimir la nueva página a fichero.
    • Una alternativa es hacer capturas de pantalla (JPG, PNG...) y convertirlas a un único fichero PDF.
  5. Ve al campus virtual, al registro de horas no presenciales, y pon allí las dedicadas a esta práctica (recuerda descontar las presenciales de laboratorio), indicando en "observaciones" la actividad.

 

 

Con Sage podemos calcular los indicadores estadísticos más habituales, pues ya existen funciones que lo hacen. Vamos a ver algo más útil: cómo manipular listas de datos. Una lista no es más que un conjunto ordenado de datos (números o no), separados por comas y rodeados por corchetes.

lista = [2,3,4,5,6] lista 
       
[2, 3, 4, 5, 6]
[2, 3, 4, 5, 6]

La función len nos devuelve la longitud de una lista.

len(lista) 
       
5
5

La función len nos devuelve la suma de los elementos de una lista. Las funciones max y min nos dan lo que indican sus nombres.

sum(lista) 
       
20
20
max(lista) 
       
6
6
min(lista) 
       
2
2

Ejercicio 1. Calcula la media de los datos de la celda siguiente haciendo la suma y dividiendo. Después usa la función mean para comprobar.

[14, 11, 14, 14, 2, 18, 15, 12, 8, 12, 11, 4, 7, 12, 17, 6, 9, 8, 4, 17, 10, 17, 11, 14, 10, 12, 9, 11, 9, 17, 2, 9, 0, 6, 8, 17, 16, 4, 10, 6] 
       
 
       
 
       

Sage también nos permite, de manera muy sencilla, aplicar una función a todos los elementos de una lista. La sintaxis es

[f(n) for n in L]

donde L es el nombre de la lista que nos interesa y f es la función a aplicar a cada elemento. A continuación un ejemplo donde calculamos los cuadrados de unos números.

datos = [3, 6, 7, 4, 5, 4] cuadrados = [n^2 for n in datos] cuadrados 
       
[9, 36, 49, 16, 25, 16]
[9, 36, 49, 16, 25, 16]

Ejercicio 2. Calcula la varianza de los datos del ejercicio anterior usando la definición: a cada elemento réstale la media y eleva al cuadrado, luego suma todo y divide.

 
       
 
       

Puedes comprobar los resultados anteriores usando las funciones que tiene sage para la media y la varianza, que se llaman mean y variance. Ojo, el segundo no devuelve la varianza que hemos aprendido a calcular en clase sino otra relacionada; tienes que añadirle la opción "bias=True" para que nos devuelva la nuestra. ¿Entonces qué calcula por defecto Sage cuando le pedimos la varianza? De las dos definiciones de varianza en Estadística hablaremos un poco más adelante.

 
       
 
       

Podemos extraer un elemento de una lista indicando su posición entre corchetes. Importante: en Sage se empieza a contar desde cero, es decir, el primer elemento de una lista tiene índice cero, el segundo tiene índice uno, etc.

lista = [2,3,4,5,6] lista[0]; lista[1] 
       
2
3
2
3

Fíjate en lo siguiente: si una lista L tiene 5 elementos, el último es L[4]. Pero Sage nos permite salirnos de ese rango: simplemente vuelve al principio de la lista, luego en este caso sería L[5]=L[0], así como L[6]=L[1], etc. Y también al revés: L[1] es el último elemento de la lista (significa algo así como "el primero contando al revés").

En la siguiente celda mostraremos el último elemento de la lista anterior de dos maneras. Por cierto, como ves, para mostrar dos resultados en una celda se ponen en la última línea separados por ";".

l = len(lista) lista[l-1]; lista[-1] 
       
6
6
6
6

Para ordenar un conjunto de datos usamos su propiedad .sort() (las propiedades de un objeto de Sage se usan con un punto después de su nombre). Ojo, al aplicar sort perdemos el orden original. Esto puede afectar a cálculos posteriores...

Asegúrate de entender bien el ejemplo siguiente.

datos = [13, 8, 17, 12, 16, 20, 7, 19, 17, 14] datos; datos[0] 
       
[13, 8, 17, 12, 16, 20, 7, 19, 17, 14]
13
[13, 8, 17, 12, 16, 20, 7, 19, 17, 14]
13
datos.sort() datos; datos[0] 
       
[7, 8, 12, 13, 14, 16, 17, 17, 19, 20]
7
[7, 8, 12, 13, 14, 16, 17, 17, 19, 20]
7

Ejercicio 3. Calcula la mediana de los datos del ejercicio anterior según la definición (es decir sin usar funciones estadísticas de Sage).

 
       
 
       

Ejercicio 4. Escribe conjuntos de cuatro datos con las siguientes propiedades:

  1. Su media es 6 y su mediana es 9.
  2. Su media es 6 y tres de los cuatro datos están por debajo de ella.
  3. Su media y su mediana coinciden, y la distancia entre el mayor y el menor de los datos es 7.
  4. Dos de los datos son 3 y 6, y su mediana es 4.
 
       
 
       
 
       
 
       

Como dijimos al principio, Sage tiene funciones que calculan los indicadores estadísticos más conocidos.

l = [5, 3, 6, 7, 4, 5, 4, 8] l 
       
[5, 3, 6, 7, 4, 5, 4, 8]
[5, 3, 6, 7, 4, 5, 4, 8]
mean(l); median(l); variance(l); std(l) 
       
21/4
5
39/14
sqrt(39/14)
21/4
5
39/14
sqrt(39/14)
r.summary(l,digits=10) 
       
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.00    4.00    5.00    5.25    6.25    8.00 
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   3.00    4.00    5.00    5.25    6.25    8.00 

 

 

A continuación viene una (larga) descripción de cálculo integral con Sage; puedes pasar directamente al último ejercicio y volver para atrás según lo necesites.

Recordemos cómo integrar con Sage. Para calcular primitivas (integrales indefinidas) e integrales definidas, en ambos casos usaremos integrate.

f(x) = x^4-x^3 f 
       
x |--> x^4 - x^3
x |--> x^4 - x^3
g(x) = integrate(f,x) g; g(3)-g(1) 
       
x |--> 1/5*x^5 - 1/4*x^4
142/5
x |--> 1/5*x^5 - 1/4*x^4
142/5
integrate(f,x,1,3) 
       
142/5
142/5

Si nos hiciera falta, también podríamos calcular integrales con límites infinitos. Fíjate en este ejemplo cómo se escribe una función exponencial y cómo se escribe infinito.

f = exp(-x) plot(f,0,10).show(figsize=3) integrate(exp(-x),x,0,oo) 
       
1
1

Si necesitas hacer integrales con límites indeterminados $a,b,...$ tienes que decirle a Sage antes de usarlos que esas letras son variables, si no habrá un error.

integral(x^2,x,a,b) 
       
Traceback (click to the left of this block for traceback)
...
NameError: name 'a' is not defined
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "_sage_input_19.py", line 10, in <module>
    exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("aW50ZWdyYWwoeF4yLHgsYSxiKQ=="),globals())+"\\n"); execfile(os.path.abspath("___code___.py"))
  File "", line 1, in <module>
    
  File "/tmp/tmpB8EsAe/___code___.py", line 3, in <module>
    exec compile(u'integral(x**_sage_const_2 ,x,a,b)
  File "", line 1, in <module>
    
NameError: name 'a' is not defined
var('a,b') integral(x^2,x,a,b) 
       
-1/3*a^3 + 1/3*b^3
-1/3*a^3 + 1/3*b^3

Finalmente, veamos una manera de extraer y operar con las soluciones de una ecuación.

Para empezar, es posible decirle a Sage que una cierta indeterminada es positiva. Resolvamos una ecuación, de la que queremos solo las soluciones positivas; salen soluciones que no nos interesan. La segunda vez le decimos que la variable es positiva usando assume. Finalmente le decimos que olvide lo que ha aprendido antes con forget.

var('z') solve(z^2==1,z) 
       
[z == -1, z == 1]
[z == -1, z == 1]
assume(z>0) solve(z^2==1,z) 
       
[z == 1]
[z == 1]
forget() solve(z^2==1,z) 
       
[z == -1, z == 1]
[z == -1, z == 1]

Más interesante es manipular directamente las soluciones. Le diremos a Sage que las soluciones nos las dé en un formato del que sea fácil extraerlas, añadiendo algo a solve. La salida es una lista de soluciones. A continuación tomamos la segunda solución (recuerda que en las listas se empieza a contar desde cero).

s = solve(x^3==16*x,x,solution_dict=True) s; s[1] 
       
[{x: -4}, {x: 4}, {x: 0}]
{x: 4}
[{x: -4}, {x: 4}, {x: 0}]
{x: 4}

Podemos tener acceso a los valores usando corchetes con la variable. Con eso podemos operar directamente o bien guardar ese valor en una variable para luego.

s[1][x] 
       
4
4

Para terminar, combinando resolución de ecuaciones y manejo de listas, un ejemplo: resolvemos una ecuación y aplicamos un par de operaciones a las soluciones.

f = x^3-5*x-2 plot(f,(x,-3,3),figsize=3) 
       
s = solve(f,x,solution_dict=True) s 
       
[{x: -sqrt(2) + 1}, {x: sqrt(2) + 1}, {x: -2}]
[{x: -sqrt(2) + 1}, {x: sqrt(2) + 1}, {x: -2}]
[sol[x].n() for sol in s] 
       
[-0.414213562373095, 2.41421356237309, -2.00000000000000]
[-0.414213562373095, 2.41421356237309, -2.00000000000000]
[expand(sol[x]^2) for sol in s] 
       
[-2*sqrt(2) + 3, 2*sqrt(2) + 3, 4]
[-2*sqrt(2) + 3, 2*sqrt(2) + 3, 4]
 
       

Ejercicio 5. Consideremos la variable aleatoria $X$ cuya función de densidad $f(x)$ es igual a $\frac{2+(x-6)^2}{36}$ en el intervalo $[2,8]$ y cero fuera de este.

  • Comprueba que el área total bajo la gráfica de $f(x)$ es igual a 1.
  • Calcula la media y la desviación típica de $X$.
  • Calcula la mediana de $X$.
  • Calcula el intervalo de confianza de $X$ al 90%. Calcula otro intervalo al 90%.