GIIT_CALCULO_TUTORIAL

hace 73 días por etlopez17

 

Sage es software libre y gratuito de matemáticas.

 

  • Libre: acceso al código fuente y licencia abierta   ⇨   podemos saber cómo funciona cada elemento, cambiarlo a nuestro gusto, distribuirlo(*)...

  • Gratuito (¿será bueno y bonito también?)

Sage es una interfaz entre muchos programas especializados en distintos aspectos de matemáticas, todos ellos libres y gratuitos. De hecho, Sage contiene todos esos programas en su instalación.

Como ocurre con algunos proyectos exitosos de código abierto, el desarrollo de Sage se basa en una comunidad muy fuerte.

Sage como interfaz

El lenguaje de programación elegido para ello es Python, un lenguaje moderno y relativamente sencillo de aprender.

Python es un lenguaje muy popular. Es usado por Google, Yahoo!, CERN, NASA, Industrial Light & Magic, etc., se incluye en casi todas las distribuciones de Linux...

⇨   Un alumno que aprende programación básica a través del uso de Sage está aprendiendo algo potencialmente muy útil.

Sage actúa de intermediario entre los distintos paquetes que incluye. Por otra parte, si estamos acostumbrados a usar algún programa que esté incluido en Sage podemos usar la sintaxis que ya conocemos. Y no es solo una interfaz: Sage está incorporando nuevas funciones constantemente, gracias a la comunidad de desarrolladores que tiene detrás.

 

Varias maneras de trabajar con Sage

  1. Conectado a un servidor donde tenga una cuenta, a través de un navegador (es decir, esto mismo)
    • La instalación local también es posible
  2. Por línea de comandos
  3. Usando una celda de Sage insertada en una página web, por ejemplo http://www.unex.es/eweb/sage/jornadamerida/ejemplocelda.html
    • Interacción con otros programas que "hablan" con páginas web, por ejemplo GeoGebra
  4. Si trabajamos con Python podemos importar Sage como librería
  5. Si usamos Latex podemos llamar a Sage para meter resultados de cálculos en nuestros documentos  ⇨  PDFs con hojas de ejercicios aleatorios, etc.

 

Las hojas de trabajo de Sage

Este documento es una hoja de trabajo. Consiste en celdas de cálculo (¡todavía no hemos visto ninguna!) y celdas de texto.

 

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.

 
       

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. Después 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) 
       

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:


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

 
       

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.

 
       

Sage también puede guardar vectores y matrices dentro de una variable.

v = vector([1,-1,1,1]); v 
       
A = matrix([[1, 12, 123, 1234],[2, 23, 234, 2341],[3, 34, 341, 3412], [4, 41, 412, 4123]]); A 
       

Además, podemos operar con las variables anteriores:

v*A 
       
A*v 
       
det(A) 
       

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 
       

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 el último elemento que queremos elegir es el último elemento de la lista, no es necesario ponerlo.

L[2:] 
       
L[:-2] 
       

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

len(L) 
       

Recordemos que los elementos de una lista pueden ser de distinto tipo, aunque no es usual emplearlas de este modo.

Lista_rara=[1,"Hola",[1,2,3]];Lista_rara 
       

Podemos añadir un elemento al final de una lista con append, añadir una lista con extend o símplemente unir varias listas con la operación +.

L.append(4) 
       
L.extend([10,11,12]) 
       
[1,3,5]+[2,4,6]+[100] 
       

Creación de listas

Python permite crear de modo sencillo una lista de elementos equiespaciados. En Sage esta utilidad está extendida también para trabajar de modo simbólico.

[1..7] 
       
[2,4..10] 
       
[pi,4*pi..32] 
       
show([x^2,3*x^2/2..2*pi*x^2]) 
       

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 cuadrados de los números (naturales) del 4 al 25

b) Crea una lista con los cuadrados de los números pares del 4 al 25

c) Calcula el seno de los números anteriores

 
       

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 los números del 1 al 1000

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

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

Listas por comprensión

Python permite definir listas por comprensión. Es una manera rápida de crear una lista a partir de otra. La sintasis es [ expresión for indice in lista]. Devuelve una lista resultado de evaluar la expresión (que dependerá de la variable denominada índice) aplicada a cada uno de los elementos de la lista.

[ 2*k for k in [0..10] ] 
       
[ cos(x) for x in [pi/4, pi/2..2*pi]] 
       

Además se puede filtrar el resultado de la salida:

U = [ k for k in [1..19] if gcd(k,20) == 1]; U 
       

Y se pueden anidar bucles:

[ (a,b) for a in U for b in U ] 
       

Por último, la expresión inicial también puede contener condicionales:

[ 'prime' if x.is_prime() else 'not prime' for x in U] 
       

Ejercicio 11:

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

b) Crea una lista con los cuadrados de los números pares del 4 al 25

c) Crea una lista con los múltiplos de pi que son mayores que 4 y menores que 25

 
       
 
       
 
       

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 12: 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: 

Asignatura: