Issuu on Google+

Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

Introducción a SAGE Antes de empezar. Introducimos en el navegador la dirección www.sagemath.org. Accedemos al apartado "Try SAGE online". Si es la primera vez que entramos debemos registrarnos. Una vez efectuado el registro lo introducimos en los lugares apropiados. Nos aparece una pantalla donde veremos todas nuestras hojas de trabajo (Worksheet en inglés). Si no tenemos ninguna debemos pulsar sobre "NewWorksheet", lo que crea una nueva hoja donde ya podemos empezar a trabajar. En el rectángulo que nos aparece escribimos la operación y pulsamos "evaluate" o bien la combinación de teclas "Mayus + Enter". En la dirección www.sagemath.org/es existen dos manuales en español que explican de modo resumido el manejo de Sage. Willian Stein, el creador de SAGE Willian Stein, el creador de SAGE

Operaciones aritméticas. El operador para multiplicar es el asterisco (*) y las potencias se obtienen con el circunflejo (^). El orden de las operaciones es el mismo que en matemáticas. Si queremos variar dicho orden podemos utilizar paréntesis. Los paréntesis se pueden anidar (escribir unos paréntesis dentro de otros), pero no pueden utilizarse corchetes. Si tenemos marcada la casilla "Typeset" los resultados aparecen mejor formateados (pero para ello debemos tener instalado el programa jsMath). 8 + 3^2

17 (8 + 3)^2

121 23 - (430*23)^2 +76*90

–97805237 3^113

821678234986022501332043817791314604358242170799200323 Si introducimos una fracción el programa automáticamente nos la simplifica. Al operar con fracciones, siempre obtenemos el resultado simplificado. 45/20 9 4

1 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

1/2 + 1/3 + 1/4 + 1/6 5 4

2/5

+ (1/2 + 3/7)^2 - (17/6)*(3/67) 74549 65660

Existen dos operadores en SAGE que no aparecen en matemáticas. Uno de ellos es "//" que proporciona el cociente de la división de dos números enteros y el otro "%" que nos devuelve el resto de la división. Lo que aparece tras el signo # es un comentario. 45 // 7

# Así obtenemos el cociente de la división

6 45 % 7

# Ahora el resto de la división

3

Raíces cuadradas. Para introducir las raíces cuadradas se utiliza la función "sqrt" (en inglés es square root) o bien se eleva a 1/2 (si el exponente es una fracción debemos escribirlo entre paréntesis). SAGE simplifica las raíces (extrayendo factores), pero no da aproximaciones numéricas, a no ser que se las pidamos. sqrt(3)

√3 3^(1/2)

√3 sqrt(12)

# SAGE extrae factores

2 √3 Si queremos obtener una aproximación numérica utilizamos la función "n", que admite la opción "digits" para fijar cuantas cifras significativas nos muestra. n(sqrt(2))

# Por defecto tenemos 15 cifras significativas

1.41421356237310 n(sqrt(2), digits=50)

# Ahora con 50 cifras

1.4142135623730950488016887242096980785696718753769 pi

# El número pi se escribe así de fácil

π n(pi, digits=40)

# Ahora unos cuantos decimales de pi

3.141592653589793238462643383279502884197

2 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

Si escribimos el radicando como un número con decimales, SAGE "supone" que queremos la aproximación decimal del radical. sqrt(3.0)

1.73205080756888 sqrt(3.)

# Basta con escribir el punto

1.73205080756888 Para trabajar con raíces de otros índices debemos utilizar la notación de potencias, recordando que p

√ap = a n n

SAGE también simplifica este tipo de raíces, pero utilizando la notación de potencias. 3^(17/8)

# Que es equivalente a 3^2 * 3^(1/8)

1 8

9 3( ) n(3^(17/8))

# Ahora con numeros decimales

10.3248242139589 (82.0)^(32/21)

# Si escribimos decimales obtenemos decimales

824.684391790306

Divisibilidad I (Primos y factorización). Para factorizar un número empleamos la función "factor". Recordemos que los números primos son aquellos que no admiten factorización. Para calcular el mínimo común múltiplo de dos números empleamos la función "gcd" (en inglés greatest common divisor). Para el mínimo común múltiplo tenemos la función "lcm" (también aquí es la abrevitura inglesa). factor(364)

22 · 7 · 13 factor(7)

# La factorización debe ser trivial

7 gcd(34,56)

2 lcm(34,56)

952

Polinomios. Emplearemos una única letra, que será x. Los operadores aritméticos son los mismos que los empleados en la parte numérica. A veces es conveniente utilizar nombres (en general letras) para

3 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

