Beruflich Dokumente
Kultur Dokumente
PROGRAMA DE LA ASIGNATURA
Tema 1:Introducción.
1.1. Introducción.
1.2. Primeros pasos con Mathematica.
1.3. Sintaxis general de las órdenes.
1.4. Información o ayuda.
1.5. La orden Print
7.1. Introducción.
7.2. Sistemas clásicos.
7.3. Sistemas de clave pública.
9.1. Matrices
9.2. Diagonalización de matrices cuadradas.
9.3. Factorización de matrices.
9.5. Aproximaciones por mínimos cuadrados.
BIBLIOGRAFÍA
OBJETIVOS
En caso de ser necesario los estudiantes se agruparán para formar grupos de trabajo
a la hora de realizar las prácticas.
La asistencia a clase es obligatoria debido al carácter eminentemente práctico de la
asignatura.
Se pretende una enseñanza personalizada, de modo que cada alumno/a pueda llevar
su ritmo de trabajo (dentro de unas pautas marcadas por las profesoras). Para poder
llevar a cabo este tipo de enseñanza, el alumno/a dispone de unos apuntes que debe leer
e intentar comprender antes de clase y así las horas de clase y tutorías se pueden dedicar
a preguntar las dudas y a ir programando los problemas propuestos.
EVALUACIÓN
Representa las cantidades tan exactamente como sea posible, e intenta devolver el
resultado en la misma forma que los datos o en una forma similar.
+ suma
- diferencia
* o espacio producto
/ división
^ potencia
Ejemplo 1:
Out[] 10022102
In[] 532*34978
Out[] 18608296
In[] 34^56
Out[] 5791877320528712784204425412617959985284096849205616406
2843692360166371779746690236416
A partir de ahora solo escribimos la celda de Input, tu deberás realizar los ejercicios y
verás los resultados en la pantalla del ordenador.
In[] 1000!
In[] 111111111^2
Matemáticas y Mathematica - 11 -
Tema 2: Primeros pasos en Mathematica
In[] 2 + 2/5
Puedes usar muchas constantes usuales en Matemáticas siempre que las escribas en forma
correcta:
Una fracción la trata de forma exacta y sólo la aproxima cuando en la expresión exista
otro número decimal.
Ejemplo 2:
Ejemplo 3:
N [número, precisión]
Ejemplo 4:
In[] N [ (1 + 5 ) /2]
- 12 - Matemáticas y Mathematica
Tema 2: Primeros pasos en Mathematica
Precisión [%]
Ejemplo 5:
Si en una expresión con números incluimos un punto decimal la salida será un número
real, dado mediante su representación decimal aproximada (con un número de dígitos
decimales por defecto salvo que el usuario pida una precisión determinada).
Ejemplo 6:
Hay que tener cuidado cuando se trabaja con números decimales ya que se harán las
operaciones con la precisión por defecto, a no ser que se le indique otra cosa, y se llegará a
resultados aparentemente falsos.
Ejemplo 7:
In[] 5 + 0.00000001
Precision [%]
Nota: Se obtiene este resultado porque previamente se había fijado la precisión, si trabajamos
con 10-7 el resultado sería exacto.
Matemáticas y Mathematica - 13 -
Tema 2: Primeros pasos en Mathematica
Existen otras muchas funciones que se utilizan en campos específicos. Por ejemplo,
dispone de una serie de “paquetes” de funciones muy diversas, que se guardan en
subdirectorios del directorio Packages. Más adelante se verá la forma de acceder a estos
paquetes (en tema 5).
Ejemplo 8:
- 14 - Matemáticas y Mathematica
Tema 2: Primeros pasos en Mathematica
Ejemplo 9:
Las funciones más usuales para transformaciones algebraicas las encuentras en una de las
paletas. Para acceder a ellas sigue los siguientes pasos:
En el Menú Principal de Mathematica ve a File y busca Palettes. Entre las que se ofrecen,
en la primera que corresponde a AlgebraicManipulation, encontrarás la que corresponden a
estas funciones. Úsala para hacer los ejercicios siguientes:
Ejemplo 10:
x 3 + 3x 2 + 3x + 1
In[]
x 2 + 2x +1
Numerator[%]
Denominator[%%]
Factor[%]
?Apart
Matemáticas y Mathematica - 15 -
Tema 2: Primeros pasos en Mathematica
3x 2 + 8 x + 2
In[] Apart[ ]
x 2 − 5x + 6
Together[%]
ExpandDenominator[%]
Factor[Numerator[%]]
3x − 1 5 − x 4 x 2 x 2 ( x 2 + 1) − ( x 4 + 4)
In[] Simplify[ − − * ]
x + 2 x − 2 x2 − 4 4 + 5x
- 16 - Matemáticas y Mathematica
Tema 2: Problemas y Ejercicios
2.1- Sea d el número primo que ocupa el lugar veintisiete y k un número aleatorio mayor
que 1000. Calcula (ayudándote de las paletas y de la ayuda):
15
i3 40 40
a) ∑(
i =1 2
+ (d − 1)i ) b) ∏ ( − kj )
j =5 j
40
Nota: es el número combinatorio, busca en ayuda para encontrar su uso con
j
mathematica
1+ m3 +π
e−
2.3- ¿Cuál es el menor número de seis cifras que es divisible por 7?. ¿Y el de nueve cifras
que es divisible por 257?. Por último, ¿cuál es el menor número de doce cifras divisible por
1601?
Nota: Recuerda que a ≡ b (mód n) es una relación de equivalencia que puedes usar para
conocer el resto de la división entre a y b. Estos conceptos serán muy útiles en el tema 7
n
2.4.-Fermat suponía que todos los números del tipo 22 +1 , con n = 0,1,2....... eran primos.
Encontrar el primer número natural que desmienta esta afirmación.
Hacer lo mismo con el polinomio planteado por Euler n2 – n + 41
2.5- Usando las paletas calcula el valor de las siguientes expresiones para 10 sumandos y
50 decimales. Observa los resultados. ¿Crees que estas sucesiones tienen límite?.
a) (2 + (2 + (2 + ..........)))
b) (5 + (5 + (5 + ..........)))
2 2 2 ..........
2.7- a) El cálculo formal de la derivada de una función real de una variable real se puede
realizar en Mathematica con la orden
D[funcion,variable]
También es posible usar las palettes para encontrar derivadas de funciones. Encuentra las
derivadas de las siguientes funciones, y simplifica los resultados
x 2 +1
f(x) = arc sec 2
x −1
f ( x) = sen 2 x 2
g ( x) = 2 x
1
h( x) = Ln
x
2.8- El cálculo de la integral de una función real de una variable real se puede realizar en
Mathematica con ayuda de las paletas o con la orden
Integrate[funcion, variable]
∫ ∫x
dx
a) e x cos( x) dx b)
x 2 −1
∫
dx 1
c) 2
x −1 d)
∫
−1
1− x 2 dx
a) e π i +1= 0
1 1 1 1
b) = −
x −1 2 x −1 x +1
2
2.3.- a) 100002
b) 100000242
c) 100000000162
2.5- a) 1.9999976469034038198580514203430520380965358457795
b) 2.7912877396742162500760648956035190767907788911337
2.6- 1.9986466550053015047205673196874760823237705942159
2$ − x2
2.7.-a) para f(x): I−1+x2M2
+ 4 Csc@4 xD
è
1
para g(x): x H2 + 2 xL
1
b3) de orden dos:
x2
2
de orden tres: −
x3
Cos@xD + Sin@xD
2.8 a) 1 x 1 x
2 2
−ArcTanB F
è
b) 1
− 1 + x2
" è è
c) 4 −1 + x I2 + xM
è
3
d) 3 π
+
4 6
TEMA 3
Son, junto con las constantes predefinidas, los dos tipos más importantes de elementos
para el almacenamiento temporal de datos.
El nombre debe comenzar con una letra, (debe ser minúscula, pues las predefinidas
empiezan siempre con letras mayúscula) y puede estar constituido por cualquier secuencia de
letras y cifras. No son válidos los nombres que coincidan con los de funciones u órdenes de
Mathematica.
Ejemplo1:
In[] x=2
a=x
x=3
a
Ejemplo 2:
In[] x=2
a:= x
x=3
a
Matemáticas y Mathematica - 23 -
Tema 3: Principios básicos de programación
Como ya hemos dicho en el tema 1, en caso de querer eliminar el valor asignado a una
variable usaremos la orden:
Clear [ nombre ]
o bien
nombre.
Clear[“Global`*”]
Nota: en todos los ejemplos, suponemos que las variables utilizadas han sido
limpiadas.
3.1.1.- Una función es un elemento de Mathematica al que se puede asignar una información
no constante, dependiendo de un conjunto de variables, cuyo valor quedará determinado, en
cada momento, por el valor que tengan las variables.
Ejemplo 3:
In[] x=3
f[ x_ ] := x^2
f[x]
f ‘[x ] (* f ‘ [x]indica la derivada primera de la función f[x] *)
Clear [x]
f[x]
f ‘ [x ]
- 24 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación
Out[] f[y]
La función no puede ejecutarse para ningún otro argumento; la tenemos definida sólo
para el argumento x.
Ejemplo 4:
( x, y + z ) si x ∈(−2,2)
g ( x, y , z ) = 2
( x + y + z , 0)
2 2
en el resto
In[] g[x_, y_, z_]:= If [-2 < x < 2, {x, y + z} , {x^2 + y^2 + z^2, 0}]
g[1,9,8]
g[{1,9,8}]
Out[] {1,17}
g[{1,9,8}]
In[] Clear[g]
g[{x_, y_, z_}]:= If [ -2 < x < 2, {x, y + z}, {x^2 + y^2 + z^2, 0}]
g[1,9,8]
g[{1,9,8}]
Out[] g[1,9,8]
{1,17}
Observa que si al definir la función, los argumentos los damos en forma de lista (entre
llaves), al evaluar la función hay que darle una lista y viceversa.
3.1.2.- Mathematica permite definir funciones de manera recursiva, veamos como podemos
trabajar con la sucesión de Fibonacci, definiéndola recursivamente
Matemáticas y Mathematica - 25 -
Tema 3: Principios básicos de programación
Ejemplo 5:
In[] f[0]:=0
f[1]:=1
f [ n_ Integer] : = f [ n - 1] + f [ n - 2 ] /; n >1
f[6]
Out[] 8
3.1.3.- Normalmente, las funciones definidas en Mathematica operan sobre sus argumentos
(ver las que se muestran en la tabla del apartado 2.2 del tema 2, página 14). Sin embargo,
también existen operadores funcionales que operan sobre otras funciones (los argumentos de
los operadores funcionales son funciones).
Entre los operadores funcionales que habilita Mathematica podemos resaltar los
siguientes:
• InverseFunction[f]
Define la inversa de la función f.
• Composition[f , g,...]
Define la compuesta de f , g .....
• Nest[f,x,n]
Aplica la función f, sobre x, n veces.
Ejemplo 6:
In[] f[x_]:=x+3
Nest[f,5,7]
Out[] 26
• Fixedpoint[f , x]
Aplica f repetidamente hasta que el resultado no cambie, aunque se siga aplicando f,
es decir hasta que f(x) = x y entonces se dice que hemos encontrado un punto fijo.
• Map[f, lista]
Aplica f, a todos los elementos de la lista.
- 26 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación
Ejemplo 7:
In[] lista={1,6,-4,Pi,variable}
f[x_]:= x^2
Map[f , lista]
CONECTIVOS OPERADORES
LÓGICOS LÓGICOS
Igualdad == conjunción & & ó And[,]
Desigualdad != disyunción u Or [,]
menor que < disyunción exclusiva Xor [,]
mayor que > negación ! ó Not [,]
menor o igual que <=
mayor o igual que >=
Nota: los procesos pueden estar formados por varias órdenes separadas por “ ; ”
Ejemplo 8:
Ejemplo 9:
Ejemplo 10:
Matemáticas y Mathematica - 27 -
Tema 3: Principios básicos de programación
Define una función que toma el valor x3 en (2,6), el valor x+8 en el intervalo [6,6.5) y en
el resto de los valores de la recta real, puesto que la condición True es siempre verdadera.
Ejemplo 11:
Out[]
1
0.8
0.6
0.4
0.2
-2 -1 1 2
Ejemplo 12:
La instrucción Which, permite definir funciones a trozos y después operar con ellas.
In[] f[x_] := Which[ -2 < x <= 2, x^2, -3 <= x <= 3, 4, True, x^2]
Plot [f[x],{x, -4, 4}];
Plot [f ‘ [x], {x,-4, 4}, PlotStyle->Thickness[0.01]];
Out[]
- 28 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación
Nota: como verás en el tema siguiente, Plot es un comando que permite representar
gráficas y en la representación de la derivada hemos dado un mayor grosor mediante
PlotStyle.
3.3 .- BUCLES
• While[condición, proceso ]
Evalúa el proceso mientras la condición sea cierta.
Ejemplo 13:
Vamos a escribir los 20 primeros números naturales y sus cubos de tres formas distintas..
Matemáticas y Mathematica - 29 -
Tema 3: Principios básicos de programación
c)In[] i=1
While [i <= 20, Print [ i, “ “, i ^ 3] ; i =i+1]
3.4.- ITERADORES
Ejemplo 14 :
Realizan respectivamente, las suma y producto de los cuadrados de los números pares
comprendidos entre dos y veinte, ambos incluidos.
• Continue[ ]
Este comando, incluido dentro de un bucle, salta al siguiente paso, sin terminar el paso
actual.
• Break [ ]
Termina el bucle que se esté ejecutando saltándose todos los pasos.
Ejemplo 15:
In[] For [ i =30, i <= 40, i++ , If [ i^2 > 1500, Break[ ] , Print [i^2] ] ]
Cuando el cuadrado del contador supere 1500, se interrumpe el bucle.
• Return [ expresión ]
Termina la ejecución de la función que se esté evaluando y devuelve la expresión
como resultado de la misma.
Ejemplo 16:
Vamos a definir la función raíz que distingue entre números positivos y negativos.
• Throw [ expresión ]
Termina la ejecución de todas las funciones que se estén evaluando y devuelve la
expresión como resultado.
Los datos de una lista pueden ser cualquier elemento de Mathematica, constante o no,
algebraico, lógico, otras listas, etc.
Con una lista se pueden efectuar las operaciones aritméticas básicas, entendiéndolas
elemento a elemento, o se puede utilizar como argumento de una función.
Ejemplo 17:
In[] { 1, 2, 3}^ 4
Sin[ {Pi, Pi/2, Pi/4}]
Los elementos de una lista pueden ser a su vez, otras listas. En concreto, si una lista está
formada por otras de la misma longitud, ésta puede ser considerada como una matriz.
Ejemplo 18 :
Matemáticas y Mathematica - 31 -
Tema 3: Principios básicos de programación
Ejemplo 19:
In[] v= Table[3i,{i,1,7,2}]
Ejemplo 20:
Utiliza una función predefinida Table y otras dos definidas por el usuario, llamadas "f" y
"g".
Este apartado describe las herramientas que posee Mathematica para la construcción y
manipulación de vectores y matrices. En el tema 9 veremos como Mathematica nos ayuda a
resolver problemas relacionados con espacios vectoriales, aplicaciones lineales y
descomposiciones matriciales. Estas últimas pueden servir para resolver, de forma
aproximada, sistemas de ecuaciones que no tienen solución.
En Mathematica los vectores y matrices se representan como una aplicación de las listas.
El vector (a, b, c, d) se representa mediante la lista {a, b, c, d}. Una matriz se representa como
una lista de listas (lista de vectores), donde cada lista es una fila de la matriz.
La matriz
a11 a12 a13 .... a1n
a 21 a 22 a 23 .... a2n
A = a 31 a 32 a 33 .... a 3n
.... .... .... .... ....
a m1 a m2 a m3 .... a mn
- 32 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación
Table [f, {i, m}, {j, n}] Construye la matriz mxn resultante de la evaluación de f
con i variando desde 1 hasta m y con j variando desde 1
hasta n.
Array[a, n] Construye un vector simbólico de n componentes.
Array[a, {m, n}] Construye una matriz simbólica de dimensiones mxn, cuyo
término i, j – ésimo es a[i, j]
Matrix[[i]] ó Part[M, i] Extrae la fila i-ésima de la matriz M
Matrix[[i, j]] ó Extrae el elemento i, j - ésimo de la matriz
Part[M, i, j]
Dimensions[Matriz] Devuelve las dimensiones de la matriz
MatrixForm[MatrizLista] Expresa en forma de matriz la matriz expresada en
forma de lista MatrizLista.
Range[a,b,d] Construye una lista de números empezando en a y
terminando en b con una diferencia d entre cada par
consecutivo. Los parámetroa a y d son opcionales; si no se
especifican toman por defecto el valor 1.
Ejemplo 21:
Realiza los siguientes cálculos y observa las salidas que produce Mathematica
Mathematica admite las operaciones del álgebra matricial (suma, diferencia, producto,
producto por un escalar), siempre que se respeten las normas habituales en cuanto a la
dimensión de las matrices. También permite el trabajo con matrices triangulares, matrices por
cajas, matrices diagonales, menores, trazas, etc.. Las funciones de Mathematica que permiten
las operaciones con matrices son:
Matemáticas y Mathematica - 33 -
Tema 3: Principios básicos de programación
Es posible pensar en la orden A^n para calcular la potencia n-ésima de una matriz
cuadrada A, pero no obtendríamos el resultado correcto, pues de esta forma se obtiene la
matriz cuadrada obtenida al elevar cada uno de los elementos de A a n. La orden correcta es la
indicada en la tabla: MatrixPower[A, n].
Ejemplo 22:
Realiza los siguientes cálculos y observa las salidas que produce Mathematica
In[] Clear["Global`*"]
m = Table [1/(i + j + 1), {i, 3}, {j, 3}]
MatrixForm[m]
Transpose[m]
P = Inverse[m]
MatrixForm[%]
MatrixForm[P.m ]
Det[m]
MatrixForm[MatrixPower[m, 3]]
DiagonalMatrix[{1, 2, 3, 4}]
IdentityMatrix[4]
- 34 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación
a.- Mathematica proporciona funciones que generan una lista, a partir de otra lista
conocida:
Append, AppendTo, Drop, Insert, Prepend, PrependTo, Rest, Take, Delete y
Replace.
b.- Con Mathematica se puede referenciar un único elemento o una lista de elementos de
una lista con las funciones:
First, Last o Part.
d.- Hay funciones para redistribuir los términos de una lista, para contar, cambiar la
forma, seleccionar y buscar elementos de listas.
Ejemplo 23:
In[] lista1={1,3,4,5,6,7,8,9,10}
lista2={a,b,c,16,10,9}
AppendTo[lista1,15]
Intersection[lista1, lista2]
lista3 = Union[lista1, lista2]
Length[lista3]
Drop[lista3,7]
RotateLeft[lista3,2]
Out[] {1,3,4,5,6,7,8,9,10}
{a,b,c,16,10,9}
{1,3,4,5,6,7,8,9,10,15}
{9,10}
{1,3,4,5,6,7,8,9,10,15,16,a,b,c}
14
{9,10,15,16,a,b,c}
{4,5,6,7,8,9,10,15,16,a,b,c,1,3}
Para ver la forma general de estas funciones y lo que realizan usa la ayuda de
Mathematica:
Built-in Functions
List and Matrices.
Matemáticas y Mathematica - 35 -
Tema 3: Problemas y Ejercicios
3.1- Cuenta la leyenda que Sessa, inventor del ajedrez, presentó el juego a Sheram, príncipe
de la India, que quedó maravillado de lo ingenioso que era y de la variedad de posiciones que
en él eran posibles. Con el fin de recompensarle, le preguntó que deseaba.
Dijo Sessa al día siguiente: Soberano, manda que me entreguen un grano de trigo por la
primera casilla del tablero de ajedrez, dos granos por la segunda, cuatro por la tercera, ocho
por la cuarta, y así sucesivamente hasta la casilla 64.
¿Cuántos granos de trigo le tuvieron que entregar a Sessa?.
3.2.- Hacer un programa en el cual, se le pida al usuario dos números enteros positivos y la
respuesta sea:
a) El máximo común divisor de ambos números.
b) La lista de todos los primos comprendidos entre ambos números.
c) La lista de todos los primos comprendidos entre ambos números pero que no terminen
ni en 7 ni en 9.
1 1
(2 x , y ), 0 ≤ x ≤
f ( x, y) = 2 2
1 1 1
(2 x − 1, + y ) , < x <1
2 2 2
Queremos hacer un programa para aplicar esta función 80 veces al punto (1/5,1/5).
Obtener los resultados de dos formas:
a) Introduciendo el punto como número racional .
b) Introduciendo el punto en coma flotante.
¿Puede hacerlo?.
¿Por qué?.
¿Cambia en algo si la función se define en [0,1]x [0,1]?.
3.4.- Hacer el ejercicio 2.6 del tema 2, pero ahora usando una función recursiva.
Matemáticas y Mathematica - 37 -
Tema 3: Problemas y Ejercicios
• El tercer vaso tiene la mitad de capacidad que el anterior, por lo tanto, conseguimos
una altura total de (15+15/2+15/4) cms. ..........
a.- ¿Cuál será la altura de agua cuando se lleven echados 100 vasos?.
b.- Obtener la altura de llenado cuando el número de vasos tiende a infinito.
c.- Hacer la representación gráfica de los 5 primeros pasos.
d.- Limpia las variables H y h y haz un programa que obtenga la relación que debe existir
entre H y h para asegurar el llenado del recipiente en 50 pasos.
e.- Utilizando Input, queremos que nos pida el valor de H y el valor de h. ¿Se llena el
recipiente con esos valores de H y h a los 50 pasos?.
3.6.- a) En una mezcla perfecta de la baraja, el jugador parte la baraja en dos mitades
exactas y luego las reúne de nuevo intercalando las cartas de cada mitad, asegurándose de que
la primera carta de la primera mitad queda en primer lugar. Por ejemplo, si tiene una baraja de
10 cartas, ordenadas inicialmente en orden ascendente, o sea {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},
después de una mezcla perfecta, la baraja quedaría {1, 6, 2, 7, 3, 8, 4, 9, 5, 10}. Escribir una
función que simule la mezcla perfecta para una baraja de un número par de cartas.
b) Escribir una función que calcule el número de mezclas perfectas necesarias para volver
al orden inicial una baraja de “n” cartas (n par).
Nota: puedes definir una forma para los pares (Even) y otra para los impares (Odd),
además, para definir la recurrencia, tendrás que hacer un cambio de variable. Ejemplo:
a a
si 2 * n = a ⇒ n = y n–1= -1
2 2
3.8.- Generar una lista de 500 enteros aleatorios entre 1 y 10. Obtener otra lista seleccionando
de la lista anterior los números mayores que 5. Decir cuántos sietes y cuántos seis hay en la
lista obtenida.
3.9.- Un grupo de niños/as deciden hacer un juego para ver quien se queda con una caja
sorpresa. El juego consiste en lo siguiente:
Se colocan los niños/as en circulo. Una persona con los ojos tapados señala a un niño/a,
que será el número 1. El número 1 se elimina y girando hacia la derecha, se salta al siguiente
y se elimina el número 3, y así sucesivamente.
Hacer un programa que nos diga, después de introducir el número de niños/as, y de saber
aleatoriamente el niño/a por el que se debe empezar, quien es la persona que se queda con la
caja sorpresa.
- 38 – Matemáticas y Mathematica
Tema 3: Problemas y Ejercicios
3.10.- Realiza un programa, usando la orden For, para multiplicar la matriz A por el vector v.
Comprueba los resultados con la orden directa de Mathematica
d1 d 2 d 3 d 4 d2
1 1 1 1 d1
A= ;v=
0 0 0 0 d3
dm 0 0 dm dm
di son cifras pedidas al usuario y dm es la media aritmética de estas cifras.
i 1 y
3.11.-
1 1 1 1
1+ 2 d 1 1+ 2 d 1+ 4 d 1− d
1− 2 c 3 −1 − 2 c −1 − 4 c c
k 2c −1 2+ 2 c 3+ 4 c 6− c {
2 0 4 3 1
Para la matriz anterior, hallar su traspuesta. Asimismo, determinar las matrices A2 y A3. ¿Cuál
es el determinante de A?. ¿Es invertible? .En caso afirmativo, hallar su inversa.
3.12.- Considera una matriz aleatoria booleana de orden 3x3 y llámale, "a". Considera otra
matriz aleatoria booleana de orden 3x4 y llámale, "b".
Realiza el producto booleano de esas dos matrices y llámale "c".
Encuentra el número de matrices booleanas más pequeñas que c, el número matrices
mayores que c y el número de matrices no comparables con c.
Pide al usuario una matriz booleana de orden 3x4 y que el ordenador conteste si es mayor,
menor, igual o no comparable con c
3.13.- Dos números son amigos si coincide la suma de sus divisores, por ejemplo los números
6 y 11.
Un número es perfecto si la suma de sus divisores exceptuando al propio número
coincide con el número, por ejemplo el 6 es perfecto.
a.- Encontrar los números perfectos comprendidos entre uno y diez mil.
b.- encontrar las parejas de números amigos comprendidas entre el uno y el cien.
Matemáticas y Mathematica - 39 -
Tema 3: Problemas y Ejercicios
3.2.- Por ejemplo si los dos números son a= 123 y b= 234, la salida será:
a.- El M.C.D. es 3
b.-{127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197,
199, 211, 223, 227, 229, 233 }
c.- {131, 151, 163, 173, 181, 191, 193, 211, 223, 233}
Observa que los resultados son correctos, pues Mathematica realiza las operaciones con
números racionales de modo simbólico. Si queremos tener un valor aproximado obtenemos:
(0.2,0.8)
b.- f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[f[
Null]]]]]]]]]]]]]]]]]]]]]]]]]
Observa que no se pueden realizar los cálculos pedidos. Cuando empieza a trabajar sobre
el par (0.2,0.2), al aplicar la función 54 veces obtiene como resultado el par (1.,0.2) y como la
función está definida en [0,1)x[0,1), ya no puede volver a aplicarla . La salida de mathematica
muestra las 25 veces que no puede aplicar la función.
3.4.- Observa que todas las recurrencias son iguales, salvo el valor inicial. Por ejemplo
Clear [f,n]
f [1]:= 2
f[n_]:= 2 + f [ n − 1 ] /;n >1
Table [{n, N [f[n] , 25]} , {n ,1 , 45}]
3.5.-
a.- 29.999999999999999999999999999976334172843369645838
b.- 30.
25
c.- 20
15
10
1 2 3 4 5 6
- 40 – Matemáticas y Mathematica
Tema 3: Problemas y Ejercicios
3.6.Define una función que realice la primera mezcla y utiliza Map para aplicar esa función
todas las veces necesarias para conseguir que la baraja quede como estaba.
Por ejemplo, si hay 12 cartas, son necesarias 10 mezclas.
10
3.7.- 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
0 0
1 1
2 1
3 2
4 3
5 5
6 8
7 13
8 21
9 34
10 55
11 89
12 144
13 233
14 377
15 610
16 987
17 1597
18 2584
19 4181
20 6765
{5,6,7,8,9,10,11,12,1,2,3,4}
{7,8,9,10,11,12,1,2,3,4,6}
Matemáticas y Mathematica - 41 -
Tema 3: Problemas y Ejercicios
{9,10,11,12,1,2,3,4,6,8}
{11,12,1,2,3,4,6,8,10}
{1,2,3,4,6,8,10,12}
{3,4,6,8,10,12,2}
{6,8,10,12,2,4}
{10,12,2,4,8}
{2,4,8,12}
{8,12,4}
{4,12}
{12}
"el niño/a que obtiene el regalo es el número 12
- 42 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
TEMA 4
Out[]
Mathematica también permite representar varias funciones a la vez, siempre que en todas
ellas se considere el mismo dominio para la variable.
• Plot[ {f1, f2, f3,....., fn},{x,xmin,xmax}]
Dibuja las funciones f1, f2, ...., fn, definidas en la variable x , cuando x∈ [xmin , xmax]
Ejemplo 2:
In[] Plot [{Sin[x] , Cos[x] , Exp[x]} , {x,-2*Pi,2*Pi}];
Matemáticas y Mathematica - 43 -
Tema 4: Gráficos con Mathematica
Out[]
Con la representación gráfica del ejemplo 2 es muy difícil saber cual es cada una de las
gráficas. Para poder interpretar mejor la salida de un Plot es conveniente conocer las opciones
con las que se han representado las gráficas, pues, cuando Mathematica dibuja una gráfica,
debe tomar muchas decisiones, y esas decisiones dependen de los valores de Options.
• Options[Plot]
( permite ver todas las opciones para la función Plot con sus valores por defecto).
1
{AspectRatio -> -----------, GoldenRatio FrameTicks -> Automatic,
Axes -> Automatic, GridLines -> None, MaxBend -> 10.,
AxesLabel -> None, PlotDivision -> 20.,
AxesOrigin -> Automatic, PlotLabel -> None,
AxesStyle -> Automatic, PlotPoints -> 25,
Background -> Automatic, PlotRange -> Automatic,
ColorOutput -> Automatic, PlotRegion -> Automatic,
Compiled -> True, PlotStyle -> Automatic,
DefaultColor -> Automatic, Prolog -> {}, RotateLabel -> True,
Epilog -> {}, Frame -> False, Ticks -> Automatic,
FrameLabel -> None, DefaultFont -> $DefaultFont,
FrameStyle -> Automatic, DisplayFunction -> $DisplayFunction}
NombreDeOpcion->valorDeOpcion
Si no se especifica una determinada opción se usa su valor por defecto.
(ver anexo 1, al final de este tema).
- 44 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
Ejemplo3:
In[] Plot[Sin[x],{x,-2*Pi,2*Pi},
PlotRange->{-2,2},AxesLabel->{"eje x","eje y"},
PlotStyle->{Thickness[0.02],RGBColor[1,0,0],Dashing[{0.04,0.04}]},
Frame->True,
Background->RGBColor [0,0,1] ];
Out[]
eje y
2
1.5
1
0.5
0 eje x
-0.5
-1
-1.5
-6 -4 -2 0 2 4 6
Ejemplo 4:
Matemáticas y Mathematica - 45 -
Tema 4: Gráficos con Mathematica
0.5
5 10 15 20
-0.5
-1
¿Qué pasa entre cero y uno ? , veamos la representación ampliada en ese intervalo
0.8
0.6
0.4
0.2
ha representado una recta, sin embargo , la representación correcta, en el intervalo [0,1] es:
0.5
-0.5
-1
- 46 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
contrario, vuelve a dividir este segmento en partes hasta conseguir el ángulo próximo a 180º,
o hasta que se llegue al máximo de subdivisiones permitidas que por defecto es de 20.
c.- Si los puntos los tomara enteros, la representación gráfica sería una recta, pero por
suerte, Mathematica, toma los puntos reales, (al aparecer la función coseno y el número Pi) y
eso hace que los segmentos que va construyendo no formen ángulo de 180º y divida en más
puntos para representar la función, sólo la primera vez sale el ángulo proximo a 180º, por eso
al principio nos da una recta.
d.- Ese es un caso muy particular. De todas formas siempre tenemos la opción de cambiar
el número de puntos a representar con PlotPoints, aunque si tiene que analizar muchos puntos,
tardará más en la realización del gráfico.
Out[]
1
0.75
0.5
0.25
Ejemplo 5:
In[] aa=Plot[x^2,{x,-12,12}]
Out[]
Matemáticas y Mathematica - 47 -
Tema 4: Gráficos con Mathematica
(Observa todos los puntos que ha pintado. Puedes pedir al ordenador que diga todos los
puntos que ha necesitado para representar las gráficas del ejemplo 4)
- 48 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
De esta forma, cada vez que se haga referencia al gráfico “aa” ( para combinarlo con
otro, para modificar sus opciones….), no será necesario evaluar nuevamente la función.
Ejemplo 6:
Nota: La orden DisplayFunction->Identity, se usa para que Mathematica no represente
la gráfica en este momento, pues queremos que lo haga al final, las cuatro en forma de
matriz .
In[] a= Plot[x^2,{x,-2,2},DisplayFunction->Identity];
b=Plot[Cos[x],{x,-1,2},DisplayFunction->Identity];
c=Plot[Sin[x],{x,-1,2},DisplayFunction->Identity];
d=Plot[x^3,{x,-2,2},DisplayFunction->Identity];
Show[GraphicsArray[{{a,b},{c,d}}]];
Out[]
4 1
0.8
3 0.6
2 0.4
0.2
1
-1 -0.5
-0.2 0.5 1 1.5 2
-2 -1 1 2 -0.4
1 0.15
0.75
0.1
0.5
0.25 0.05
Matemáticas y Mathematica - 49 -
Tema 4: Gráficos con Mathematica
( Ver anexo 2, al final del tema, donde se indican algunas de las distintas opciones que
admite Plot3D )
Ejemplo 7 :
In[] Plot3D[Sin[x]*Sin[y],{x,-2,2},{y,-2,2}];
Out[]
1
0.5 2
0
-0.5 1
-1
-2 0
-1
0 -1
1
-2
2
Se puede ver un gráfico desde diferentes puntos de vista cambiando la opción ViewPoint.
¿Cómo sabemos cual es el punto de mira (ViewPoint ) que nos interesa?
Cuando estemos escribiendo el programa para representar un Plot3D, abrimos
1. Input
2. 3D ViewPoint Selector
3. Una vez abierto el selector, eliges las coordenadas y las pegas en el programa (paste)
Ejemplo 8:
In[] a=Plot3D[Sin[x]*Sin[y],{x,-2,2},{y,-2,2},DisplayFunction->Identity];
Show[a ,ViewPoint->{0.202, -2.444, 0.605},
DisplayFunction->$DisplayFunction];
Out[] 1
2
0
-1
-2
1
0.5
-0.5
-2 -1 -1
0 1 2
- 50 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
Una segunda forma de visualizar una función de dos variables consiste en utilizar las
llamadas “curvas de nivel” o “el sistema de planos acotados”. Estas curvas se caracterizan
porque son puntos (x , y) sobre los cuales el valor de f(x , y) es constante. Así, por ejemplo,
en los mapas del tiempo las curvas de nivel que representan los puntos de la misma
temperatura se llaman isotermas y las curvas de igual presión isobaras.
Un mapa que muestre regiones de la superficie terrestre, cuyas curvas de nivel representen
la altura sobre el nivel del mar se llama “mapa topográfico” . En este mapa, se observa la
variación de z= f(x , y) con respecto a x e y. Cuando el espacio entre las curvas de nivel es
grande, significa que la variación de la variable z es lenta.
• ContourPlot [f, {x, xmin, xmax}, { y, ymin, ymax}]
dibuja las curvas de nivel de “f” como función de x e y
Mathematica dispone de tres tipos de gráficos para representar una función de dos
variables Contour, Density y Graphics. Se puede convertir de forma fácil de un tipo a otro.
Ejemplo 9:
Out[]
2
-1
-2
-2 -1 0 1 2
Matemáticas y Mathematica - 51 -
Tema 4: Gráficos con Mathematica
-1
-2
-2 -1 0 1 2
4.4.-GRÁFICAS EN PARAMÉTRICAS
Ejemplo 10:
In[] aaa=ParametricPlot[{4*Cos[6*a]*Cos[a],4*Cos[6*a]*Sin[a]},
{a,0,2*Pi},PlotStyle->RGBColor[1,0,0]];
bbb=ParametricPlot[{6*Cos[4*a]*Cos[a],6*Cos[4*a]*Sin[a]},
{a,0,2*Pi},PlotStyle->RGBColor[0,1,0]];
Show[aaa, bbb,Frame->True,Axes->None,AspectRatio->Automatic];
Show[aaa ,bbb,Frame->True,Axes->None, FrameTicks->None];
Out[] 4
-4 -2 2 4
-2
-4
- 52 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
-6 -4 -2 2 4 6
-2
-4
-6
-2
-4
-6
-6 -4 -2 0 2 4 6
Ejemplo 11:
In[] ParametricPlot3D[{Exp[t]*Cos[u],t,Exp[t]*Sin[u]},{t,-10,10},
{u,0,2*Pi},ViewPoint->{0.970,-3.340,-4.000}];
Out[]
Matemáticas y Mathematica - 53 -
Tema 4: Gráficos con Mathematica
Con Mathematica se pueden dibujar líneas, puntos, círculos y polígonos para construir
objetos gráficos propios (llamados Graphics Primitives); para hacerlo se utiliza Graphics y
Graphics3D.
Para ver una lista completa de los comandos que permiten crear estos elementos puedes
hacer lo siguiente:
• Help
• Function Browser
• Built-in Function
• Graphics and Sond
• Graphics Primitives
• Graphics
así verás en pantalla como usar Graphics, cuales son los gráficos primitivos y cuales son las
opciones que puedes usar.
Ejemplo 12:
In[] d1 = Graphics[Circle[{0,0},5],AspectRatio->1,Axes->True,
AxesLabel->{x,y},Frame->True];
d2 = Graphics[{Hue[0.5],Rectangle[{0,0},{2,5}]}];
d3 = Graphics[{Hue[0.3],PointSize[0.04],Point[{-2,-3}]}];
d4 =Show[d1,d2,d3, DisplayFunction->Identity];
Show[GraphicsArray[{{d1,d2},{d3,d4}}]];
Out[] 4
2
0 x
-2
-4
-4 -2 0 2 4
y
4
2
0 x
-2
-4
-4 -2 0 2 4
- 54 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
Matemáticas y Mathematica - 55 -
Tema 4: Gráficos con Mathematica
- 56 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica
Matemáticas y Mathematica - 57 -
Tema 4: Problemas y Ejercicios
2
x − di 1
( −1) i
+ i: 1,2,3,4
dm dm
Con colores (rojo, azul, verde, y el color que te guste) y cambiando el grosor de dos
parábolas.
4.3.- Dibuja un triángulo, colorea los vértices de rojo, verde y azul. Conecta los puntos
medios para formar otro triángulo. Colorea los vértices de ese nuevo triángulo con el color
mezcla de los colores de los vértices de los que se obtiene.
alrededor de x=0. Utilizar Normal (eliminar el resto de la serie), para convertir el desarrollo
en serie de potencias en una expresión que se pueda dibujar.
a11.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden 1
a12.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden 2
a13.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden 3
a21.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden 4
a22.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden 5
a23.- Representar, conjuntamente, la función y el desarrollo en serie de potencias de orden
1,2,3,4, y 5
b.- Obtener una matriz de gráficas de orden 3x2, cuyos elementos sean las gráficas obtenidas
en los apartados anteriores.
4.5.- Dibujar los puntos de la curva Sen x − Cos x 2 en el intervalo [-2,2] de manera que
parezcan variar de color, desde el verde hasta el azul.
Usa RGBColor[rojo, verde, azul] , sabiendo que:
Matemáticas y Mathematica - 59 -
Tema 4: Problemas y Ejercicios
4.6.- Utilizar PlotStyle para representar, conjuntamente, las gráficas de las funciones:
f( x ) = Sen 2 (x )
g( x ) = Sen ( x + Pi )
de la siguiente forma:
f (x) debe ser representada de color rojo, más gruesa que g (x) y con traza discontinua.
g (x) debe ser representada de color azul, más fina que f (x) y con traza continua.
an = n 2 − n + 5
a.- Usar InterpolatingPolynomial para obtener el polinomio interpolador de esos puntos.
Representar los puntos junto con el polinomio.
b.- Usar Fit para aproximar los puntos a una función de la forma:
b1.- Tiene que tener términos: independiente, en x y en x4
b2.- Tiene que tener términos: independiente, en x, Cos(x) y Sen(x)
b3.- Tiene que tener términos: en x y en ex
b4.- Hacer la representación conjunta de los puntos y de las funciones obtenidas en b1,
b2, y b3
4.8.- Utilizar los gráficos primitivos para realizar el siguiente dibujo, con los colores
indicados:
Olas : celestes
Cuerpo del pez: amarillo
Boca y ojo de pez: rojo
Cola de pez: negra
Palos de sombrilla: azul oscuro
- 60 – Matemáticas y Mathematica
Tema 4: Problemas y Ejercicios
Si quieres hacer cualquier otra animación, sólo tienes que cambiar las funciones.
1 1 + 5 1− 5
n n
an = −
5 2 2
a n +1 a n −1 − a n 2 = 1 n>2
3
2 + Cos 1 + x 2 e 0.5 x
f( x) =
1 + 0.5 Sen( x )
b.- Dividir el intervalo [0, 2 ] en dos partes iguales y considerar los rectángulos:
Matemáticas y Mathematica - 61 -
Tema 4: Problemas y Ejercicios
a +b
• Base [a , ] y altura f(a). (en nuestro caso a=0 y b=2)
2
a +b a +b
• Base [ , b ] y altura f ( ).
2 2
• Representar conjuntamente, los dos rectángulos (cada uno de un color) y la función
(de otro color) .
d.- Repetir el proceso dividiendo cada uno de los rectángulos en dos partes.
e.- Representar conjuntamente, los cuatro rectángulos (cada uno de un color) y la función
(del mismo color que antes) .
g.- Repetir el proceso hasta tener 16 rectángulos, usando para la construcción de dichos
rectángulos la orden For.
4.13.-Crea las figuras necesarias para hacer este dibujo. Mostrando los elementos en distintos
colores.
Realiza una animación haciendo que los círculos pequeños se muevan alrededor del disco
oscuro.
-4 -2 2 4
-2
-4
- 62 – Matemáticas y Mathematica
Tema 4: Problemas y Ejercicios
Polinomio producto: (4+ 4x)(4 + 3x +x2 )(4 + 3x +x3 )(4 + 3x +x4 )(4 + 3x +x5)
15000
10000
5000
0 4 5 10
-5000
-10000
-15000
4.2.- Para los valores d1= 3, d2= 0, d3= 4, d4= 3, obtenemos la salida:
-3 -2 -1 1 2 3
-2
-4
4.3.-
1 + O@xD2,
1 − 1.33134 x2 + O@xD3,
1 − 1.33134 x2 − 0.375563 x3 + O@xD4,
1 − 1.33134 x2 − 0.375563 x3 + 2.2692 x4 + O@xD5,
1 − 1.33134 x2 − 0.375563 x3 + 2.2692 x4 + 1.11024 x5 + O@xD6
Matemáticas y Mathematica - 63 -
Tema 4: Problemas y Ejercicios
1
-1 -0.5 0.5 1
0.9 0.8
0.8 0.6
0.7 0.4
0.6 0.2
0.5
-1 -0.5 0.5 1
1 1.4
0.8 1.2
0.6
0.4 -1 -0.5 0.5 1
0.8
0.2
0.6
-1 -0.5 0.5 1
1.2 1.2
2
4.5.-
1.5
0.5
-2 -1 1 2
-0.5
-1
-1.5
4.6.- 1
0.5
1 2 3 4 5 6
-0.5
-1
4.7.- a) 5+(x-1)x
80
60
40
20
2 4 6 8 10
- 64 – Matemáticas y Mathematica
Tema 4: Problemas y Ejercicios
Apartado b1
-3.58656 +5.43048x+0.00462596x4
apartado b2
-18.1335+10x-4.0161Cos(x)+3.99836Sin(x)
apartado b3
0.00172062Ex +6.10477x
apartado b4
100
80
60
40
20
4 6 8 10
5 10 15 20
5 10 15 20
-0.025
-0.05
-0.075
-0.1
Matemáticas y Mathematica - 65 -
Tema 4: Problemas y Ejercicios
y y = f@xD
2.5
1.5
0.5
x
0.5 1 1.5 2
4.12.- Una salida , cada vez que se rueda debe ser distinta la salida, puede ser:
- 66 – Matemáticas y Mathematica
Tema 5: Packages y ficheros externos
TEMA 5
Para los cálculos más frecuentes, es suficiente usar la versión Standard de Mathematica.
Sin embargo, si trabajamos en un área especializada, podríamos necesitar usar funciones no
construidas en Mathematica; en tales casos, buscaremos un Package que contenga las
funciones necesarias. Los Packages son ficheros escritos en lenguaje Mathematica y consisten
en una colección de definiciones matemáticas sobre áreas particulares.
Muchos paquetes se distribuyen con la versión 4.0 de Mathematica. Cubren áreas como
álgebra, cálculo, matemática discreta, geometría, gráficos, cálculo numérico….
Para utilizar las definiciones contenidas en un Paquete es necesario leerlo. Existen dos
formas de leer un Package:
Ahora podemos pulsar sobre Graphics (o cualquier otro) y se abre una lista de los
Packages de este contexto, es decir los distintos Paquetes que contiene. Ya podemos ver el
contenido de cualquier Package.
Ejemplo 1:
• Graphics`Color` que permite saber las coordenadas de RGBColor para el color que
deseemos usar.
En nuestro ejemplo:
Preguntamos por el color Floral y obtenemos las componentes de su
RGBColor
Matemáticas y Mathematica - 67 -
Tema 5: Packages y ficheros externos
In[] <<Graphics`Colors`
Floral
Out[] RGBColor[1.,0.980407,0.941206]
In[] <<Graphics`Arrow`
<<Graphics`FilledPlot`
FilledPlot[{Cos[x],x^2},{x,0,2Pi},
Fills->RGBColor[1,0.980407,0.941206],
Epilog->{RGBColor[0,0,1],Arrow[{0,4},{0.8,1}],RGBColor[1,0,0],
Text["p. corte",{1,2}]},PlotStyle->RGBColor[0,1,0]];
Out[]
2 p. corte
1 2 3 4 5 6
-1
Resulta muy útil copiar la parte de la demostración que nos interese en nuestro Notebook.
Además, al copiar la llamada al Package y otras partes de los ejemplos, nos evitaremos
errores de escritura, tan normales al usar Mathematica.
Los Packages en los que las definiciones se especifican en un contexto distinto del actual
pueden causar confusiones.
- 68 – Matemáticas y Mathematica
Tema 5: Packages y ficheros externos
In[ ] InversePermutation[{4,8,5,2,1,3,7,6}]
Out[] InversePermutation[{4,8,5,2,1,3,7,6}]
In[] <<DiscreteMath`Combinatorica`
InversePermutation[{4,8,5,2,1,3,7,6}]
Out[]
InversePermutation::shdw :
Symbol InversePermutation appears in multiple contexts
8 DiscreteMath`Combinatorica`, Global`< ; definitions
in context DiscreteMath`Combinatorica` may
shadow or be shadowed by other definitions.
Out[ ] InversePermutation[{4,8,5,2,1,3,7,6}]
a.- Con Remove se elimina el símbolo del contexto Global`, pero no afecta al Package
In[ ] Remove[InversePermutation]
In[ ] <<DiscreteMath`Combinatorica`
InversePermutation[{4,8,5,2,1,3,7,6}]
Out[ ] {5,4,6,1,3,8,7,2}
b.- Eliminando todos los símbolos creados por nosotros en la presente sesión de
Mathematica y esto se hace con:
Matemáticas y Mathematica - 69 -
Tema 5: Packages y ficheros externos
Kernel
Quit Kernel
Local
Hasta ahora, hemos introducido los datos con los que trabajamos de dos formas distintas:
Como ya sabemos, con << se pueden leer ficheros que contienen expresiones de
Mathematica dados en forma input, sin embargo, a veces necesitamos leer ficheros de datos
que estén en otro formato, por ejemplo generados en un programa externo el cual consiste en
una secuencia de números separados por espacios. Estos números no pueden ser leídos
directamente por Mathematica, sin embargo la función ReadLists puede tomar esos números
y convertirlos para ser leídos por Mathematica.
Veamos lo que tenemos que hacer para leer un fichero de datos externo
Lo primero es saber en que directorio estoy, para conocer el directorio actual, debo
preguntar:
Directory[]
SetDirectory [“dir”]
Para ver los ficheros que tenemos en el directorio actual tenemos la función
FileNames[]
• !! file
• ReadList[“file”]
Lee los elementos de un fichero.
• ReadList[“file”,Tipo]
Lee los elementos de un fichero del tipo especificado.
• ReadList[“file”,Tipo,n]
Lee los n primeros objetos del tipo especificado.
.
- 70 – Matemáticas y Mathematica
Tema 5: Packages y ficheros externos
Ejemplo 3:
1 2
3 5
4 6
5.678
-45
Nota: Si el fichero está escrito en exceel hay que guardarlo como “texto con formato”.
!! fichero.txt
1 2
3 5
4 6
5.678
-45
ReadList@"fichero.txt"D
ReadList@"fichero.txt", NumberD
ReadList@"fichero.txt", Number, 5D
81, 2, 3, 5, 4<
Para más información sobre este tema puedes buscar en la ayuda en:
The Mathematica Book
Principies of Mathematica
Files and Strem
Reading Date.
Matemáticas y Mathematica - 71 -
Tema 5: Problemas y ejercicios
5.1.- Calcular el área de la región del plano limitada por las curvas:
f(x) = 1 si x > 0
f(x) = 0 si x < 0
a.- Obtener los tres primeros pasos del desarrollo en serie trigonométrica de Fourier.
Representar conjuntamente, la función en verde y el desarrollo en rojo.
41 9 41 − 9 5 3 5 − 3 29 21 29 − 21
, , , , , , , , , , ,
20 80 20 80 2 8 2 8 10 40 10 40
x2
pertenecen a la cónica: 1 = − 4 y2
4
a.- Representa dichos puntos, cada uno de un color.
b.- Representa, usando el paquete Graphics`ImplicitPlot`, la cónica junto con los puntos.
Matemáticas y Mathematica - 73 -
Tema 5: Problemas y ejercicios
5.5.- Representa en una misma gráfica, las curvas cuyas ecuaciones polares son:
curva1 ϕ = 2 Sen ϖ
curva2 ϕ = 2 Cos ϖ
5.6.- NIntegrate, calcula una aproximación numérica a una integral definida. Para usar
NIntegrate, debemos introducir la expresión de la función que queremos integrar.
Hay situaciones en las que los datos nos llegan de manera experimental y lo que poseemos
es un conjunto de puntos por los que tiene que pasar la función que queremos integrar.
El package <<NumericalMath`ListIntegrate`, realiza una aproximación de la integral
en este caso.
- 74 – Matemáticas y mathematica
Tema 5: Problemas y ejercicios
Encontrar los valores de “a” y “b” para que al enlazar las dos funciones, obtengamos
una función contínua y derivable en el punto 1.
b.- Para los valores de “a” y “b” encontrados en el apartado anterior, dibuja la función y su
derivada en el intervalo [-1,3] representando la región limitada entre ellas.
Matemáticas y Mathematica - 75 -
Tema 5: Problemas y ejercicios
-2 -1 1 2
-1
-2
0.8
0.6
0.4
0.2
-1 -0.5 0.5 1
0.8
0.6
0.4
0.2
-1 -0.5 0.5 1
- 76 – Matemáticas y mathematica
Tema 5: Problemas y ejercicios
5.3.-
1
0.5
-4 -2 2 4
-0.5
-1
1
α
-2 -1 1 2
5.5.- 2
1.5
0.5
-0.5
-1
Matemáticas y Mathematica - 77 -
Tema 5: Problemas y ejercicios
709
La integral usando polinomios de grado 3 es
8
5.7.-
b.1) x < −è 3 »» − è 2 < x < 0
è è
b.2) − 3 <x<− 2 »» 0 < x < 51ê5
b.3) è è
2 < x< 3
è è
b.4) 51ê5 < x < 2 »» x > 3
- 78 – Matemáticas y mathematica
Tema 6: Resolución de ecuaciones y sistemas de ecuaciones
TEMA 6
Mathematica nos permite tratar problemas en los que hay que resolver ecuaciones y
sistemas de ecuaciones. La necesidad de resolver ecuaciones es frecuente en las aplicaciones de
matemáticas a otros campos. Con Mathematica podemos calcular soluciones de ecuaciones
polinómicas, complejas, exponenciales, logarítmicas, etc. incluso si aparecen parámetros.
Cuando el resultado simbólico es imposible, permite la aproximación numérica a las soluciones,
mediante algoritmos de cálculo numérico.
expresión1 = = expresión 2
Conocemos métodos (basados en fórmulas algebraicas) para encontrar las soluciones de una
ecuación polinómica de grado menor que cinco. También se sabe (lo demostró Galois en el siglo
XIX) que estas fórmulas no existen para ecuaciones de grado mayor o igual a cinco. Por esta
razón, para encontrar las soluciones de una ecuación con grado mayor que cinco es necesario
usar métodos numéricos para aproximar dichas soluciones.
Los comandos para la resolución de ecuaciones polinómicas de grado menor que cinco
son:
Solve[ecuación, variable]
o
Roots[ecuación, variable]
que resuelven la ecuación para la variable expresada. El primero nos da una lista con las
soluciones en forma de reglas de asignación, mientras que el segundo ofrece como resultado
una lista de soluciones relacionadas entre sí por operadores lógicos.
Si el grado es mayor, sólo algunas veces se podrá obtener la solución simbólica explícita.
Cuando no se pueda calcular la solución, la orden Solve da como salida una expresión lógica
cuyos valores numéricos se pueden aproximar.
Si queremos utilizar los valores de estas soluciones se puede realizar una asignación de la
forma siguiente y se obtendrá una lista con las soluciones de x:
In[] x ê. %
Out[] x == −1 »» x == 1 »» x == 2 »» x == 3
Ejemplo3: Cuando el grado es igual o superior a cinco será necesario aproximar las
soluciones obtenidas
In[] Solve[x^5 + x -1 = = 0, x]
1 1 i 25 3 è 69 y
1ê3
è 1ê3
:x → − + J I25 + 3 69 MN >,
1 1
3 3k 2 2 {
− +
3 2
i 25 3 è 69 y
1ê3
è
:x → − − I1 + I 3 M
1 1
k
2 {
− −
3 6 2
è è 1ê3
I1 − I 3 M J I25 + 3 69 MN >,
1 1
i 25 3 è 69 y
6 2
1ê3
è
:x → − I1 − I 3 M
1 1
k
2 {
− − −
3 6 2
è è 1ê3
I1 + I 3 M J I25 + 3 69 MN >>
1 1
6 2
In[] N[%]
88x → 0.5 + 0.866025 I<, 8x → 0.5 − 0.866025 I<, 8x → 0.754878<,
8x → −0.877439 + 0.744862 I<, 8x → − 0.877439 − 0.744862 I<<
Out[]
Siempre que Mathematica tiene problemas a la hora de resolver una ecuación polinómica
presenta la solución en función del comando Root y será necesario aproximar:
Ejemplo 4:
In[] N[%]
NSolve[ecuación, variable, n]
o
NRoots[ecuación, variable, n]
donde n indica el número de dígitos de precisión con el que se desean las soluciones de la
ecuación. Este argumento se puede omitir y entonces se trabajará con el valor dado por defecto.
Ejemplo 5:
Reduce[ecuación, variable]
Ejemplo 6:
In[] Reduce[a*x = = 0, x]
Reduce[x^2 + a*x + 2 = = 0, x]
Reduce[a*x^2 + b*x + c = = 0, x]
Nota: Observa que ahora son necesarios * o espacio en blanco, y como analiza los resultados
tanto en función de x como de los parámetros que aparecen.
Para ecuaciones no polinómicas también se pueden usar dos métodos: resolución simbólica
y por aproximaciones numéricas.
En este tipo de ecuaciones es más difícil encontrar soluciones algebraicas, por lo que será
más frecuente usar métodos de resolución mediante aproximaciones numéricas.
Solve[ecuación, variable]
pero puede que no aparezcan todas las soluciones posibles de la ecuación y entonces dará un
mensaje para avisarnos de esta posibilidad. Por ejemplo, cuando la ecuación es complicada o
cuando existe más de una solución o si las soluciones son periódicas, Mathematica ofrece
algunas soluciones y da un mensaje sobre la posibilidad de encontrar otras soluciones
Ejemplo 7:
En otros casos aparece un mensaje que nos indica que podemos intentar encontrar la
solución por métodos numéricos.
Ejemplo 8:
In[] Solve@Sin@xD == x, xD
Out[] Solve::tdep :
The equations appear to involve transcendental functions
of the variables in an essentially non−algebraic way.
Solve@Sin@xD == x, xD
In[] Solve[Exp[x] = = 0, x]
Reduce[ecuación, variable]
que transforma la ecuación en un conjunto de ecuaciones más sencillas que tienen las mismas
soluciones que la ecuación de partida. La salida es un conjunto de igualdades lógicas o
ecuaciones conectadas por operadores lógicos.
Cuando aparezcan parámetros, la orden Reduce realiza un estudio de casos según los
valores que pueda tener el parámetro.
Cuando los comandos anteriores no resuelvan la ecuación, hay que utilizar algún método de
resolución numérica. Mathematica tiene incorporado el método de Newton-Raphson para la
aproximación de soluciones de ecuaciones que no admiten solución formal. Se trata de la orden
que aplica este método iterativo para encontrar una aproximación de una solución posible en el
intervalo [valormin, valormax], tomando como primer término de la sucesión el valor inicial.
Observar que no aproxima todas las soluciones, sino una única solución en el intervalo indicado
(si existen otras soluciones habrá que hacer uso de nuevo de esta orden con distinto valor inicial
y/o distinto intervalo). Si no se especifica el intervalo se considera toda la recta real.
Out[] 8x → 0.0168228<
Ejemplo 13: Para la función Cos(x) – x2 se observa que hay dos raices (basta con dibujar
esta gráfica) por lo que habrá que aplicar dos veces el comando FindRoot:
Out[] -2
-4
-6
In[]
FindRoot@Cos@xD − x^2, 8x, − 1<D -8
8x → −0.824132<
-10
Out[]
Para que la convergencia del método esté garantizada hay que elegir bien el valor inicial (se
suele tomar una raiz aproximada por inspección gráfica). Es importante que no se anule la
derivada de la función en los puntos considerados (para evitar indeterminaciones en el algoritmo)
y también que la función sea derivable y que Mathematica pueda hallar la derivada simbólica de
la función. Cuando se presentan algunos de estos problemas Mathematica da error. Para evitarlo
habrá que dar dos valores iniciales, con la misma instrucción y entonces se usará el método de la
secante.
NSolve[ecuación, variable, n]
que calcula una aproximación de las soluciones de una ecuación mediante un método de
resolución numérica, siendo n el número de dígitos de precisión deseado.
Ejemplo 14:
Las órdenes son las mismas que en el caso de una única ecuación, tanto para hallar
soluciones formales como para aproximación numérica de las soluciones:
Cuando las ecuaciones son algebraicas, se puede usar la orden NSolve con la misma
estructura que la orden Solve.
x - y = 2 ; x2 + y 2 = 8.
-3 -2 -1 1 2 3 4
Se observa que hay dos soluciones de este sistema de
-2 ecuaciones que se pueden encontrar con la orden Solve.
¿Se pueden aproximar las soluciones?
-4
La orden
resuelve el sistema de ecuaciones en las variables indicadas, pero haciendo un estudio de casos
en función de los parámetros que aparecen en el mismo.
Ejemplo 16:
para aproximar una solución del sistema de ecuaciones a partir de los valores iniciales {valor
inicial1, valorinicial2,...}.
x2Cos(y) – yCos(x) =1
xSen(y) – y2Sen(x) = 0
En el estudio de sistemas lineales se pueden usar las ordenes del apartado anterior o bien
tener en cuenta que uns sistema lineal se puede representar de forma matricial:
Por ejemplo: 2x + y = 1
x – 3y = 0
2 1 x 1
se puede tratar de forma matricial como: = ó M.X = B,
1 − 3 y 0
para M matriz de coeficientes del sistema y B matriz de términos independientes.
Para calcular el rango de M y de (M/B) se puede usar la orden Minors (ver tema 3.6) o
bien se pueden realizar transformaciones elementales por filas en esta matrices, lo que se
consigue con la orden
RowReduce[matriz]
Sin embargo, conviene resaltar que esta orden nos da una matriz reducida de Gauss (con
posibles permutaciones de filas). Esto hay que tenerlo en cuenta para elegir vectores o
columnas de matrices de forma adecuada. Observa lo que ocurre en los dos ejemplos
siguientes:
Ejemplo 18
Out[] i 1 0 −1y
0 1 2
0 0 0
k0 0{
0 0 0
0
se obtiene una matriz equivalente a la original con tres filas nulas, lo que nos indica que el
rango de la matriz a es dos.
Ejemplo 19
In[] b ={{0, 0, 0, 0}, {1, 1, 1, 1}, {2, 2, 2, 2}, {1, 0, 0, 0}, {0, 1, 1, 1}}
MatrixForm[RowReduce[b]]
Out[] i1 0 0 0y
0 1 1 1
0 0 0 0
k0 0{
0 0 0 0
0 0
El rango de la matriz b es 2 ya que la matriz reducida tiene dos filas no nulas y tres nulas,
pero si es necesario elegir vectores linealmente independientes no se puede hacer la elección
de forma arbitraria ya que ahora se ha realizado una permutación en la matriz inicial para
calcular la matriz reducida de Gauss. Repasa como se calcula esta matriz.
i1 0y
Out[]
k0 0{
0 1
i1 0 0y
k0 0 1{
0 1 0
Vamos a diferenciar los sistemas de ecuaciones con solución única de los sistemas de
ecuaciones con infinitas soluciones.
B1) Si el sistema tiene solución única, ésta se puede obtener de diversas formas:
J N
Out[] 1 0
0 1
i1 0 3 y
7
k 7 {
0 1 1
En las dos matrices el número de filas no nulas es dos, por lo que este sistema tendrá
solución única que calculamos con
: , >
3 1
Out[]
7 7
que equivale a usar la regla de Cramer, pero que no interesa para un orden de la matriz grande
ya que se requiere un total de (n2 – 1).n! operaciones.
: , >
3 1
Out[]
7 7
Para comprobar de forma rápida la solución encontrada:
Una posibilidad de evitar este tipo de problemas es usar el método de Gauss en lugar de
LinearSolve, por eso en los ejercicios de este tema te proponemos que hagas un programa
usando Mathematica para resolver un sistema de ecuaciones por este método. También
puedes programar el método de Gauss-Jordan
Como pueden ser descomposición LU, QR, en valores singulares, ... de la matriz de
coeficientes.
Si el sistema de ecuaciones tiene infinitas soluciones hay que tener cuidado con la orden
LinearSolve pues nos dará solo una solución particular. En estos casos podemos usar Solve o
Reduce (después de estudiar el sistema de ecuaciones).
x + y + z = 1;
x + y + 2z = 5;
2x + 2y + 3z = 6;
4x+4y+7z = 16
tiene infinitas soluciones y encontrar dichas soluciones
k0 0 0{
0 0 0
i 1 1 0 −3 y
0 0 1 4
k0 0 0 0 {
0 0 0 0
8−3, 0, 4<
Out[]
Out[] Solve::svars : Equations may not give solutions for all "solve" variables.
88x → −3 − y, z → 4<<
Out[] x == −3 − y &&z == 4
O bien, si has hecho el programa para hallar soluciones por método de Gauss para
sistemas con solución única, lo puedes mejorar para casos con infinitas soluciones.
In[] coeficientes =
881, 1, 1, − 2, − 4<, 82, 1, − 1, 1, − 3<, 81, − 2, 0, − 5, − 2<, 84, 3, 1, −3, −11<<;
MatrixForm@ RowReduce@coeficientesDD
i1 0 0 − 3 −9 y
Out[]
2 4
0 1 0 7 −1
4 8
0 0 1 − 9 − 13
k0 0 0 0 {
4 8
0
El rango de la matriz de coeficientes es tres, por tanto, este sistema tiene infinitas
soluciones. Si usas LinearSolve sólo obtendras la solución trivial, pero sabemos sin necesidad
de estudiar el rango de la ampliada que este sistema tiene infinitas soluciones, por tanto no
seria correcta la solución con LinearSolve, igual que antes puedes recurrir al comando
Reduce. (Comprueba que también puedes usar Solve)
In[] Reduce@8x + y + z − 2 t − 4 v == 0,
2 x + y − z + t − 3 v == 0, x − 2 y + z − 5 t − 2 v == 0, 4 x + 3 y + z − 3 t − 11 v == 0<,
8x, y, z, t, v<D
Out[] 17 v 2v 13 v
x == t + && y == − t + && z == 2 t +
9 3 9
Por último veamos como se pueden resolver sistemas de ecuaciones lineales con
parámetros. Vamos a calcular las soluciones del sistema de ecuaciones:
x + y + 2z = 0
ax + y – z = a - 2
3x + ay + z = a - 2
LinearSolve: nos da las soluciones del sistema cuando los valores del parámetro no son
conflictivos, es decir cuando el sistema tiene solución:
In[] Clear@"Global`∗"D
coeficientes = 881, 1, 2<, 8a, 1, − 1<, 83, a, 1<<;
independientes = 80, a − 2, a − 2<;
LinearSolve@coeficientes, independientesD
Out[]
: >
−2 + a − 2+ a 2− a
, ,
2+ a 2+ a 2+ a
Pero no sabemos lo que ocurre cuando el valor de a afecta al rango de las matrices de
coeficientes y ampliada, en el ejemplo a = -2 y a = 2. En estos casos conviene utilizar Reduce
que hace un estudio completo del sistema de ecuaciones:
&& a == 2 »»
y 3y
Out[] z == − && x == −
5 5
2− a − 2+ a −2 + a
−2 + a ≠ 0 &&2 + a ≠ 0 && z == && x == &&y ==
2+ a 2+ a 2+ a
Nota: En algunos de los ejercicios siguientes una representación gráfica te puede ayudar para
decidir que método conviene utilizar.
6.1.- Calcular el área de la región del plano limitada por las curvas:
6.2.- a) Hallar las seis raíces sextas de la unidad, es decir, encontrar las soluciones de x6 = 1 y
comprobar que si se unen entre si forman un hexágono inscrito en la circunferencia de radio 1.
b) Introduce un valor cualquiera n (entero positivo). Halla las raíces n-ésimas de la unidad, es
decir encontrar las soluciones de xn = 1. Dibuja los puntos obtenidos como solución de la
ecuación anterior. Dibujar el polígono de n lados inscrito en la circunferencia unidad.
a) ( )
2
x −1 − 1 + 2 = 2 x − 1
b) 1 − x + 1 + x = a
¿Cuándo tienen sentido las soluciones de b)?
1
b) hallar las soluciones de x +1
− 3a 2 = 0 . ¿Para qué valores de a tiene sentido la solución?
a−e
x 3 / 2 Log ( x) = xLog ( x 3 / 2 )
(a) x +2 x = 2
(b) x + x + x =2
6.7.- De la ecuación x3 –3x2 +3x +c =0, se sabe que “c” es real y que los afijos de sus raices
son los vértices de un triángulo equilátero de lado “k”. Calcular la relación entre “c” y “k”
6.8.- Considera el siguiente diagrama de una malla de calles de un sentido con vehículos que
entran y salen de las intersecciones. La intersección k se denota por [k]. Las flechas a lo largo
de las calles indican la dirección del flujo del tráfico.
Sea xi el número de vehículos por hora que circulan por la calle i.
a) Suponiendo que el tráfico que entra a una intersección también sale, establecer un sistema
de ecuaciones que describa el diagrama del flujo de tráfico. Hallar las soluciones del
sistema. Escribir dichas soluciones.
b) Si se cierra la calle de [1] a [3], es decir si x3 = 0. ¿Puede cerrarse también la calle de [1] a
[4], (x5 = 0), sin cambiar los sentidos del transito?. Si no se puede cerrar, ¿cuál es la
cantidad más pequeña de vehículos que debe circular por esta calle?
1 2 −2 0 1
2 4 −1 0 −4
6.9 - Sean A = yb=
− 3 − 6 12 2 − 12
1 2 − 2 − 4 3
Se tiene una placa rectangular cuyas orillas se mantienen a cierta temperatura. Estamos
interesados en encontrar la temperatura en los puntos interiores, o sea , la temperatura de los
puntos intermedios T1 a T9. Considerar el siguiente diagrama:
6.11.-a) Verificar que un sistema lineal homogéneo con más incógnitas que ecuaciones tiene
infinitas soluciones, para ello generar cuatro matrices aleatorias de orden nxm y m>n y hallar
las soluciones de los sistemas lineales homogéneos.
b) ¿Qué conclusión puedes obtener para la solución de un sistema homogéneo cuya matriz de
coeficientes tiene más ecuaciones que incógnitas?.Genera cuatro matrices aleatorias de orden
nxm y m < n, hallar las soluciones de los sistemas lineales homogéneos.
5 5 8 0
4 5 8 7
6.12.-a) Dada la matriz A = argumentar por qué el sistema de ecuaciones Ax =
3 9 8 9
9 1 1 6
b tiene solución independientemente del vector columna b que se elija.
5 5 −5 0
4 5 −6 7
¿Ocurre la misma situación para la matriz A = ? Encuentra un vector b
c) 3 9 − 15 9
9 1 7 6
para el que no exista solución de Ax = b.
-4 -2 2 4
-1
-2
2.- Para n = 8
raíces octavas de la unidad 1
"
3.- a) x=2, x=10 b) ; :−0.5 a 4. − 1. a2 , 0.5 a " 4. − 1. a2 >
no se puede cerrar la calle de [1] a [3] y de [1] a [4] simultáneamente sin cambiar el sentido.
: >
475 500 475 225 200 225
10.- las temperaturas son: , , , 50, 50, 50, , ,
7 7 7 7 7 7
12.-a)el rango es 4. Para cualquier b será combinación lineal de las columnas de A
TEMA 7
INTRODUCCIÓN A LA CRIPTOLOGÍA
7.1.- INTRODUCCIÓN
4. D es otra familia de aplicaciones {Dk: AÆA, k ∈ K}, que son las transformaciones de
descifrado, tales que:
Generalmente se trabaja con Z27 que identificaremos con el alfabeto español, pero nosotros, para que los
mensajes queden más claros, mientras no se diga lo contrario vamos a trabajar con Z30 , así tendremos la
identificación:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
abcde fg hi j k l m n ñ o p q r s t u v w x y z . ,
Matemáticas y Mathematica -99-
Tema 7: Introducción a la criptología
2.-Su verificación: esta propiedad permite al receptor del mensaje reconocer la fuente
emisora.
Antiguamente los criptosistemas eran usados por los organismos militares y por los
servicios diplomáticos, pero hoy en día también se usan en la industria, banca .... debido a que
garantizan la protección de los datos. En este sentido cabe decir que la criptografía es una
herramienta poderosa, no la única, para proporcionar sistemas de seguridad en los servicios
informáticos.
Todos los sistemas clásicos que vamos a estudiar, pertenecen a la clase de sistemas de
clave privada. De forma general se construyen de la siguiente manera:
Zm
1. A es: o bien
Z xZ ......... xZ r veces con r ≥1
m m m
3. E contiene una sola transformación (por tener K un sólo elemento) que notaremos por
σE
Proposición:
Dados a , b ∈ Zm, consideramos la aplicación
Considerando:
Si tomamos a=1, obtenemos uno de los criptosistemas más antiguos (data de los tiempos
del emperador Julio Cesar) conocido con el nombre de Cifrado Cesar.
Ejemplo1:
Vamos a cifrar el mensaje: llegada nueve y media, con la clave (1,7) y el alfabeto Z30.
Lo primero que hacemos es escribir cada una de las letras como elemento de Z30
11 11 4 6 0 3 0 27 13 21 4 22 4 27 25 27 12 4 3 8 0
Ejemplo2:
Para descifrar este mensaje lo único que tenemos que hacer es lo inverso de lo anterior
por lo tanto:
Mensaje recibido:
rrlnhkhet.l,leceslkoh
2. K es un subconjunto de Z27 x Z27 x ...... Z27 (m veces) formado por un solo elemento es
decir K= {(a1, a2, ......am)}
4. D: estará formado por la transformación de descifrado Da1 a2.....am inversa de Ea1 a2.....am
Ejemplo 3:
K: es el conjunto {(m,e,s,a)}
Hacemos lo mismo con el segundo bloque y obtenemos: Emesa (emat) que se convierte en
E12 4 19 0 (4 12 0 20)= 16 16 19 20 y al cambiar a letras obtenemos: p p s t
Ejemplo 4:
Otro de los sistemas clásicos está basado en la estructura de grupo de las permutaciones
Sn y es el llamado método de trasposición.
aplicar al mensaje cifrado, una vez descompuesto en bloques de orden “n”, la permutación
inversa de Π.
Ejemplo 5:
Ejemplo 6:
12345
Sabiendo que se ha usado la permutación: Π =
52341
Descifrar el mensaje: ” stoeas fe il c”
12345
Primero buscamos la inversa de la permutación Π, que en este caso es:
52341
Las matrices que se suelen usar son matrices autoinversas, es decir matrices que
coincidan con su inversa, de esta forma eliminamos a la hora de descifrar el mensaje el
cálculo de una matriz inversa, pero esto no es obligatorio.
4. D formado solamente por la aplicación σ D (y) = Mnxn –1 (xnx1 – wnx1), teniendo en cuenta
que trabajamos en Z30 y que en caso de considerar matrices autoinversas, M-1 = M
Ejemplo 7:
1 1 12
Utilizando la matriz M= y w = cifrar el mensaje: vacaciones
0 1 22
22 0 20 28 15 13 4 19
22 1 1 22 12 4
σ E = + =
0 0 1 0 22 22
2 1 1 2 12 14
σ E = + =
0 0 1 0 22 22
2 1 1 2 12 22
σ E = + =
8 0 1 8 22 0
4 1 1 4 12 5
σ E = + =
19 0 1 19 22 11
Ejemplo 8:
1 1 1 20
Sabiendo que se ha usado la matriz M = 0 1 1 y W= 12 , descifrar el mensaje:
0 0 1 1
.esbrdvx.
1 −1 0
-1
la inversa de la matriz M es M = 0 1 − 1 por lo tanto para descifrar el mensaje
0 0 1
hacemos (en Z30):
1 − 1 0 28 20 1 −1 0 8 16
0 1 − 1 . 4 − 12 = 0 1 − 1 . 22 = 4 Æ per
0 0 1 19 1 0 0 1 18 18
Fue desarrollado por IBM en 1977 y ha sido implementado tanto en chips como en
software. IBM lo emplea en su estructura de red SN y se ha considerado como algoritmo
estándar de cifrado por numerosas organizaciones internacionales.
2.- 16 iteraciones.
Cifra secuencialmente bloques de 64 bits de texto binario y usa una clave k de 64 bits.
1.- Divide Si en dos bloques de 32 bits. Los 32 bits de la izquierda de Si los denominamos
Li y los otros Ri
2.- Se define:
Li+1 = Ri
KS: N x (Z2)64 Æ (Z2)48 denominada generador de claves, que proporciona una clave
diferente para cada iteración.
El tipo de cifrado visto hasta ahora, presenta varios problemas, (salvo el Des):
• El crecimiento del número de claves frente al aumento del número de usuarios (n) del
sistema.
Para solucionar estos problemas surgen los sistemas de clave pública que se basan en la
utilización de dos claves diferentes para cada usuario, una para el cifrado, que será pública, y
otra para el descifrado, que será privada.
entonces, las correspondientes llaves privadas son diferentes y viceversa. En otras palabras, si
dos sujetos tienen llaves públicas diferentes, entonces sus llaves privadas son diferentes.
La idea es que cada individuo genere un par de llaves: pública y privada. El individuo
debe mantener en secreto su llave privada, mientras que la llave pública la puede dar a
conocer a los demás.
7.3.1.- RSA
Desde su aparición en 1978 el sistema de llave pública RSA (de Rivest, Shamir y
Adleman) ha ganado gran popularidad, por una parte por la gran seguridad que ofrece al basar
ésta en un problema matemático difícil de resolver que había dejado de tener interés en la
comunidad mundial, cómo lo es el Problema de la Factorización Entera "PFE" y a causa del
sistema RSA se ha retomado e incrementado su investigación. Por otra parte, aunque
implementar RSA requiere de mucho cuidado en detalles que son necesarios, la idea de su
funcionamiento es muy simple de entender, lo que lo hace muy popular principalmente en
sectores donde no hay abundancia de matemáticas.
2.a) Calcular n= pq
φ(n)=(p-1)(q-1)
3.a) Calcular d que sea primo relativo con φ(n), es decir MCD(d, φ(n)) = 1
4.a) Elegir un entero e, siendo 1<e<φ(n), y tal que (e*d-1) sea múltiplo de φ(n)
se = m mod(n)
7.2.- Sabiendo que el siguiente mensaje está cifrado con el sistema Cesar y b=9, descifrarlo.
tj.guj,nuj,qlj.g.xvgntgqv.,*aunv,xgn.ynlqjtunv,ngqvmqljmxgyj*jg,*j,j*glxvlny,
x.gjk.,*jl,x.gmnglajtzaqn*gltj.nigegnvgn.,ngljuyxg.agyxmn*gvxg,qnvngtquq,n.
hgn.,xgtxgmqrxgmq*jlh (los espacios en blanco se han sustituido por *)
Daiomsgo∗s∗n∗escueea∗nntporr∗a∗clllaelp,∗∗riem∗eelr∗pornaetg∗aulr∗∗
oopotrsa∗∗lñoos∗u∗sds∗ehs∗i.jEla∗udsneo∗gcetosna∗tqe∗ulepr∗ot∗doudec∗∗
rltaess∗dseed∗eas∗∗∗y3la6∗aes∗ul∗mnr∗úomdeelra∗tpl∗oelqn∗∗uee∗e.
vsi∗Evlie∗mpror∗dcliee∗∗ql∗ueefa∗lu∗tnada∗t∗loe∗∗aym∗eilg∗coosantt∗
qeuame∗∗aylooarc∗∗etlao∗np.∗i¿leC∗us∗álddaa∗∗deed∗∗achiaj∗∗a∗?∗∗∗
7.4.- Mandar la solución a la adivinanza del problema 7.3, cifrada con el método de
transposición y diciendo que permutación has usado.
7.5.- Descifra el siguiente poema, sabiendo que se ha usado el cifrado matricial con
1 1 1 1 1
0 1 1 1 1
M = 0 0 1 1 1 y con w={ 1, 12, 29, 14, 17 }
0 0 0 1 1
0 0 0 0 1
fñkhcyqshg,nzagehfa,tbufalvu.prciifwecnslhl,.yjoourfc,cngt∗qhajjñ.
thutvghe,v,..elbñcch,sañmcggmhugqcañgxy∗ykkñr∗gqhc.rmclwnxñxdtwyfbtiñ
Dos esquimales fueron a pescar, el menor era hijo del mayor, pero el mayor no era su padre,
cómo se explica.
7.1.- hvwhahvahñasulohuahmhuflflraghafliudgratxhakdfhorvafrpaodwkhodwlfd