GT_MM_1718_T0_Tutorial_1

hace 14 días por GT_MM_1718

Introducción a Sage

Usando la interfaz

En Sage, las instrucciones se introducen en recuadros. Para generar un recuadro en el que introducir la operación que se desea evaluar, hay que pulsar el icono o mover el cursor hasta que aparezca una línea azul. Pulsando el botón izquierdo nos aparecerá un recuadro (celda) como el siguiente:

 
       

Ejercicio 1. Pulsa con el ratón para crear una celda a continuación de este texto.

 
       

Dentro de las celdas se escribe la operación que se desea evaluar y se pulsa el enlace evaluate  o <shift>+<Intro>. (Para evaluar una celda tienes que estar dentro de ella, si no no verás el botón de evaluar).

1+1 
       

Ejercicio 2. Crea una celda a continuación de este texto y calcula cuanto es 2+2.

 

 
       

Si lo que queremos es un cuadro de texto, para escribir explicaciones, responder preguntas, etc, debemos pulsar o también mantener pulsado <shift> a la vez que hacemos click con el ratón en un recuadro azul. Los cuadros de texto como éste permiten incluir comentarios en una hoja de trabajo. Si haces doble clic sobre el cuadro de texto puedes editar el contenido. Al entrar en modo de edición, aparecen botones y desplegables para cambiar algunos aspectos del estilo del texto.Para guardar lo que hemos escrito, hay que pulsar "Save changes".

Ejercicio 3. Crea una celda de texto, escribe "hola mundo" y guárdalo.

 
       

Ahora que ya hemos hecho varias cosas, vamos a guardar la hoja de trabajo. Arriba a la derecha tienes tres botones como estos (la apariencia depende del navegador):

 

Guardar Guardar y salir Descartar y Salir

 

El primer botón guarda y podemos seguir trabajando. El segundo botón guarda y sale de la hoja (vamos a la lista de hojas de trabajo que tenemos). El tercer botón descarta los cambios.  

También podemos guardar el documento con el que estamos trabajando pulsando "Save" en el menú superior. También podemos hacer una copia en el disco duro usando el menú:

file->Save workshet to a file

Esto nos creará un archivo que podemos recuperar más tarde (por ejemplo si hemos borrado algo por equivocación y luego lo hemos salvado).

Ejercicio 4. Guarda este documento con el botón "Guardar y salir". Después vuelve al documento y salva una copia en el disco duro.

 
       

Para buscar ayuda sobre como se utiliza una función, podemos usar la función "help". Por ejemplo, si queremos conocer cómo funciona la orden "plot", obtendríamos información así:

help(plot) 
       

Sage como una calculadora

Podemos utilizar Sage como cualquier (potente) calculadora científica

2+34 
       
42*34 
       
5-5*3 
       
32.23/234.1 
       
2^10 
       
258%7 #proporciona el resto de la división entera de 258 entre 7 
       

Además de las operaciones aritméticas, podemos usar las muchas funciones disponibles. La forma de usarlas es escribir el nombre de la función, seguido del argumento, o argumentos, entre paréntesis, y separados por comas.

exp(4.5) 
       
sqrt(2.4) 
       

Las funciones trigonométricas reciben los ángulos en radianes.

sin(90.0) 
       
cos(90.0) 
       
sin(3.1416) 
       
sin(pi) 
       

Al hacer operaciones con números que contienen errores, los errores se suman y multiplican, y pueden acabar estropeando un cálculo. Por eso Sage trata de trabajar siempre sin redondeos, y utiliza variables simbólicas. Así, por ejemplo, si usamos fracciones, no las escribirá como número real.

Al usar el ordenador para hacer matemáticas es importante saber si los datos del ordenador representan los objetos matemáticos de forma exacta. Es imposible almacenar en un ordenador con una cantidad finita de memoria todas las cifras decimales del número $\pi$. Una alternativa es almacenar sólo unas cuantas cifras, y cometer por tanto un pequeño error. Para la mayoría de las aplicaciones es más que suficiente usar 10 o 20 cifras decimales significativas. Con esto queremos decir que al escribir el número en notación exponencial, descartamos todas las cifras a partir de la número 10 o 20. Por ejemplo, el número 1/\pi con diez dígitos significativos:
3.183098861 \cdot 10^{-1}
Al hacer operaciones con números que contienen errores, los errores se suman y multiplican, y pueden acabar estropeando un cálculo. Otra alternativa es usar una variable simbólica, y usar las reglas aritméticas sin hacer cálculos con decimales
Al estar orientado preferentemente al público matemático, Sage prefiere usar expresiones simbólicas exactas antes que aproximaciones numéricas. Como vimos en prácticas, para obtener una representación decimal de una expresión simbólica, podemos usar el comando n() (n de numérico)
1/2+1/3 
       