identificar a los polinomios. Para ello escribimos el nombre en cuestión, un signo igual y posteriormente el polinomio. Hasta que "almacenemos" otra cosa en dicho nombre, podemos utilizar el nombre en lugar del polinomio. Antes de empezar a trabajar con polinomios debemos escribir la orden "R.<x>=QQ[]". Esto informa al programa de que efectivamente los polinomios tienen como letra la x y que los coeficientes son números racionales (enteros o fracciones). R.<x> = QQ[] p = x^2+2*x+2

# Almacenamos el polinomio

q = 2*x^2+5*x-5 p

# Comprobamos que los hemos almacenado

x2 + 2x + 2 q

2x2 + 5x – 5 p + q

3x2 + 7x – 3 p * q

2x4 + 9x3 + 9x2 – 10 (3*x^2+5)^2

# Ahora el cuadrado de un binomio

9x4 + 30x2 + 25 Incluso son válidos los operadores // y % que proporcionan el cociente y el resto de una división de polinomios. p = x^4 - 3*x^3 +2*x+2 q = 3*x^2 -4*x +1 p # Hemos cambiado lo almacenado en las letras

x4 – 3x3 + 2x + 2 q

3x2 – 4x + 1 p // q 1 2 3x

– 95 x –

23 27

p % q

4 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

– 23 x+ 27

http://localhost:8000/home/admin/3/print

77 27

Factorización de polinomios. Los comandos "factor", "gcd" y "lcm" también se pueden emplear con polinomios. p = x^2 - 5*x +6 q = x^2 - 6*x +8 factor(p); factor(q) coma

# Varios comandos, separados por punto y

(x – 3) · (x – 2) (x – 4) · (x – 2) gcd(p,q)

x–2 lcm(p,q)

x3 – 9x2 + 26x – 24 factor(lcm(p,q))

(x – 4) · (x – 3) · (x – 2)

Ecuaciones. Las ecuaciones se escriben con un doble signo igual y únicamente utilizaremos la letra x. El comando para resolver ecuaciones es "solve". Debemos añadir siempre al comando solve, después de la coma, la letra x. Este comando no tiene en cuenta la multiplicidad de las soluciones. Antes de empezar debemos escribir la orden "var('x')" y ejecutarla. var('x')

x solve(x^2 - 5*x + 6 == 0, x)

[x = 3, x = 2] solve(x^3 - 3*x + 2 == 0, x)

[x = (–2) , x = 1] factor(x^3 - 3*x + 2)

#

El 1 es solución doble

2 (x – 1) (x + 2)

solve(sqrt(x-2) == 4,x)

# Una ecuación con radicales

[x = 18] Podemos comprobar que una ecuación está correctamente resuelta siguiendo los siguientes pasos:

5 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

Escribimos la ecuación igualada a cero pasando todo a un miembro. Damos un nombre a la parte de la ecuación que no está igualada a cero. Resolvemos la ecuación. Sustituimos la letra por los valores de la solución. f(x) = x^2 - 5*x +6 solve(f(x) == 0,x)

[x = 3, x = 2] f(2); f(3)

# Sustituimos x por las soluciones

0 0

Representación de gráficas. Para dibujar gráficas de funciones se emplea la función "plot". Si queremos dibujar la gráfica en el intervalo (a,b), debemos añadir a la función plot las opciones "xmin" y "xmax". Si queremos dibujar varias gráficas debemos aplicamos el signo "+". El eje y cambia de escala para adaptarse a la gráfica. plot(x^2-3*x, xmin=-2, xmax=3) (-2,3)

# Parabola en el intervalo

plot(x^2, xmin=-2, xmax=4) + plot(2*x+1, xmin=-2, xmax=4)

6 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

plot(exp(x), xmin=-2, xmax=3, color="red")

# Cambio de color

Ahora vamos a representar una función definida a trozos:

x+4 f (x) =

si –4 < x < –2

x2 si –x + 5 si

–2 < x < 2 2<x<6

plot(x+4, xmin=-4, xmax=-2) + plot(x^2, xmin=-2, xmax=2) + plot(-x+5, xmin=2, xmax=6)

7 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

Logaritmos. Para calcular el logaritmo de un número x en una base b (en notación matemática logb (x)) escribimos "log(x,b)". Si los logaritmos no son exactos debemos pedir explícitamente que nos calcule una aproximación. log(8,2)

3 log(100000,10)

5 log(567,4)

# Este logaritmo no es exacto

log(567) log(4)

n(log(567,4))

# Lo calculamos de modo aproximado

4.57360246247111 log(23.0,10)

# Si escribimos decimales...

1.36172783601759

Sistemas de ecuaciones. Si queremos resolver sistemas con las letras x e y debemos escribir antes de comenzar la orden "var('x,y')". Para resolver sistemas utilizamos la función "solve". Debemos escribir, entre corchetes y separadas por comas, cada una de las ecuaciones del sistema. Posteriormente tenemos que escribir, también entre corchetes, el nombre de las variables que aparecen en el sistema. Si el sistema no es resoluble el programa nos informa de ello. Vamos a resolver el sistema:

8 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

{

x+y 2x – 3y

var('x,y')

= 3 = 2

# x e y son las incognitas

(x, y ) solve([x + 5*y == 3, 2*x-3*y == 2],[x,y])

# Con solucion

[[x = ( ) , y = ( )]] 19 13

4 13

Ahora vamos a resolver el sistema de tres ecuaciones con tres incógnitas:

3x + 2y – z 2x – 6y – 4z 4x – 56y + z

= 2 = 2 = 9

var('x,y,z')

(x, y, z ) solve([3*x + 2*y - z == 2, 2*x - 6*y - 4*z == 2, 4*x - 56*y + z == 9], [x,y,z])

[[x = (

239 319

34 ) , y = (– 319 ) , z = ( 291 )]]

Si intentamos resolver un sistema que carece de soluciones, SAGE nos informa de ello. solve([x + y == 0, x + y == 1], [x,y])

[]

Fracciones algebraicas. Las fracciones algebraicas son aquellas en las que el numerador y el denominador son polinomios. Para empezar a trabajar con fracciones algebraicas debemos escribir la orden "R.<x> =QQ[]". Sage directamente simplifica las fracciones. También las suma, resta, multiplica y divide y da el resultado simplificado. R.<x> =QQ[] (x^2-5*x+6)/(x^2-6*x+8) fracciones algebraicas

# Sage simplifica directamente las

x–3 x–4

factor(x^2-5*x+6) ; factor(x^2-6*x+8)

9 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

(x – 3) · (x – 2) (x – 4) · (x – 2) p = (1+x^2-3*x^3)/(x^2+8*x-1) q = (-5*x^2-3*x+4)/(-3*x^2+1) p –3x3 +x2 +1 x2 +8x–1

q –5x2 –3x+4 –3x2 +1

p + q 9x5 –8x4 –46x3 –17x2 +35x–3 –3x4 –24x3 +4x2 +8x–1

p - q 9x5 +2x4 +40x3 +13x2 –35x+5 –3x4 –24x3 +4x2 +8x–1

p * q 15x5 +4x4 –15x3 –x2 –3x+4 –3x4 –24x3 +4x2 +8x–1

p / q 9x5 –3x4 –3x3 –2x2 +1 –5x4 –43x3 –15x2 +35x–4

p^3 –27x9 +27x8 –9x7 +28x6 –18x5 +3x4 –9x3 +3x2 +1 x6 +24x5 +189x4 +464x3 –189x2 +24x–1

Si hemos dado un nombre, por ejemplo p, a una fracción algebraica, entonces p(3) consiste en sustituir la x por 3 en la expresión. p(3); p(8)

– 71 32 – 1471 127

Divisibilidad II. Para estudiar la divisibilidad el principal comando es "factor", que nos proporciona la descomposición en factores primos de un números. Asimismo las funciones "gcd" y "lcm" nos permiten calcular el máximo común divisor y el mínimo común múltiplo. Sin embargo SAGE tiene otras funciones. La función "is_prime" devuelve "True" (verdad en inglés) si el número en cuestión es primo y "False" en caso contrario. La función "divisors" calcula todos los divisores de un número dado. La función "next_prime" calcula el siguiente número primo al dado y "previous_prime" el número primo inmediatamente anterior. La función "prime_range" necesita dos argumentos y proporciona una lista con todos los primos comprendidos entre los números dados.

10 de 11

17/11/10 23:27


Introducción a SAGE -- Sage

http://localhost:8000/home/admin/3/print

is_prime(21); factor(21)

False 3·7 is_prime(641); factor(641)

True 641 divisors(60)

[1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, 60] next_prime(90)

# El primer primo despues de 90

97 previous_prime(90)

89 prime_range(10, 100)

[11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

Cambio de base. Escribimos un número entero en base diez, posteriormente escribimos ".str" y entre paréntesis la base en la que queremos escribir el número. 235.str(2)

# Cambiamos a base 2

11101011 235.str(8), 235.str(16)

# A base 8 y 16

(353, eb)

11 de 11

17/11/10 23:27


Introducción a Sage