Você está na página 1de 19

Sesión Magma

Sesión Magma basada sobre el programa:

“Magma”

Sitio web con el Magma Calculator:


http://magma.maths.usyd.edu.au/calc

1 / 19
Sesión Magma
Comandos

Comandos. Cualquier comando Magma tiene que terminar con


punto y coma. Por ejemplo los siguientes.
> 1+1;
2
> 3*5;
15
> 2^10;
1024
> Factorial(5);
120

2 / 19
Sesión Magma
Sucesiones

Sucesiones. Generamos una sucesión en Magma por medio de los


sı́mbolos [ y ] . Aquı́ van algunos ejemplos.
> [2,3,5,7];
[ 2, 3, 5, 7 ]
> [i : i in [1..10]];
[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
> [i : i in [1..10] | IsEven(i)];
[ 2, 4, 6, 8, 10 ]

El sı́mbolo : se ocupa como “donde”, mientras el sı́mbolo | se


ocupa como “tal que”.

3 / 19
Sesión Magma
Sucesiones

Creamos el listado de los numeros primos entre 2 y 100.


> PrimesInInterval(2,100);
[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,
43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 ]

El mismo listado puede ser creado por medio del siguiente co-
mando.
> [i : i in [1..100] | IsPrime(i)];
[ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41,
43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 ]

O bien por medio de un for loop.


for n in [2..100] do
if IsPrime(n) then n; end if;
end for;

4 / 19
Sesión Magma
Sucesiones

Dadas dos sucesiones A y B formamos su unión por medio del


comando cat .
> A:=[3,5,5];
> B:=[7,7,4];
> A cat B;
[ 3, 5, 5, 7, 7, 4 ]

Para definir cada sucesión hemos ocupado el operador := . El


i-esimo elemento de la sucesión A es A[i].
> A[3];
5

5 / 19
Sesión Magma
Conjuntos

Conjuntos. Generamos un conjunto en Magma por medio de los


sı́mbolos { y } . Aquı́ van algunos ejemplos.
> {7,6,3,4,4,6,5,3};
{ 3, 4, 5, 6, 7 }
> {2^n : n in [1..10]};
{ 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024 }

Observamos que en un conjunto cada elemento aparece una sola


vez y además los elementos han sido reordenados.

6 / 19
Sesión Magma
Conjuntos

La intersección de conjuntos se obtiene con el comando meet , la


unión con join y la diferencia con diff .
> {1,2,3} join {4,5,6};
{ 1, 2, 3, 4, 5, 6 }
> {1,2,3,4} meet {4,5,6};
{ 4 }
> {1,2,3,4} diff {4,5,6};
{ 1, 2, 3 }

7 / 19
Sesión Magma
Conjuntos

Subconjuntos. Los subconjuntos de un conjunto S se obtienen


por medio del comando Subsets .
> S := {2,3,5};
> Subsets(S);
{
{ 2, 5 },
{},
{ 2 },
{ 3, 5 },
{ 3 },
{ 2, 3 },
{ 2, 3, 5 },
{ 5 }
}

8 / 19
Sesión Magma
Conjuntos

Subconjuntos. También se pueden pedir los subconjuntos de dada


cardinalidad.
> S := {2,3,5};
> Subsets(S,2);
{
{ 2, 5 },
{ 3, 5 },
{ 2, 3 }
}

9 / 19
Sesión Magma
Conjuntos

Dada una sucesión podemos crear el conjunto de sus elementos


con el comando Seqset .

> Seqset(A);
{ 3, 5 }

Dado un conjunto podemos formar la sucesión de sus elementos


con el comando Setseq .

> Setseq({1,2,3});
[ 1, 2, 3 ]

10 / 19
Sesión Magma
Operadores sobre sucesiones y conjuntos
Operadores. Si S es una sucesión o bien un conjunto, el numero
de elementos de S se obtiene por medio del comando # .

> S:=[5,7,4,3,4,7,8];
> #S;
7
> #Seqset(S);
5

Ejemplo. Verificamos que el numero de subconjuntos de cardina-


lidad 3 de un conjunto de 5 elementos es 53 .

> #Subsets({1..5},3) eq Binomial(5,3);


true

11 / 19
Sesión Magma
Operadores sobre sucesiones y conjuntos

El operador & aplica una dada operación a todos los elementos


de una sucesión o conjunto S.

> S:=[5,7,4,3,4,7,8];
> &+S;
38
> &*S;
94080
> &+Seqset(S);
27
> &*Seqset(S);
3360

12 / 19
Sesión Magma
Operadores sobre sucesiones y conjuntos

Para agregar un elemento a un listado ocupamos el operador


Append .

> S:=[5,7,4,3,4,7,8];
> Append(S,10);
[ 5, 7, 4, 3, 4, 7, 8, 10 ]
> S;
[ 5, 7, 4, 3, 4, 7, 8 ]
> Append(~S,10);
> S;
[ 5, 7, 4, 3, 4, 7, 8, 10 ]

Observamos que el comando Append(~S,10) modifica el listado S


adjuntándole el número 10.

13 / 19
Sesión Magma
Algoritmo Euclideano

Para calcular cociente y resto de la division de un número por


otro ocupamos el comando Quotrem .

> Quotrem(17,12);
1 5

14 / 19
Sesión Magma
Algoritmo Euclideano

Escribimos una función Magma que restituya las matrices que


aparecen en el algoritmo Euclideano. Para esto ocupamos la pro-
cedura repeat . . . until y el comando function .

AlgEuc := function(a,b)
assert b ne 0;
L := [];
repeat
q,r := Quotrem(a,b);
Append(~L,Matrix(2,2,[q,1,1,0]));
a := b;
b := r;
until b eq 0;
return L;
end function;

15 / 19
Sesión Magma
Fracciones continuas

Para desarrollar un numero en fracción continua con magma ocu-


pamos el comando ContinuedFraction . El resultado son los cocientes
de las divisiones.
> ContinuedFraction(17/12);
[ 1, 2, 2, 2 ]

16 / 19
Sesión Magma
Fracciones continuas

Escribimos una función Magma que restituya las matrices que


aparecen en el algoritmo Euclideano ocupando fracciones conti-
nuas.
AlgEuc2 := function(a,b)
assert b ne 0;
return [Matrix(2,2,[q,1,1,0]) : q in
ContinuedFraction(a/b)];
end function;

17 / 19
Sesión Magma
Ecuaciones diofantinas

Función magma. Escribimos una función Magma que, dados dos


enteros a, b con máximo común divisor d, restituya dos enteros
x, y tales que ax + by = d.

SolEuc := function(a,b)
L := AlgEuc(a,b);
n := #L;
M := &*L;
return [(-1)^n*M[2,2],(-1)^(n+1)*M[1,2]];
end function;

18 / 19
Sesión Magma
Ecuaciones diofantinas

Función magma. Observamos que la misma ecuación diofantina


se puede resolver ocupando metodos del álgebra lineal.

> M := Matrix(2,1,[17,12]);
> v := Vector([1]);
> Solution(M,v);
( 5 -7)

19 / 19

Você também pode gostar