(2/4)^23 
       

Algo similar ocurre con el número pi y el número e.

2+pi 
       
e^3 
       
sin(pi/3) 
       

Para obtener una representación decimal de una expresión simbólica, podemos usar el comando n() (n de numérico). Así, para expresar el número $\pi$ numéricamente, debemos escribir pi.n(). Análogamente, e.n().

pi.n() 
       
sin(pi.n()) 
       
e.n() 
       

Ejercicio 5. Calcula el resultado de las siguientes operaciones (debe ser 1 en todos los casos):


$2+5*6-31$,     $\dfrac{1+3^2}{1-2+3^3-4^2}$,     $e^{4-\dfrac{9-1}{2}}$,     $\sin(\pi/2)$

 
       

Tipos de datos y variables

Para utilizar posteriormente el resultado de un cálculo, podemos guardarlo en una variable:

b=2.0^4+1.0/5+exp(3.0) 
       

Para ver el contenido de la variable, basta escribir su nombre y ejecutar la celda:

       

Si el resultado no es un número, Sage también lo guarda en la variable, pero ahora tendremos que utilizar n() para ver su valor.

c=2^4+1/5+exp(3) 
       
       
c.n() 
       

Utilizar una variable es equivalente a escribir lo que tiene almacenado.

d=0.1 d 
       
h=d/10 h 
       

Si asignamos un nuevo contenido a una variable, perdemos su valor anterior.

d=0.2 d 
       

Podemos hacer las dos operaciones a la vez. Utilizar su valor y guardarlo de nuevo con el mismo nombre.

d=d+d^2 d 
       

Ejercicio 6. Crea una variable llamada n. Asígnale el valor 1. Ahora calcula n+1 y asígnalo de nuevo a n. Ejecuta la sentencia anterior varias veces para ver cómo va contando.

 
       

Trabajando con funciones (matemáticas)

Podemos definir una función como lo haríamos en clase:

f(x)=x^3+x^2+3 
       

Sage nos indicará que f guarda una función que asigna a cada x el polinomio anterior:

       

Para evaluar la función en un punto, basta sustituir el valor.

f(0); f(3); f(3.2); f(pi) 
       

Tambien podemos calcular derivadas y primitivas de la función, que a su vez son funciones:

f.diff(x) 
       
f.diff(x)(1) 
       
f.integrate(x) 
       

Para ver todas las operaciones que podemos hacer con una función, podemos escribir f. y pulsar el tabulador.

f. 
       

Si queremos que una función dependa de un parámetro, debemos declarar el parámetro con el comando "var".

a=var('a') g(x)=a*x^3+4*a g(3) 
       
g.diff(x) 
       

Ejercicio 7: Dada la función f(x)=sin(x)^3, calcula su valor en x=pi, su derivada, el valor de su derivada en x=pi y la integral entre x=0 y x=pi/2.

 
       

Representación gráfica

Dibujemos la función f(x)=sen(x) para x entre -pi y pi.

f(x)=sin(x) p = plot(f(x), (x, -pi/2, pi/2)) p 
       

Podemos cambiar el color y nombrar los ejes:

p = plot(f(x), (x,-pi/2, pi/2), axes_labels=['x','sin(x)'], color='purple') p 
       

O cambiar el grosor y el tipo de línea:

p = plot(f(x),(x,-pi/2,pi/2), linestyle='--', thickness=3) p 
       

Para representar varias funciones en la misma gráfica, se "suman":

f(x) = sin(x) g(x) = cos(x) p = plot(f(x),(x,-pi/2,pi/2), color='black') q = plot(g(x), (x,-pi/2, pi/2), color='red') r = p + q r 
       
 
       

Es posible almacenar una representación gráfica y mostrarla luego, usando .show(). Además dentro podemos poner algunas opciones, la más interesante cambiar el tamaño como en el ejemplo siguiente. Por cierto, también se puede poner dentro de la misma función plot.

p = plot(sin(x), (x, -pi/2, pi/2)) a = 34 b = a^2 p.show(figsize=3) 
       

Podemos cambiar el color y nombrar los ejes.

p = plot(sin(x), (x,-pi/2, pi/2), axes_labels=['x','sin(x)'], color='purple') p.show(figsize=3) 
       

O cambiar el grosor y el tipo de línea:

p = plot(sin(x), (x,-pi/2,pi/2), linestyle='--', thickness=5) p.show(figsize=3) 
       

Se pueden hacer muchas otras cosas gráficamente en Sage (hay unas cuantas en la charla "Gráficos en Sage"). Un ejemplo dibujando puntos:

point([(0,1), (1,1), (2,3)], figsize=3) 
       

Es posible representar varios objetos en la misma gráfica: simplemente se "suman" los objetos.

f(x) = sin(x) g(x) = cos(x) p = plot(f(x),(x,-pi/2,pi/2), color='black') q = plot(g(x), (x,-pi/2, pi/2), color='red') r = point([(0,1), (pi/4,sqrt(2)/2), (pi/2,0)], size=50, color='green', legend_label='puntos importantes') s = p + q + r s.show(figsize=3) 
       

Ejercicio 8: Representa las siguientes funciones en la misma gráfica y en el intervalo [0,1], cada una con un estilo diferente:

sin(pi x), exp(x), 1/(1+x)

 

 
       

Listas, bucles y y bucles en listas

Un tipo de datos muy importante en Sage son las listas. Vamos a ver cómo crear, modificar y seleccionar elementos de ellas.

Una lista no es más que una colección ordenada de elementos. Cada elemento de la lista puede ser cualquier tipo de objeto. Para crear una lista se pone entre corchetes la lista de los elementos, separados por comas.

L = [2,3,5,7,11,13,17,2] 
       

Para acceder a un elemento se pone el nombre de la lista, seguido de corchetes y entre corchetes el número de elemento al que queremos acceder. El primer elemento se numera con 0.

L[0] 
       
L[0]=3;L 
       

También podemos comenzar contando desde el último elmento usando índices negativos. Así el último elemento está numerado con -1, el penúltimo con -2, etc

L[-2] 
       

Podemos seleccionar un segmento de la lista con el operador :, siguiendo la convención nombreDeLista[primerElemento:ultimoElemento].

L[2:5] 
       

Si queremos saber cuál es el último elemento, utilizamos la orden len

len(L) 
       

Podemos unir varias listas con la operación +.

[1,2,3]+[4,5,6] 
       
[1,2,3]+[4] 
       

Creación de listas

Python permite crear de modo sencillo una lista de elementos equiespaciados.

[1..7] 
       
[2.0,2.1..3] 
       

Operando con listas

Sage soporta muchas operaciones directamente sobre listas. Como ejemplo, vamos a sumar los elementos de una lista, vamos a agrupar dos listas en una uniendo el elemento k de la primera con el k de la segunda, y por último map que aplica una función a cada elemento de una lista.

sum([1..100]) 
       
zip([1,2,3,4],['a','b','c','d'] ) 
       
map( cos, [0, pi/4, pi/2, 3*pi/4, pi] ) 
       

Ejercicio 9:

a) Crea una lista con los números (naturales) del 4 al 25.

b) Crea una lista con los números impares entre 3 y 53.

c) Crea una lista con los cuadrados de los números naturales del 4 al 25. Para ello, define la función cuadrado(x)=x^2 y aplica map a la lista anterior.

 
       
 
       
 
       

Estructuras de control

Las estructuras de control seleccionan cuál es la siguiente sentencia a ejecutar (selección -- if) o hacen que una sentencia se ejecute repetidamente (iteración -- while o for).

 

En Python, la selección tiene la siguiente sintaxis:

n=12343; if n%2 == 0: print n/2 else: print (n+1)/2 
       

Notese que la indentación es esencial: todas las sentencias que queremos que se ejecuten han de tener la misma indentación.

Para repetir una sentencia un número indeterminado de veces, podemos usar un bucle while, con sintaxis:

i=0; while i < 5: i=i+1; print i^2 
       

Finalmente, el bucle for repite una instrucción para cada elemento de una lista:

for i in [0..4]: print i^2 
       
for str in ["juan","mario","eva","laura"]: print str.capitalize() 
       

Ejercicio 10:

a) Suma con un bucle for los números del 1 al 1000.

b) Suma con un bucle los números positivos del vector v: 

 
       
v=[random()-1/2 for i in [1..100]];v 
       
 
       

Funciones

Para definir una función (programación) en Sage/Python, usamos la palabra clave def, seguida del nombre de la función, las variables de entrada entre paréntesis y dos puntos. En las siguientes líneas se escriben los comandos que queremos que evalúe la función. La indentación es muy importante en Python: todo lo que esté con la misma indentación será el cuerpo de la función, para terminar la función basta escribir sin indentación. Por último, el valor que devuelve la función se determina por la palabra clave return.

def g(x,y): x=x+1; y=y+2; return x*y 
       

Podemos usar la función igual que usamos cualquier función matemática.

g(1,3) 
       

Ejercicio 11: Crea una función que reciba dos números y devuelva el mayor de ambos

 
       

Ejercicio final: Rellena el siguiente cuadro (haciendo doble "clic"), guarda el "worksheet", compártelo con tu profesor, imprime la práctica como pdf según las instrucciones que se indican en la Guía para hacer las prácticas con Sage y súbela al campus virtual. 

Alumno: