Sie sind auf Seite 1von 100

Matemáticas y Mathematica

Asignatura: MATEMÁTICAS Y MATHEMATICA


Titulación I. T. I. Sistemas. I.T.I. Gestión
Créditos: Seis
Profesoras: Mª Joaquina Berral e Inmaculada Serrano
Departamento: Matemáticas
Plan de estudios: 1999
Curso: 2001-2002

PROGRAMA DE LA ASIGNATURA

1ª PARTE: Aprendiendo Mathematica

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

Tema 2: Primeros pasos en Mathematica.

2.1. Operaciones aritméticas.


2.2. Funciones matemáticas básicas.
2.3. Cálculo simbólico con Mathematica.

Tema 3: Principios básicos de programación.

3.1. Variables y funciones.


3.2. Expresiones lógicas. Órdenes condicionales.
3.3. Bucles.
3.4. Iteradores.
3.5. Estructuras de control.
3.6. Listas y matrices.

Tema 4: Gráficos con Mathematica

4.1. El comando Plot.


4.2. El comando Plot3D.
4.3. Gráficos de densidad y planos acotados.
4.4. Gráficas en paramétricas.
4.5. Gráficos primitivos.

Tema 5: Packages (paquetes) y ficheros externos.

5.1. Llamada a un package.


5.2. Lectura de un fichero externo al programa.
Matemáticas y Mathematica

2ª PARTE: Utilizando Mathematica

Tema 6: Resolución de ecuaciones y de sistemas de ecuaciones.

6.1. Ecuaciones polinómicas.


6.2. Ecuaciones no polinómicas.
6.3. Ecuaciones no lineales.
6.4. Sistemas de ecuaciones lineales.

Tema 7: Introducción a la criptología.

7.1. Introducción.
7.2. Sistemas clásicos.
7.3. Sistemas de clave pública.

Tema 8: Teoría de grafos con Mathematica

8.1. Forma de introducir un grafo con Mathematica


8.2. Repaso de los conceptos básicos de la teoría de grafos .
8.3. Coloración de grafos.
8.4. Matriz de acceso.
8.5. El problema del camino más corto
8.6. Acoplamientos y problemas de asignación

Tema 9: Matrices y aplicaciones con Mathematica.

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

• Blachman, N., Mathematica : un enfoque práctico, Ariel Informática, 1993.

• Bravo, P., Ferrando,J.C. ,Martínez, Ana. Complementos de Matemática


Discreta,Universidad Politécnica de Valencia.1994.

• Castillo, E. y otros, Mathematica, Paraninfo, 1994.

• Pérez, C., Cálculo simbólico y numérico con Mathematica, ra-ma 1995.

• Ramírez González, V. ..., Matemáticas con Mathematica, Proyecto Sur, 1997.


Matemáticas y Mathematica

• Skiena, S., Implementing Discrete Mathematics, Addison Wesley, 1990.

• Wolfram, S., The Mathematica Book, Wolfram media/ Cambridge University


Press, 1996.

• Inmaculada Serrano. Joaquina Berral. Apuntes de clase: Matemáticas y


Mathematica

OBJETIVOS

El objetivo fundamental de esta asignatura es preparar a los estudiantes para poder


resolver los problemas de matemáticas que se encuentre cuando necesite realizar un
proyecto o en su vida profesional, para ello aprenden a trabajar con el software
Mathematica.

RESEÑA METODOLÓGICA: DESARROLLO DE LAS CLASES

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

Al ser una asignatura práctica, la evaluación es continua, en el sentido de que


vemos día a día los progresos del alumno/a; no obstante, para realizar la evaluación de
cada persona, se tendrá en cuenta lo siguiente:
1.- La evaluación realizada en clase, al ver trabajar al alumno/a.
2.- De los temas 3 a 9, cada grupo debe entregar 2 problemas de los propuestos
como ejercicios. Los problemas deben ir comentados y razonados. Se tendrá en cuenta
la dificultad de los problemas seleccionados.
3.- Al final del cuatrimestre se realizará un examen, en ordenador, relativo a lo
estudiado durante el curso.
4.- El alumno/a que desee tener más nota, puede optar por realizar un trabajo sobre
un tema elegido entre las profesoras y el alumno/a.
Tema 2: Primeros pasos en Mathematica

TEMA 2: PRIMEROS PASOS EN MATHEMATICA

2.1- OPERACIONES ARITMÉTICAS.

Mathematica puede efectuar operaciones aritméticas, manipular números enteros


(Integer), racionales (Rational), reales (Real) y complejos (Complex).

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.

Los operadores aritméticos son los usuales:

+ suma
- diferencia
* o espacio producto
/ división
^ potencia

Ejemplo 1:

In[] 00011001 + 10011101

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

In[] 9345*456 – 345689^6 + 367/4890 *(2346-89)

Matemáticas y Mathematica - 11 -
Tema 2: Primeros pasos en Mathematica

In[] 2/4 + 24/144

In[] 2 + 2/5

Puedes usar muchas constantes usuales en Matemáticas siempre que las escribas en forma
correcta:

Pi (razón entre la longitud de la circunferencia y su diámetro);


E (número base de los logaritmos Neperianos);
I (representa el número imaginario −1 )
Infinity: infinito, etc. ...

Nota: procura no usar estos nombres para variables.

Un número decimal lo interpreta como una aproximación. Si hay un número con


decimales trata toda la expresión como una aproximación. No aproximará los números
irracionales.

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:

In[] 1/2 + 3.5


0.5 + Pi
1/15+1/35+1/63

Si se trabaja con números irracionales representa los resultados de forma exacta.

Ejemplo 3:

In[] Sqrt [13]


E^3 + Sqrt [13]

Si queremos una aproximación de un número real lo indicaremos con la orden

N [número, precisión]

donde en precisión indicamos el número de cifras significativas que queremos considerar. Si


omitimos este argumento, que es opcional, el programa nos dará el resultado con un número
de cifras determinado (habitualmente muestra seis cifras significativas), aunque por defecto
trabaja con dieciseis decimales de precisión.

La función Precisión da el número cifras significativas de un resultado concreto.

Ejemplo 4:

In[] N [ (1 + 5 ) /2]

- 12 - Matemáticas y Mathematica
Tema 2: Primeros pasos en Mathematica

Precisión [%]

Nota: El símbolo % hace referencia a la última salida obtenida por Mathematica. Si


usamos %% se hará referencia a dos salidas anteriores.

Con la función N se puede conseguir más precisión aunque al aumentar la precisión


también aumenta el tiempo que tarda en hacer cálculos.

Ejemplo 5:

In[] N [ (1 + 5 ) /2, 100]


2
N [2 , 500]
3
3
N [3 , 200]

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:

(Compara las salidas con las obtenidas en el ejemplo 3)

In[] Sqrt [13.]


E^3 + Sqrt [13.]

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.

Observa lo que ocurre en los ejemplos siguientes:

Ejemplo 7:

In[] 5 + 0.00000001
Precision [%]

N[5 + 0.00000001, 16]


(5 + 0.00000001)*0.0000000001
N[%, 22]
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

2.2.- FUNCIONES MATEMÁTICAS BÁSICAS.

El programa Mathematica tiene definidas las funciones matemáticas elementales y otras


muchas que se usan con frecuencia en la resolución de problemas de todo tipo. La notación
responde a la abreviatura del nombre inglés de las funciones. Las más usuales son:

Sqrt[x] para raíz cuadrada de x


Exp[x] función exponencial
Log[x] logaritmo neperiano
Log[x, b] logaritmo en base b de x
Sin[x], Cos[x], Tan[x] ... Funciones trigonométricas (con argumento en radianes)
ArcSin[x], ArcCos[x],
funciones trigonométricas inversas
ArcTan[x] ...
Abs[x] valor absoluto del número real x
Sign[x] da + 1 ó -1 según x sea positivo o negativo (sign(0) = 0)
Redondea x al valor entero más próximo al decimal
Round[x]
dado
Floor[x] Redondea x al entero más próximo por defecto
Ceiling[x] redondea x al entero más próximo por exceso
Rationalize[x] convierte un número decimal a forma de fracción
Chop[x] devuelve el valor 0 si x < 10 -m (m = 10 por defecto)

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:

In[] Rationalize [2.718284]


Round [ (1 + 5 ) /2]
Round [N [ (1 + 5 ) /2 ]]
Chop [0.000000000003]

Hay varias funciones incorporadas para trabajar con números complejos:

- 14 - Matemáticas y Mathematica
Tema 2: Primeros pasos en Mathematica

Re (devuelve la parte real del complejo),


Im (devuelve la parte imaginaria del complejo),
Conjugate (devuelve el conjugado del complejo),
Abs (devuelve el módulo del complejo).

Ejemplo 9:

In[] (5 + 3I)/(8 - 7I)


Re [5 + 3I]
Im [5 + 3I]
Conjugate [5 + 3I]
Abs [4 + 3I]

2.3.- CÁLCULO SIMBÓLICO CON MATHEMATICA.

Mathematica maneja perfectamente el cálculo matemático simbólico. Manipula con


facilidad y rapidez las fórmulas y expresiones algebraicas y realiza la mayoría de las
operaciones: desarrollar, factorizar y simplificar polinomios o expresiones racionales; encontrar
soluciones de ecuaciones y sistemas de ecuaciones, evaluar derivadas e integrales
simbólicamente, encontrar soluciones de ecuaciones diferenciales, manipular series de potencias,
límites y muchas otras facetas de las Matemáticas Aplicadas.

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:

In[] Expand[((x + 2)(x + 1) - (x + 2)^2)^3]


Factor[%]

Calcula el valor numérico del polinomio anterior en x = -2

x 3 + 3x 2 + 3x + 1
In[]
x 2 + 2x +1
Numerator[%]
Denominator[%%]
Factor[%]

Para obtener la simplificación en fracciones simples tenemos el comando Apart. Para


saber algo más sobre este u otros comandos puedes ir a la ayuda o bien teclear:

?Apart

Matemáticas y Mathematica - 15 -
Tema 2: Primeros pasos en Mathematica

y podrás leer una explicación sobre el comando.

3x 2 + 8 x + 2
In[] Apart[ ]
x 2 − 5x + 6
Together[%]
ExpandDenominator[%]
Factor[Numerator[%]]

In[] Expand[((a + b)^23 - (a - b)^21)^3]


Simplify[%]

 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

EJERCICIOS CORRESPONDIENTES AL TEMA 2

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

2.2.-Aproxima con 20 cifras decimales el valor de

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.6- Calcula para 10 términos y 50 decimales:

2 2 2 ..........

¿Se podrá generalizar el resultado para n n n .......... ?.

Matemáticas y Mathematica -17-


Tema 2: Problemas y Ejercicios

Nota: Puedes usar la orden Input (Busca en ayuda).

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 

 2 sen( x) cos( x) arc tg 


g(x) = Ln  e x

 cos(2 x) 

b) Calcula las derivadas de órdenes 2 y 3 de las siguientes funciones:

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]

Calcula las siguientes integrales:

∫ ∫x
dx
a) e x cos( x) dx b)
x 2 −1


dx 1
c) 2

x −1 d)

−1
1− x 2 dx

2.9- Comprobar si son ciertas las igualdades:

-18- Matemáticas y Mathematica


Tema 2: Problemas y Ejercicios

a) e π i +1= 0
1 1 1 1 
b) =  − 
x −1 2  x −1 x +1 
2

Matemáticas y Mathematica -19-


Tema 2: Problemas y Ejercicios

ALGUNAS SOLUCIONES O INDICACIONES A LOS PROBLEMAS Y


EJERCICIOS DEL TEMA 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

b1) de orden dos: 2 I4 x2 CosA2 x2E + SinA2 x2EM

de orden tres 24 x CosA2 x2E − 32 x3 SinA2 x2E


" "
b2) de orden dos: 2−2+ x Log@2D 2−2+ x Log@2D2
x3ê2
− +
x
è è
de orden tres 2−3+ x Log@2D I3 − 3 x Log@2D + x Log@2D2M
x5ê2

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

-20- Matemáticas y Mathematica


Tema 3: Principios básicos de programación

TEMA 3

PRINCIPIOS BÁSICOS DE PROGRAMACIÓN

Como se ha dicho en la introducción, Mathematica no es sólo un paquete de cálculo


simbólico, en el que se introduce una expresión y se obtiene un resultado. Es también un
lenguaje de programación, que tiene la posibilidad de realizar tareas complejas. Cualquier
programa escrito en Mathematica puede incorporar todos los comandos de Mathematica,
dando lugar a un enorme enriquecimiento del mismo.

Mathematica es un lenguaje desarrollado en C, por lo tanto el propio lenguaje de


programación Mathematica hereda gran parte de la estructura del C.

3.1.- VARIABLES Y FUNCIONES.

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.

No es necesario declarar las variables que integran un programa. En general,


Mathematica reconoce como variable toda expresión que no sea un número, una palabra
reservada del lenguaje o un comando de Mathematica.

La asignación de un valor a un nombre, se puede hacer de dos formas:

a.- Evaluación inmediata


nombre = expresión

b.- Evaluación cuando se efectúe una llamada al nombre


nombre : = expresión

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

En el primer ejemplo a vale 2, pero en el segundo a toma el valor 3.

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.

Si queremos eliminar el valor de todas las variables, usaremos la orden:

Clear[“Global`*”]

Nota: en todos los ejemplos, suponemos que las variables utilizadas han sido
limpiadas.

Para cambiar el valor de una variable podemos hacer lo siguiente:

++i incrementa i en 1 y devuelve el nuevo valor


i++ devuelve el valor de i y luego lo incrementa
x+= d añade d a x y devuelve el nuevo valor de x
x-=d resta d a x y devuelve el nuevo valor de x
x∗=c multiplica x por c y devuelve el nuevo valor de x
x/=c divide x por c y devuelve el nuevo valor de x

Estas notaciones se pueden usar después de haber asignado un valor a x.

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.

Para definir una función, usaremos una estructura del tipo:

nombre [ variable1_ , variable2_ , ....] = expresión


o
nombre [ variable1_ , variable2_ ,....] := expresión

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

f [x ] en la tercera línea vale 9, f ‘ [x] en la cuarta vale 6, pero f [x ] en la sexta línea da


una salida de x2 y en la séptima una salida de 2x.

Al definir la función como en el ejemplo con “ x_”, le estamos indicando a Mathematica


que asigne el nombre “ x ” al argumento de f. Así la función f puede ejecutarse cuando se le
da cualquier expresión como argumento.

In[] f[9+4 x^2]

Out[] (9+ 4x^2)^2

Si hubiésemos definido la función del ejemplo 3 de la siguiente manera:

In[] f[x]:= x^2


f[y]

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:

Vamos a definir la función g: R3 R2

 ( 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

Lo que hacemos en el programa es:


1. Definir la función en cero.
2. Definir la función en 1.
3. Definir para todo entero n mayor que 1, la función de manera recursiva (el término
“n” en función de los dos términos anteriores).
4. Pedimos el valor de la función en 6.

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]

Out[] {1,36,16,Pi2, variable2}

Puedes ver más operadores funcionales, usando la ayuda de Mathematica

3.2.- EXPRESIONES LÓGICAS. ÓRDENES CONDICIONALES

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 >=

En función de la veracidad o falsedad de una expresión lógica es posible decidir si se


realiza una u otra acción. Las ordenes que tienen esta misión son las llamadas condicionales:

• If[ condición, proceso1, proceso2]


Cuando condición es cierta se evalúa proceso 1, y cuando es falsa, proceso 2.
Ya lo hemos usado en en el ejemplo 4.

Nota: los procesos pueden estar formados por varias órdenes separadas por “ ; ”

Ejemplo 8:

In[] Delta [x_ ] : = If [x= = 0,1,0]

Ejemplo 9:

In[] If [(a<3)(b= = 4), Print [a]; Print [b], Print [“falso”]]


Obtenemos en pantalla los valores de a y b si se verifica a<3 ó b=4, en caso contrario
obtenemos el mensaje: falso.

• Which [condición1, proceso1, condición2, proceso2,.....,]


Evalúa consecutivamente las condiciones 1,2,.... hasta que encuentra una cierta y
devuelve el valor de la expresión asociada.

Ejemplo 10:

In[] f[x_] := Which [ 2<x<6 , x^3, 6<=x<6.5 , x+8, True,0]

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:

Definimos una función y después le decimos que la represente, cambiando el grosor de


la línea de representación ( mediante PlotStyle->Thickness[0.01]) .

Observa lo que hace la representación en cero, los puntos de salto de la función,


Mathematica los enlaza.

In[] h[x_] := If [x <0,1,0]


Plot [h[x],{x,-2,2},PlotStyle->Thickness[0.01]];

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

• For [contador = inicio, condición, paso, proceso ]


Realiza las órdenes que aparecen en el bloque proceso (separados por “ ; ” ) tantas veces
como valores tome contador, desde el inicio y mientras condición sea cierta, variando
su valor según el salto indicado en paso.

• Do [ proceso, { contador, inicio, fin, paso }]


Evalúa repetidamente el proceso para cada uno de los valores del contador comenzando
en inicio hasta fin, incrementando el valor del contador indicado en paso.

• 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..

a) In[] For [ i =1, i <= 20, i++, Print [i,” “, i ^3]]

Matemáticas y Mathematica - 29 -
Tema 3: Principios básicos de programación

b) In[] Do[ Print [i, “ “,i ^ 3],{i, 1 , 20}]

c)In[] i=1
While [i <= 20, Print [ i, “ “, i ^ 3] ; i =i+1]

3.4.- ITERADORES

Existen en Mathematica dos órdenes directas para calcular sumas y productos,


dependiendo de un contador:

• Sum [ expresión, { contador , inicio, fin, paso} ]

• Product [ expresión, { contador , inicio, fin, paso} ]

Ejemplo 14 :

In[] Sum [ i^2, {i, 2, 20, 2}]

In[] Product [ i^2, {i, 2, 20, 2}]

Realizan respectivamente, las suma y producto de los cuadrados de los números pares
comprendidos entre dos y veinte, ambos incluidos.

3.5.- ESTRUCTURAS DE CONTROL

Permiten controlar directamente el desarrollo del programa. Son las siguientes:

• 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.

In[] raíz[x_] : = (If [x< 0, Return [ “número negativo” ] ] ; Return [ x^ (1/2)] )


- 30 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación

Si preguntamos por el valor de raíz [-3] obtenemos: número negativo.


Si preguntamos por el valor de raíz [9] obtenemos: 3

• Throw [ expresión ]
Termina la ejecución de todas las funciones que se estén evaluando y devuelve la
expresión como resultado.

3.6.- LISTAS Y MATRICES

Una lista es un conjunto de datos dispuesto en una estructura del tipo:

{ dato1, dato2, …..}

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}]

Out[] { 1, 16, 81}


{0, 1, Sqrt [2] / 2}

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 :

{{1, 2, 3, 1},{4, 5, 6, 2},{7, 8, 9, 3}}


se puede considerar como una matriz de orden 3x4.

3.6.1.- Construyendo tablas de valores usando listas

• Table [expresión, {contador, inicio , fin , paso}]


Genera una lista con tantas componentes como valores toma el contador desde el valor
inicio al valor fin con el paso indicado. Como siempre, si el paso es uno, puede
omitirse. También puede omitirse inicio y paso si ambos son uno.

• Table[expresión, {contador1, inicio1, fin1, paso1},{contador2, inicio2, fin2, paso2}]


Genera una tabla de elementos con tantas filas como valores tome el contador 1 y
tantas columnas como valores tome el contador2.

Matemáticas y Mathematica - 31 -
Tema 3: Principios básicos de programación

Ejemplo 19:

In[] v= Table[3i,{i,1,7,2}]

Asigna a la variable v la lista { 3 , 9 ,15 , 21}

In[] a= Table [ i*j ,{i , 4},{j , 2 , 6 , 2 }]

Asigna a la variable “a” la siguiente lista de listas (tabla) :


{{2 , 4 , 6 },{4 , 8 , 12 },{6 , 12 , 18 },{8 , 16 , 24 }}

Ejemplo 20:

Utiliza una función predefinida Table y otras dos definidas por el usuario, llamadas "f" y
"g".

In[] f[n_]:= Table[g[i],{i,n}]


g[m_] := Table[i!,{i,m}]
f[7]

Out[] {{1}, {1, 2}, {1, 2, 6}, {1, 2, 6, 24},


{1, 2, 6, 24, 120}, {1, 2, 6, 24, 120, 720},
{1, 2, 6, 24, 120, 720, 5040}}

3.6.2.- Usando Matrices

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 

se introduce de la forma siguiente:

A = {{a[1,1], a[1, 2],...a[1,n]},{a[2,1], a[2,2], ...a[2,n]},......,{a[m,1], a[m,2],... a[m,n]}}

- 32 – Matemáticas y Mathematica
Tema 3: Principios básicos de programación

Conviene indicar que, la estructura {1, 2, 3, 4} Mathematica la considera como una


matriz fila, asimilada a {{1, 2, 3, 4}}, aunque no es una lista formada por listas, y también
como una matriz columna, es decir, identificada con {{1},{2},{3},{4}}.

Las funciones básicas que utiliza Mathematica con matrices son:

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

In[] Range[2, 15, 3]


b = Table[ i + j, {i, 4}, {j, 3}]
a = Array[ aa, {3, 4}]
MatrixForm[%]
Dimension[a]
MatrixForm[b]
MatrixForm[a]
b[[2, 3]]
a[[2]]
Part[ b, 3]
Part[ b, 2, 3]

3.6.3.- Operaciones con matrices.

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

A+B Suma de las matrices A y B


A–B Diferencia de las matrices A y B (A menos B)
cM ó c M ó c* M Producto del escalar c por la matriz M
A.B Producto de las matrices A y B (A por B)
Inverse[A] Matriz inversa de la matriz A
MatrixPower[A,n] Potencia n-ésima de la matriz A
Det[A] Calcula el determinante de la matriz A
Transpose[A] Calcula la matriz traspuesta de la matriz A
IdentityMatrix[n] Genera la matriz identidad de orden n
DiagonalMatrix[lista] Genera la matriz diagonal con los elementos de la lista en la
diagonal
Table[0, {m}, {n}] Define la matriz cero de orden mxn
Table[If [i > = j, a, 0], Define una matriz triangular con ceros por encima de la diagonal
{i, m}, {j, n}] principal y cuyos términos no nulos valen a
Table[If [i < = j, a, 0], Define una matriz triangular con ceros por debajo de la diagonal
{i, m}, {j, n}] principal y cuyos términos no nulos valen a
MatrixQ[expresion] Da True si la expresión es una matriz y falso en caso contrario
Minors[M, k] Devuelve los menores de orden k (matrices de dimensión kxk de
la matriz M)

Conviene observar que el producto entre dos matrices “multiplicables”, A y B, se calcula


en Mathematica escribiendo un punto decimal entre ambas, es decir, A.B, mientras que la
orden A*B indica que el producto se efectúe elemento a elemento.

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].

La orden Transpose[{1, 2, 3, 4}] da como resultado {1, 2, 3, 4}. El resultado esperado se


produce cuando se utiliza la representación de una matriz fila como una lista formada por una
única lista, por ejemplo {{1, 2, 3, 4}}.

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

DiagonalMatrix[{Pi, Pi/2, Pi/4}]

3.6.4.- Trabajando con componentes de listas.

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.

c.- También hay funciones para combinar listas:


Complement, Intersection, Join, Union.

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

PROBLEMAS Y EJERCICIOS CORRESPONDIENTES AL TEMA 3

De este tema tienes que entregar: Problema 13


Problema 14
Los dos problemas entregados deben estar perfectamente documentados

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.

3.3.- Definimos la función f: [0,1) x [0,1) R2 de la siguiente forma:

 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.

3.5.- Vamos a trabajar con 50 cifras de precisión.


Disponemos de un bote de base cuadrada (20 cms2 de área) y altura H = 30 cms. Vamos a
llenar el bote de agua de la siguiente forma:
• Con el primer vaso conseguimos una altura de 15 cms. (h = 15 cms.)
• El segundo vaso tiene la mitad de capacidad que el anterior, por lo tanto, conseguimos
una altura total de (15 + 15/2) cms.

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).

3.7.- Dada la función:


f( 2 n ) = 2. f ( n -1 ) . f ( n ) + f ( n ) 2
f( 2 n+1 ) = f ( n + 1 ) 2 + f ( n ) 2
Definirla usando la recurrencia y tomando los valores iniciales: f[0]=0,f[1]=1

Obtener una tabla de los 20 primeros valores de f.

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.

3.14-a) Escribe las tablas de Z11 para la suma y el producto.


b) Resuelve la siguiente ecuación en Z11
x2 +3x+4 = 0

c) Calcular las soluciones, en Z7 del sistema de ecuaciones : x + 2y = 4


4x + 3y = 4

¿Tiene el sistema alguna solución en Z5? . Razona todas las respuestas

Matemáticas y Mathematica - 39 -
Tema 3: Problemas y Ejercicios

ALGUNAS SOLUCIONES O INDICACIONES A LOS PROBLEMAS Y EJERCICIOS


DEL TEMA 3

3.1.- El número de granos es: 18446744073709551615

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}

3.3.- a.- {1/5, 4835703278458516698824701/6044629098073145873530880}

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.

Si definimos la función en el intervalo cerrado [0,1] x [0,1], si puede aplicarla 80 veces y


la salida sería: (1.,1.) que está muy lejos del valor verdadero obtenido en el apartado a .

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.

81, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12<

81, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12<

81, 4, 7, 10, 2, 5, 8, 11, 3, 6, 9, 12<

81, 8, 4, 11, 7, 3, 10, 6, 2, 9, 5, 12<

81, 10, 8, 6, 4, 2, 11, 9, 7, 5, 3, 12<

81, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 12<

81, 6, 11, 5, 10, 4, 9, 3, 8, 2, 7, 12<

81, 9, 6, 3, 11, 8, 5, 2, 10, 7, 4, 12<

81, 5, 9, 2, 6, 10, 3, 7, 11, 4, 8, 12<

81, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10, 12<

81, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12<

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

3.9.- Indicación: puedes usar Rest y RotateLeft,


si hay 12 niños/as y se empieza por el situado en la posición 5, obtenemos:

{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

3.11.- La matriz tiene inversa si d es distinto de cero.

- 42 – Matemáticas y Mathematica
Tema 4: Gráficos con Mathematica

TEMA 4

GRÁFICOS CON MATHEMATICA

Podría decirse que la posibilidad de dibujo ha influido notablemente en la difusión y


utilización de Mathematica, esta es una de las principales diferencias con otros paquetes
simbólicos.

4.1.- EL COMANDO Plot

• Plot[f[x],{x, xmin, xmax}]


(ya lo hemos usado en tema 3)
Dibuja la función f, definida para la variable x, cuando x ∈ [xmin, xmax]
Ejemplo 1:
Definimos la función pfac1(x) y la representamos en el intervalo [600,1200].
In[] pc=1000;
pfac1[x_]:= Which[x<0.85*pc, 0.85*pc,
0.85*pc<= x <=1.05* pc, x,
x>1.05*pc, x+2*(x-1.05*pc)]
cc=Plot[pfac1[x],{x,600,1200}];

Nota: El “ ; ” al final de la línea Plot es para que al programa de Mathematica no


escriba, después de la representación gráfica, la palabra -Graphics-

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}

Las opciones se pueden especificar en cualquier orden después de los argumentos

• Plot[ expresión, { x, xmin, xmax }, opciones]


Las opciones se especifican dando el nombre de la opción junto con su valor. Una opción
es una regla de la forma

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

Hemos realizado lo siguiente:


Representamos el seno cuando
• x ∈ [ -2π , 2π ]
• y ∈ [ -2, 2]
• Los ejes se etiquetan con “eje x”, “eje y”
• El estilo de la gráfica es el siguiente:
• El trazado se ha realizado de manera más gruesa gracias a Thickness. El número
entre corchetes representa la razón entre el ancho de línea y el ancho total de la
gráfica.
• El color es rojo ( RGBColor[1,0,0] )
• Se hace un trazado con líneas discontinuas ( Dashing ).
• Se pone marco a la gráfica.
• El fondo lo ponemos azul.
Mathematica, para realizar un gráfico con Plot, evalúa la función en un número
determinado de puntos, según indique la opción PlotPoints. El valor por defecto de ese
número es 25, aunque se puede modificar sin dificultad.
Si el número de puntos no es el adecuado, la gráfica que devuelve el programa puede no
ser la auténtica, como vemos en el siguiente ejemplo:

Ejemplo 4:

(la opción PlotRange permite ver la gráfica de la función en el intervalo y∈[-1,1])

Matemáticas y Mathematica - 45 -
Tema 4: Gráficos con Mathematica

In[] Plot[Cos[2*Pi*x] ,{ x,0,24}, PlotRange-> {-1,1}];


Out[]
1

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

0.2 0.4 0.6 0.8 1

ha representado una recta, sin embargo , la representación correcta, en el intervalo [0,1] es:

0.5

0.2 0.4 0.6 0.8 1

-0.5

-1

¿Cómo hace Mathematica las gráficas?


a.-Evalúa la función en tantos puntos como se le indique en PlotPoints (por defecto toma
25 puntos), igualmente separados.
En nuestro caso x0 = 0, x1 = 1……… x24 = 24
b.- Construye los segmentos {{x0,f(x0)},{x1,f(x1)}}, {{x1,f(x1)},{x2,f(x2)}}.Si el ángulo
que forman está próximo a 180º, representa el segmento{{x0, f(x0)},{x1,f(x1)}}, en caso

- 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.

Si el programa cambia la opción PlotPoints, obtendremos la siguiente respuesta

In[] Plot[Cos[2*Pi*x] ,{ x,0,24}, PlotPoints->70,


PlotRange-> {{0,1},{-1,1}}];

Out[]
1
0.75
0.5
0.25

0.2 0.4 0.6 0.8 1


-0.25
-0.5
-0.75
-1

Siempre que Mathematica realiza un gráfico guarda información sobre él. Si


consideramos

Ejemplo 5:
In[] aa=Plot[x^2,{x,-12,12}]

Out[]

Matemáticas y Mathematica - 47 -
Tema 4: Gráficos con Mathematica

Con InputForm[aa] obtenemos la información guardada de ese gráfico.


En nuestro caso:
Graphics[{{Line[{{-12., 144.}, {PlotRange -> Automatic,
{-11., 121.}, {-10., 100.}, AspectRatio -> GoldenRatio^(-1),
{-9., 81.}, DisplayFunction ->
{-8., 64.00000000000001}, $DisplayFunction,
{-7., 49.00000000000001}, ColorOutput -> Automatic,
{-6., 36.}, {-5., 25.}, Axes -> Automatic,
{-4., 16.}, {-3., 9.}, AxesOrigin -> Automatic,
{-2.5, 6.25}, {-2., 4.}, PlotLabel -> None,
{-1.5, 2.25}, AxesLabel -> None,
{-1.25, 1.5625}, {-1., 1.}, Ticks -> Automatic,
{-0.75, 0.5625}, GridLines -> None, Prolog -> {},
{-0.625, 0.390625}, Epilog -> {},
{-0.5, 0.25}, AxesStyle -> Automatic,
{-0.375, 0.140625}, Background -> Automatic,
{-0.3125, 0.09765625}, DefaultColor -> Automatic,
{-0.25, 0.0625}, DefaultFont :> $DefaultFont,
{-0.1875, 0.03515625}, RotateLabel -> True,
{-0.15625, 0.0244140625}, Frame -> False,
{-0.125, 0.015625}, FrameStyle -> Automatic,
{-0.09375, 0.0087890625}, FrameTicks -> Automatic,
{-0.0625, 0.00390625}, FrameLabel -> None,
{-0.03125, 0.0009765625}, PlotRegion -> Automatic}]
{0., 0.},
{0.03125, 0.0009765625},
{0.0625, 0.00390625},
{0.09375, 0.0087890625},
{0.125, 0.015625},
{0.1875, 0.03515625},
{0.25, 0.0625},
{0.3125, 0.09765625},
{0.375, 0.140625},
{0.5, 0.25},
{0.625, 0.390625},
{0.75, 0.5625}, {1., 1.},
{1.25, 1.5625}, {1.5, 2.25},
{2., 4.}, {2.5, 6.25},
{3., 9.}, {4., 16.},
{5., 25.}, {6., 36.},
{7., 49.00000000000001},
{8., 64.00000000000001},
{9., 81.}, {10., 100.},
{11., 121.}, {12., 144.}}]}},

(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.

Podemos pedir que lo muestre con


• Show[aa]
Si queremos dibujar varias gráficas en forma de matriz, se usa la orden:
• Show[GraphicsArray[ ]]

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

-1 -0.5 0.5 1 1.5 2 -2 -1-0.05 1 2


-0.25
-0.5 -0.1
-0.75 -0.15

4.2.- EL COMANDO Plot3D

• Plot3D[Expr.,{x, xmin, xmax}, { y, ymin, ymax}, opciones]


Dibuja un gráfico en el espacio tridimensional de una función de dos variables x e y .
Para la elección de los puntos en que evalúa la función para determinar la gráfica de la
superficie, el programa divide el rectángulo determinado por los valores máximo y mínimo de
las variables x e y en cuadrículas regulares. La opción PlotPoints Indica el número de
divisiones en una dimensión y en otra. Así, por defecto el valor es 15, el número de puntos en
el que evaluará la función es 225 puntos (15*15).

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

4.3.- GRÁFICOS DE DENSIDAD Y PLANOS ACOTADOS.

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

• DensityPlot[f, {x, xmin, xmax}, { y, ymin, ymax}]


Representa un gráfico de densidades

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:

In[] ContourPlot[Sin[x]*Sin[y],{x,-2,2},{y,-2,2}, ColorFunction -> Hue];


DensityPlot[Sin[x]*Sin[y],{x,-2,2},{y,-2,2}, ColorFunction -> Hue];

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

• ParametricPlot[ {fx , fy },{t , tmax., tmin.}]


Realiza una gráfica en paramétricas.

• ParametricPlot3D[ {fx ,fy ,fz },{t , tmax., tmin.}]


Realiza una gráfica tridimensional de una curva dada en paramétricas

• ParametricPlot3D[ {fx ,fy fz},{t , tmax., tmin.} },{u , umax., umin.}]


Realiza una gráfica tridimensional de una superficie dada 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

¿Qué se consigue con AspectRatio->Automatic?

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

4.5.- GRÁFICOS PRIMITIVOS

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

PROBLEMAS Y EJERCICIOS CORRESPONDIENTES AL TEMA 4

De este tema tienes que entregar: Problema 13


Otro cualquiera de los problemas de este tema
Los dos problemas entregados deben estar perfectamente documentados

4.1.- Pide dos números al usuario (d1 y d2 ).


Genera un vector de 5 componentes, donde la componente i sea,
x i + d1 x + d 2
Efectúa la suma y el producto de esos 5 polinomios y representa el polinomio suma con
los ejes centrados en el punto (d1, 0) y con marcas en el eje de las x en los valores: 0, 5, 10, d2.

4.2.- Hacer un programa en el cual se le pidan al usuario 4 números, (d1,d2,d3,d4), llama dm


a la media aritmética de los números .
Representar conjuntamente las parábolas

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.

4.4.- Hallar el desarrollo en serie de potencias (de orden 1, 2, 3, 4 y 5) para aproximar la


función:
1
1 + ( )
π 0.5 + x .(sen( x)) 2

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

• RGBColor[1,0,0] es el color rojo


• RGBColor[0,1,0] es el color verde
• RGBColor[0,0,1] es el color azul

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.

4.7. - Generar una tabla de los 10 primeros términos de la sucesión

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

Tela de sombrilla: verde

4.9. – Vamos a hacer una animación:


a.- Utilizando Do, representa las 19 funciones siguientes
Sen(x) cuando x ∈ [ n, n+0.5] y n varia de 1 hasta 10 con salto de 0.5. Represéntalas
todas en el intervalo real [ 0, 10].

b.- Agrupa las 19 gráficas y cierra las celdas.

c.- Con las celdas marcadas, ve a Animate Selected Graphics.

Si quieres hacer cualquier otra animación, sólo tienes que cambiar las funciones.

4.10.- a.- Considerar la sucesión recurrente de Fibonacci (ejemplo 5, tema 3)


y obtener una gráfica donde:

• La abscisa represente n: 0, ….,21


• La ordenada el tiempo de cálculo para cada uno de los 21 términos de la sucesión,
usando la recurrencia

b.- la fórmula general de la sucesión de Fibonacci es:

1   1 + 5  1− 5 
n n

an =   −  
5   2   2  

Obtener una gráfica donde:


• La abscisa represente n : 0,…., 21
• La ordenada el tiempo de cálculo para cada uno de los 21 términos de la sucesión,
usando el término general.

c.- Obtener alguna conclusión de las gráficas anteriores.

d- Comprobar usando Mathematica que la sucesión de Fibonacci cumple:

a n +1 a n −1 − a n 2 = 1 n>2

4.11.-a.- Representar gráficamente, en el intervalo [0,2], la función:

  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) .

c.- Calcular la suma de las áreas de los dos rectángulos.

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) .

f.- Calcular la suma de las áreas de cuatro rectángulos.

g.- Repetir el proceso hasta tener 16 rectángulos, usando para la construcción de dichos
rectángulos la orden For.

h.- Calcular usando Mathematica la integral de la función en el intervalo dado.

i.- Comparar los resultados obtenidos.

4.12.- Generar una lista de 50 puntos aleatorios en el espacio.


Representar conjuntamente esos 50 puntos, cada uno de un color (también aleatorio) de
manera que cada vez que se ejecute el programa, además de cambiar los puntos, cambie el
color de la representación.

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

ALGUNAS SOLUCIONES O INDICACIONES A LOS PROBLEMAS Y


EJERCICIOS DEL TEMA 4

4.1 Para d1 = 3 y d2 = 4 obtenemos la siguiente salida:

Polinomio suma: 20 +16x +x2 + x3 + x4 +x5

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.-

4.4.- El desarrollo de orden ( 1, 2, 3, 4 y 5 respectivamente ) es:

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

-1 -0.5 0.5 1 -1 -0.5 0.5 1


0.8 0.8
0.6
0.6
0.4

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

4.10.- La primera gráfica pedida es :


10

5 10 15 20

La segunda gráfica pedida es:


0.1
0.075
0.05
0.025

5 10 15 20
-0.025
-0.05
-0.075
-0.1

tienes que sacar conclusiones de las gráficas.


Para el último apartado, tienes que tener en cuenta que mathematica puede operar
simbólicamente .

Matemáticas y Mathematica - 65 -
Tema 4: Problemas y Ejercicios

4.11.- la representación con 16 rectángulos es:

y y = f@xD

2.5

1.5

0.5

x
0.5 1 1.5 2

El área será: 4.50966


Aunque mathematica tiene la opción de hacer la integral por Simpson, y pidiendole el valor
,nos saldria directamente el resultado" 4.51841

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

PACKAGES (PAQUETES) Y FICHEROS EXTERNOS

5.1.- LLAMADA A UN PACKAGE.

Como ya hemos visto, la mayoría de las funciones de Mathematica están escritas en


lenguaje C. Sin embargo, posee un lenguaje con el que poder crear a su vez nuevas funciones
y programas, por ejemplo Integrate o LaplaceTransform están escritas en Mathematica.

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:

a.- <<contexto `nombre del paquete`


donde contexto es el nombre del directorio que contenga el Package.

b.- Needs[“contexto`nombre del paquete`”]


de esta manera si el paquete ya está cargado no lo volverá a cargar.

Para ver el contenido de cualquier Package, podemos hacer lo siguiente:


• Help.
• Find in Help Browser.
• Add-Ons.
• Standard Packages.

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:

Hacemos una llamada al contexto Graphics y vamos a utilizar tres paquetes,

• 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

• Graphics`Arrow` que permite dibujar flechas.


En nuestro ejemplo:
La flecha la coloreamos de azul.
El origen de la flecha está en el punto (0,4) y el extremo en el punto (0.8,1).
El mensaje está escrito en rojo y con texto “p.corte”, dicho texto está centrado
en el punto (1,2).

• Graphics`Filled`que permite sombrear una región entre dos curvas.


En nuestro ejemplo:
Sombreamos de color Floral

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.

Si llamamos a una función antes de cargar el Package en el que está definida,


Mathematica devuelve el input sin evaluar.

Ejemplo 2: Queremos calcular la inversa de una permutación

- 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}]

Mathematica no evalúa la función porque no hemos cargado el Package


correspondiente. Puesto que Mathematica no sabe nada acerca de la función
InversePermutation, crea el símbolo en nuestro contexto actual (Global`), y a partir de ahora,
Mathematica conoce ese símbolo.

Si ahora cargamos el Package, cuando pido información sobre InversePermutation, no


estoy accediendo al símbolo definido en el Package, estoy accediendo al símbolo
InversePermutation que hay en el contexto actual y que fue creado cuando llamé por primera
vez a InversePermutation. La función InversePermutation está definida en el contexto
DiscreteMath, en el package Combinatorica pero no puedo acceder a ella puesto que
Mathematica busca primero en el contexto actual.

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.

(Te avisa de que puede haber problemas entre las variables)

Out[ ] InversePermutation[{4,8,5,2,1,3,7,6}]

Es decir, para poder trabajar con InversePermutation definida en Mathematica tenemos


que eliminar el símbolo InversePermutation del contexto actual y eso lo podemos hacer de
dos formas:

a.- Con Remove se elimina el símbolo del contexto Global`, pero no afecta al Package

In[ ] Remove[InversePermutation]

Y una vez eliminada, puedo acceder a la definición del Package

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

5.2.- LECTURA DE UN FICHERO EXTERNO AL PROGRAMA.

Hasta ahora, hemos introducido los datos con los que trabajamos de dos formas distintas:

1. Por teclado, mediante la orden Input.

2. Introduciendo los datos en el programa.

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[]

Si quiero ir a otro directorio

SetDirectory [“dir”]

Para ver los ficheros que tenemos en el directorio actual tenemos la función

FileNames[]

Podemos ver el contenido de un fichero de datos que se encuentre en el directorio actual

• !! 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:

En este ejemplo vamos a leer , de distintas formas, el contenido de un fichero llamado


“fichero.txt” (este fichero se ha escrito en Word y guardado como texto) que se encuentra en
el subdirectorio donde estoy trabajando y que es el siguiente:

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

82, 15, 24, 5.678, − 45<

ReadList@"fichero.txt", NumberD

81, 2, 3, 5, 4, 6, 5.678, − 45<

ReadList@"fichero.txt", Number, RecordLists −> TrueD

881, 2<, 83, 5<, 84, 6<, 85.678<, 8− 45<<

ReadList@"fichero.txt", Number, 5D

81, 2, 3, 5, 4<

ReadList@"fichero.txt", Number, 5, RecordLists −> TrueD

881, 2<, 83, 5<, 84<<

¿Has observado lo que pasa cuando pido ReadLists[“fichero.txt”]

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.

También puedes buscar información en ReadList y sus opciones a la hora de leer.

Matemáticas y Mathematica - 71 -
Tema 5: Problemas y ejercicios

PROBLEMAS Y EJERCICIOS CORRESPONDIENTES AL TEMA 5

De este tema tienes que entregar: Problema 8


Otro cualquiera de los problemas de este tema
Los dos problemas entregados deben estar perfectamente documentados

Antes de empezar la sesión de Mathematica, llama a los packages que necesites, te


evitarás conflictos entre variables, funciones….

5.1.- Calcular el área de la región del plano limitada por las curvas:

y= x. Sen(x+ 3) y = 2.Cos(x) x=-2 x=2

Representa gráficamente el área calculada anteriormente.

5.2.- Utilizando el Package Calculus`FourierTransform`, hacer un programa que realice lo


siguiente:
Considerar la función definida en el intervalo [-1,1], de la siguiente forma

f(x) = 1 si x > 0
f(x) = 0 si x < 0

(esta función se define en Mathematica como UnitStep[x], {x,-1,1})

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.

b.- Mediante un Input, darle un número natural y obtener como respuesta la


representación conjunta de la función y su desarrollo en serie trigonométrica de
Fourier hasta el número dado.

5.3.- Los puntos del plano:

 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.

5.4.- Hacer un programa en el cual, dando las coordenadas de un vector en R2 y un ángulo


( en radianes), obtengamos una salida de:

- Coordenadas del vector, una vez efectuado un giro de θ


- Representación gráfica del vector inicial y del vector girado.

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.

¿Cómo trabaja este paquete?


1.- Si le damos "k", agrupa los puntos de k en k para obtener polinomios de interpolacion
de grado "k-1", por defecto k = 4
2.- Integra dichos polinomios.

5.61.- Dados los puntos {1,4},{2,6},{3,7},{4,9},{5,26},{6,25},{7,30}, pedimos una


aproximación de la integral que pasa por los puntos en los siguientes casos:

a.- Construyendo polinomios de grado 1.


b.- Construyendo polinomios de grado 2.
c.- Construyendo polinomios de grado 3.

5.62.- Consideramos la función del tema 4, problema 11 y tomamos 56 puntos igualmente


distribuidos en el intervalo [0,2].
Calcular la integral de la función que pasa por esos puntos. Compara los resultados
actuales con los obtenidos en el tema 4.
Obtener conclusiones y explicarlas.

5.7.- a.- Encontrar los valores de"x", para los cuales:

a.1.- x/Abs[x-1]¥0 y 1/x<x+1

a.2.- x/Abs[x-1]§0 y 1/x>x+1

a.3.- x/Abs[x-1]¥0 o 1/x>x+1

b.- Resolver las siguientes inecuaciones:

b.1. − x( x 2 − 2)( x 2 − 3) < 0 y x5 − 5 < 0

b.2 − x( x 2 − 2)( x 2 − 3) > 0 y x5 − 5 < 0

b.3 − x( x 2 − 2)( x 2 − 3) < 0 y x5 − 5 > 0

b.4 − x( x 2 − 2)( x 2 − 3) > 0 y x5 − 5 > 0

- 74 – Matemáticas y mathematica
Tema 5: Problemas y ejercicios

5.8.- Dadas las funciones:


f(x) = ax + 3 definida para x<1 y

g(x) = x2 + 2ax + b definida para x >= 1

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

ALGUNAS SOLUCIONES O INDICACIONES A LOS PROBLEMAS Y


EJERCICIOS DEL TEMA 5

5.1.- el área es 7.08551


2

-2 -1 1 2

-1

-2

b.- el áres es 14.5065

5.2.- La representación para los tres primeros términos es:

0.8

0.6

0.4

0.2

-1 -0.5 0.5 1

La serie de Fourier considerando los 23 primeros pasos es:


1 2 Sin@π xD 2 Sin@3 π xD 2 Sin@5 π xD 2 Sin@7 π xD
+ + + + +

2 Sin@9 π xD 2 Sin@11 π xD 2 Sin@13 π xD 2 Sin@15 π xD


2 π 3π 5π 7π
+ + + +

2 Sin@17 π xD 2 Sin@19 π xD 2 Sin@21 π xD 2 Sin@23 π xD


9π 11 π 13 π 15 π
+ + +
17 π 19 π 21 π 23 π

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

5.4.- Para el vector {2,6} y el ángulo Pi/4 la representación será:

1
α

-2 -1 1 2

5.5.- 2

1.5

0.5

-1 -0.5 0.5 1 1.5 2

-0.5

-1

5.6.1.- La integral usando polinomios de grado 1 es 90


709
La integral usando polinomios de grado 2 es
8

Matemáticas y Mathematica - 77 -
Tema 5: Problemas y ejercicios

709
La integral usando polinomios de grado 3 es
8

5.6.2.- Tomando 56 puntos , la integral usando polinomios de grado 1 es: 4.51885

la integral usando polinomios de grado 2 es: 4.5184

la integral usando polinomios de grado 3 es: 4.5184

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

RESOLUCIÓN DE ECUACIONES Y DE SISTEMAS DE ECUACIONES

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.

6.1- ECUACIONES POLINÓMICAS

Una ecuación en Mathematica se escribe mediante la expresión lógica de igualdad, es decir:

expresión1 = = expresión 2

y un sistema de ecuaciones mediante una lista de ecuaciones

{expresión 1 = = expresión2, expresión3 = = expresión4, ...}

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.

Ejemplo 1: Como el grado de la ecuación es menor que cinco no es necesario aproximar,


obtenemos la solución exacta:

In[] Solve[x^4 - 5x^3 + 5x^2 + 5x - 6 = = 0, x]

Out[] 88x → −1<, 8x → 1<, 8x → 2<, 8x → 3<<

Matemáticas y Mathematica -79-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

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[] 8−1, 1, 2, 3<

Ya se puede asignar un nombre a esta lista y calcular cualquier elemento de ella.

Ejemplo 2: Para la misma ecuación, usamos Roots

In[] Roots[x^4 - 5x^3 + 5x^2 + 5x - 6 = = 0, 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]

:8x → H−1L <, 8x → − H−1L <,


Out[] 1ê3 2ê3

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[] Solve[x^9 + x^8+x^7 = = 1, x]

-80- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

88x → −I<, 8x → I<, 8x → Root@−1 + #1 − #1 + #1 + #1 &, 1D<,


2 4 6 7
Out[]
8x → Root@−1 + #1 − #1 + #1 + #1 &, 2D<,
2 4 6 7

8x → Root@−1 + #1 − #1 + #1 + #1 &, 3D<,


2 4 6 7

8x → Root@−1 + #1 − #1 + #1 + #1 &, 4D<,


2 4 6 7

8x → Root@−1 + #1 − #1 + #1 + #1 &, 5D<,


2 4 6 7

8x → Root@−1 + #1 − #1 + #1 + #1 &, 6D<,


2 4 6 7

8x → Root@−1 + #1 − #1 + #1 + #1 &, 7D<<


2 4 6 7

In[] N[%]

Out[] 88x → −1. I<, 8x → 1. I<, 8x → 0.870994<,


8x → −0.943723 − 0.388391 I<, 8x → − 0.943723 + 0.388391 I<,
8x → −0.619861 − 0.995101 I<, 8x → − 0.619861 + 0.995101 I<,
8x → 0.628087 − 0.638417 I<, 8x → 0.628087 + 0.638417 I<<

Otra forma de calcular aproximaciones numéricas de las soluciones de una ecuación


polinómica es con la estructura:

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:

In[] NSolve@x^7 + x + 1 == 0, x, 20D


88x → −0.7965443541284571037<,
8x → −0.7052980879371502388 − 0.6376237698062315126 I<,
Out[]
8x → −0.7052980879371502388 + 0.6376237698062315126 I<,
8x → 0.1237618805114774059 − 1.0566500111970737496 I<,
8x → 0.1237618805114774059 + 1.0566500111970737496 I<,
8x → 0.9798083844899013847 − 0.5166768838399120711 I<,
8x → 0.9798083844899013847 + 0.5166768838399120711 I<<

Otro comando interesante es Reduce, que simplifica todo lo posible la ecuación en la


variable dada y considera sus soluciones, tanto en términos de la variable como en los de
posibles parámetros incluidos en la ecuación; además ofrece las soluciones con nexos lógicos
entre ellas. La sintaxis es:

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]

Matemáticas y Mathematica -81-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

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.

6.2- ECUACIONES NO POLINÓMICAS

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.

Para encontrar las soluciones simbólicas se puede hacer uso de la orden

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:

In[] Solve@Sin@xD ∗ Cos@xD == 0, xD

Out[] Solve::ifun : Inverse functions are being used by


Solve, so some solutions may not be found.
:8x → 0<, :x → − >, :x → >>
π π
2 2

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

Ejemplo 9: Observa como da salidas infinito (o menos infinito) en este ejemplo:

In[] Solve[Exp[x] = = 0, x]

Out[] Solve::ifun : Inverse functions are being used by


Solve, so some solutions may not be found.
88x → −∞<<

-82- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

En el caso de ecuaciones no polinómicas la estructura Roots queda reemplazada por

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.

Ejemplo 10: Encontramos las soluciones del ejemplo 7 con Reduce

In[] Reduce@Sin@xD ∗ Cos@xD == 0, xD


Reduce::ifun : Inverse functions are being used by
Out[] Reduce, so some solutions may not be found.
x == 0 »» x == − »» x ==
π π
2 2

Ejemplo 11: Observa lo que ocurre cuando hay parámetros

In[] Reduce@ Exp@a ∗ xD == 1, xD


Reduce::ifun : Inverse functions are being used by
Out[]
Reduce, so some solutions may not be found.
a == 0 »» x == 0

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

FindRoot[ecuación, {variable, valor inicial, valormin, valormax}]

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.

Ejemplo 12: Intentamos encontrar las soluciones del ejemplo 7

FindRoot@Sin@xD == x, 8x, 1<D


In[]

Out[] 8x → 0.0168228<

In[] FindRoot@Sin@xD == x, 8x, − 1<D


8x → −0.0168228<
Out[]

Matemáticas y Mathematica -83-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

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:

In[] FindRoot@Cos@xD − x^2, 8x, 1<D


8x → 0.824132<
-3 -2 -1 1 2 3

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.

Si la ecuación es algebraica, también se puede usar la orden

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:

In[] NSolve[(1-Sqrt[x])/x^2= = Sqrt[x - 1], x]


Out[] 88x → −0.346457 − 0.785428 I<, 8x → − 0.346457 + 0.785428 I<,
8x → 1.<<

6.3.- SISTEMAS DE ECUACIONES NO LINEALES

También se puede utilizar Mathematica cuando se quiere resolver un conjunto de


ecuaciones, lineales o no, con un número arbitrario de variables independientes.

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:

Solve[{ecuación1, ecuación2,...}, {variable1, variable2,...}]

Cuando las ecuaciones son algebraicas, se puede usar la orden NSolve con la misma
estructura que la orden Solve.

-84- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

Ejemplo 15: Observa la gráfica siguiente.

Usando ImplicitPlot se han dibujado las gráficas de


2

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

In[] Solve@8x − y == 2, x^2 + y^2 == 8<, 8x, y<D


99x → 1 − è 3 , y → − 1 − è 3 =, 9x → 1 + è 3 , y → −1 + è 3 ==
Out[]

Para aproximar las soluciones podemos usar:

In[] NSolve@8x − y == 2, x^2 + y^2 == 8<, 8x, y<D


88x → −0.732051, y → − 2.73205<, 8x → 2.73205, y → 0.732051<<
Out[]

La orden

Reduce[{ecuación1, ecuación2,...}, {variable1, variable2,...}]

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:

In[] Reduce@8x ê a + y == 1, x^2 − y == − 1<, 8x, y<D

Out[] a ≠ 0&& y == 1 && x == 0 »» a ≠ 0 && y == 1 +


1 1
2
&& x == −
a a

En sistemas de ecuaciones también se puede usar la orden:

FindRoot[{ecuación1, ecuación2,...}, {variable1, valorinicial1},


{variable2,valorinicial2}, ...]

para aproximar una solución del sistema de ecuaciones a partir de los valores iniciales {valor
inicial1, valorinicial2,...}.

Ejemplo 17: Para aproximar una solucion del sistema de ecuaciones

x2Cos(y) – yCos(x) =1
xSen(y) – y2Sen(x) = 0

tomando como valores iniciales x = 0 e y = 0


Matemáticas y Mathematica -85-
Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

In[] FindRoot@8x^2 ∗ Cos@yD − y ∗ Cos@xD == 1, x ∗ Sin@yD − y^2 ∗ Sin@xD == 0<,


8x, 0<, 8y, 0<D

Out[] 8x → 0., y → −1.<

6.4. SISTEMAS DE ECUACIONES LINEALES

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.

Si tenemos que resolver un sistema de ecuaciones lineales conviene realizar dos


pasos:

A) El estudio de las soluciones

Ya sabemos que lo podemos hacer utilizando el teorema de Rouche-Frobenius: un


sistema lineal de ecuaciones tiene solución si rango(M) = rango(M/B)

Si además rango(M) = nº de incógnitas del sistema sabemos que la solución es única y


cuando este rango es menor que el número de incógnitas tendremos infinitas soluciones.

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

In[] a = Table [i + j, {i, 5}, {j, 3}];


MatrixForm[RowReduce[a]]

Out[] i 1 0 −1y
0 1 2
0 0 0

k0 0{
0 0 0
0

-86- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

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.

Ejemplo 20: ¿Cómo sabemos que un sistema de ecuaciones es incompatible?.Estudiar el


sistema de ecuaciones:
x+y =1
2x + y = 1
3x + 2y = 6

In[] coeficientes = 881, 1<, 82, 1<, 83, 2<<;


ampliada = 881, 1, 1<, 82, 1, 1<, 83, 2, 6<<;
MatrixForm@ RowReduce@coeficientesDD
MatrixForm@ RowReduce@ampliadaDD

i1 0y
Out[]

k0 0{
0 1

i1 0 0y

k0 0 1{
0 1 0

El rango de la matriz de coeficientes es dos mientras que el de la matriz ampliada es 3

B) El cálculo de las soluciones (cuando las tenga el sistema).

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:

i) con la orden LinearSolve[m, b]

Matemáticas y Mathematica -87-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

Ejemplo 21: Estudiar y hallar las soluciones del sistema 2x + y = 1


x-y=0

In[] coeficientes = 882, 1<, 81, − 3<<;


ampliada = 882, 1, 1<, 81, − 3, 0<<;
MatrixForm@ RowReduce@coeficientesDD
MatrixForm@ RowReduce@ampliadaDD

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

In[] LinearSolve@coeficientes, 81, 0<D

: , >
3 1
Out[]
7 7

Observa las soluciones y la última columna de la orden RowReduce[ampliada]. ¿puedes


obtener alguna conclusión?. ¿Por qué ocurre esto?

ii) si la matriz de coeficientes es cuadrada, con Inverse[m].b ,

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.

Recordamos que tampoco se podrá usar si la matriz de coeficientes no es cuadrada, ¿cuándo


ocurre esta situación?

Ejemplo 22: Para el sistema del ejemplo anterior

In[] Inverse@coeficientesD . 81, 0<

: , >
3 1
Out[]
7 7
Para comprobar de forma rápida la solución encontrada:

In[] coeficientes.% == 81, 0<


True
Out[]

iii) Por métodos directos de resolución de ecuaciones:

-88- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

Existen numerosos algoritmos para encontrar las soluciones de un sistema lineal de


ecuaciones usando métodos directos, entre ellos ya conocéis el método de Gauss:

transformando el sistema inicial usando operaciones elementales (se permite el intercambio de


ecuaciones y restar a una ecuación el producto de otra ecuación por un escalar) en otro
sistema de ecuaciones con las mismas soluciones que el sistema inicial pero más fácil de
resolver ya que este último se puede resolver usando método de remonte. Otro método usual
es el de Gauss-Jordan, similar al anterior pero se hacen las operaciones elementales por
debajo y por encima de la diagonal principal.

¿Por qué es necesario programar un algoritmo como el de Gauss si con LinearSolve se


obtienen soluciones directas?. Observa lo que pasa en los siguientes ejercicios:

Ejemplo 23: Calcula, con LinearSolve, las soluciones de


H.x = b
1
en el que H es la matriz de Hilbert de orden 15: hij = , i, j = 1,...15
i + j −1
y b es una matriz formada por 15 números aleatorios (puedes usar b= Table[Random[],{15}]).

Comprueba si efectivamente has encontrado la solución del sistema planteado.

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

iv) haciendo alguna descomposición conveniente

Como pueden ser descomposición LU, QR, en valores singulares, ... de la matriz de
coeficientes.

Para hallar soluciones de sistemas con estos métodos ver tema 9.

v) por método de mínimos cuadrados.

Ver también tema 9.

B2) Solución de sistemas con infinitas soluciones

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).

Ejemplo 24: Comprobar que 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

Matemáticas y Mathematica -89-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

coeficientes = 881, 1, 1<, 81, 1, 2<, 82, 2, 3<, 84, 4, 7<<;


terindep = 81, 5, 6, 16<;
In[]
ampliada = 881, 1, 1, 1<, 81, 1, 2, 5<, 82, 2, 3, 6<, 84, 4, 7, 16<<;
MatrixForm@ RowReduce@coeficientesDD
MatrixForm@ RowReduce@ampliadaDD
Out[]
i1 1 0y
0 0 1

k0 0 0{
0 0 0

i 1 1 0 −3 y
0 0 1 4

k0 0 0 0 {
0 0 0 0

Como el rango de la matriz de coeficientes es igual al rango de la matriz ampliada pero


menor que el número de incógnitas podemos afirmar que tiene infinitas soluciones. Si usamos
LinearSolve sólo obtendremos una solución particular de este sistema de ecuaciones y no la
solución general:

In[] LinearSolve@coeficientes, terindepD

8−3, 0, 4<
Out[]

Si deseamos todas las soluciones podemos usar Solve:

In[] Solve@8x + y + z == 1, x + y + 2 z == 5, 2 x + 2 y + 3 z == 6, 4 x + 4 y + 7 z == 16<,


8x, y, z<D

Out[] Solve::svars : Equations may not give solutions for all "solve" variables.
88x → −3 − y, z → 4<<

También se puede usar Reduce:

In[] Reduce@8x + y + z == 1, x + y + 2 z == 5, 2 x + 2 y + 3 z == 6, 4 x + 4 y + 7 z == 16<,


8x, y, z<D

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.

B3) Sistemas de ecuaciones lineales homogéneos con solución no trivial:

Si el sistema de ecuaciones es homogéneo también hay que tener cuidado porque


LinearSolve sólo nos dará la solución trivial. Para saber si el sistema tiene otras soluciones
será necesario comprobar que el rango de la matriz de coeficientes es menor que el número de
incógnitas y de nuevo utilizar Solve o Reduce:

-90- Matemáticas y Mathematica


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

Ejemplo 25: Hallar las soluciones del sistema lineal homogéneo


x + y + z –2t –4v = 0
2x + y – z + t – 3v = 0
x – 2y + -5t –2v = 0
4x + 3y + z - 3t - 11v = 0

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:

Matemáticas y Mathematica -91-


Tema 6: Resolución de ecuaciones y sistemas de ecuaciones

In[] Reduce@8x + y + 2 z == 0, a ∗ x + y − z == a − 2, 3 x + a ∗ y + z == a − 2<, 8x, y, z<D

&& 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

-92- Matemáticas y Mathematica


Tema 6: Problemas y Ejercicios

PROBLEMAS Y EJERCICIOS CORRESPONDIENTES AL TEMA 6

De este tema tienes que entregar: Problema 7


Otro cualquiera de los problemas de este tema
Los dos problemas entregados deben estar perfectamente documentados

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:

y= x. Sen(x+ 3) y = 2.Cos(x) x=-4 x=4

Representa gráficamente el área calculada anteriormente.


(este problema es parecido al problema 1 del tema anterior)

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.

6.3.- Resolver las siguientes ecuaciones irracionales:

a) ( )
2
x −1 − 1 + 2 = 2 x − 1
b) 1 − x + 1 + x = a
¿Cuándo tienen sentido las soluciones de b)?

6.4.- Encontrar las soluciones de las ecuaciones trigonométricas:


3
a) Cos ( x) + Sen( x) =
2
b) Sen( x) + Sen(3 x) = 0
1
c) xSen( x) =
2
En los tres casos comprobar con una gráfica que se han calculado todas las soluciones de las
ecuaciones.
3
6.5- a) Resolver la ecuación exponencial: 2 ( x ) = 4(2 3 x )
Dibuja la gráfica de las funciones que aparecen en cada miembro de la ecuación y comprueba
el resultado que se obtiene al resolver la ecuación.

1
b) hallar las soluciones de x +1
− 3a 2 = 0 . ¿Para qué valores de a tiene sentido la solución?
a−e

Matemáticas y Mathematica -93-


Tema 6: Problemas y Ejercicios

c) Resolver la ecuación logarítmica:

x 3 / 2 Log ( x) = xLog ( x 3 / 2 )

6.6.- ¿Cuánto vale x?

(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 
   

a) Comprobar que el sistema Ax = b no tiene solución.

b) Representamos por c(i) i = 1,...,4 la columna i de la matriz A.


-94- Matemáticas y Mathematica
Tema 6: Problemas y Ejercicios

Sea b = 2.c(1) + c(2) + 3.c(3) - 4c.(4)


¿Tiene ahora solución el sistema de ecuaciones Ax = b?

c) Si ahora b = a1.c(1) + a2 c(2) + a3.c(3) + a4 c.(4) para ai números aleatorios. ¿Tiene


solución el sistema de ecuaciones Ax = b

d) ¿Es cierta la conjetura?: Un sistema de ecuaciones tiene solución si b es combinación


lineal de las columnas de la matriz A.¿Por qué?

6.10.- Distribución de calor

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:

La temperatura en un punto interior es el promedio de la temperatura de los cuatro puntos que


lo rodean.

a) Escribir un sistema de ecuaciones que corresponda a esta situación.

b) Calcular las soluciones de dicho sistema.

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.

b) ¿Todo vector b es una combinación lineal de las columnas de A? Generar 3 vectores


aleatorios de 4 x 1 y, para cada b, econtrar los coeficientes necesarios para escribir b como
una combinación lineal de las columnas de A.

Matemáticas y Mathematica -95-


Tema 6: Problemas y Ejercicios

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.

6.13.-Sabiendo que se trata de sumas horizontales y verticales, encuentra el valor de cada


fruta:

-96- Matemáticas y Mathematica


Tema 6: Problemas y Ejercicios

ALGUNAS SOLUCIONES O INDICACIONES A LOS PROBLEMAS Y EJERCICIOS


DEL TEMA 6

1.-El área es 14.5065


3

-4 -2 2 4
-1

-2

2.- Para n = 8
raíces octavas de la unidad 1

88x → −1.<, 8x → − 0.707107 − 0.707107 <,


8x → −0.707107 + 0.707107 <, 8x → − 1. <, 8x → 1. <,
0.5

8x → 0.707107 − 0.707107 <, 8x → 0.707107 + 0.707107 <, 8x → 1.<<


-1 -0.5 0.5 1

Orden en que se seleccionan los vértices


88−1., 0<, 8−0.707107, 0.707107<,
-0.5

80, 1.<, 80.707107, 0.707107<, 81., 0<,


80.707107, −0.707107<, 80, −1.<, 8−0.707107, −0.707107<<
-1

"
3.- a) x=2, x=10 b) ; :−0.5 a 4. − 1. a2 , 0.5 a " 4. − 1. a2 >

las soluciones son números reales si 4a 2 − a 4 ≥ 0 , es decir si –2 ≤ a ≤ 2

4.- a) x = -0.12634; x = 1.69714


π
b) algunas soluciones particulares: 0, ±
2
5.- a) x = -1 y x = 2 y x = -7.36629

::x → −1 + LogB F>>


b) − 1 + 3 a3 tiene sentido si a > 0.693361 ¿por qué?
3 a2

c) x=1, x=2.25. ¿Es x = 0 también solución de la ecuación?

6.- a) 2(3 − 5 ) b) 2.11186

8.- x1 == 200 + x3 − x5 &&x2 == 200 + x3 − x5&& x4 == − 100 + x5

Matemáticas y Mathematica -97-


Tema 6: Problemas y Ejercicios

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

d) No ocurre igual, el rango de la matriz A es 3. Por ejemplo b = (0,0,0,1)

13.- 88pla → 8, fre → 3, uva → 5, man → 9,


piñ → 0, per → 1, san → 4, mel → 7, cer → 2, lim → 6<<

-98- Matemáticas y Mathematica


Tema 7: Introducción a la criptología

TEMA 7

INTRODUCCIÓN A LA CRIPTOLOGÍA

7.1.- INTRODUCCIÓN

La Criptología es la disciplina que trata los problemas teóricos relacionados con la


seguridad en la transmisión de mensajes en clave de un emisor y un receptor, a través de un
canal de comunicación. Se compone de dos partes:

• Criptografía: se ocupa de cifrar mensajes y de diseñar los criptosistemas (concepto que


veremos en este tema).

• Criptoanálisis: se ocupa de descifrar los mensajes en clave, es decir de la rotura de los


criptosistemas.

Usualmente un criptosistema es una cuaterna (A,K,E,D), donde:

1. A es un conjunto finito llamado alfabeto, frecuentemente A es el conjunto Zm1 para


algún n ∈ N.

2. K es otro conjunto finito llamado espacio de claves, con frecuencia el cardinal de K es


menor o igual que dos.

3. E es una familia de aplicaciones {Ek: AÆA, k ∈ K}, llamadas transformaciones de


cifrado.

4. D es otra familia de aplicaciones {Dk: AÆA, k ∈ K}, que son las transformaciones de
descifrado, tales que:

Dk (Ek(x)) = x para cada x ∈ A y cada k ∈ K.

A menudo las aplicaciones Ek son biyectivas y Dk = Ek-1 para cada k ∈ K.

Notemos que cardinal (K)= cardinal (E)= cardinal (D).

Las transformaciones de cifrado y descifrado deben ser fácilmente ejecutables desde el


punto de vista computacional con independencia de las claves usadas.

La importancia de un criptosistema radica en:


1
Zm es el conjunto de los enteros módulo m y con las operaciones suma o producto de clases es un anillo
unitario.

Zm es un cuerpo si y sólo si m es un número primo.

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

1.-Su privacidad: Cuando se transmite un mensaje o se almacenan datos, queremos que


el mensaje o los datos sean conocidos sólo por el destinatario del mensaje o por el usuario de
los datos.

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.

La criptografía tradicional se basa en lo que se denomina cifrado de clave secreta o


privada, cuya fuerza reside en el desconocimiento de la clave que debe mantenerse secreta
(salvo para cada pareja de usuarios) y es la misma para el cifrado y descifrado.

7.2.- SISTEMAS CLÁSICOS

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

2. K es el espacio de las claves, contiene un solo elemento

3. E contiene una sola transformación (por tener K un sólo elemento) que notaremos por
σE

4. D contiene una sola transformación σ D , que será la inversa de la anterior, o sea:


σ D ( σ E (x)) = σ E ( σ D (x)) para cada x ∈ A

El proceso a seguir es:

1.- Se quiere mandar el mensaje M.


Dicho mensaje está escrito en el alfabeto Zm, por lo tanto para su transmisión se divide en
bloques o unidades de uno o más signos del alfabeto.

2.- El emisor lo transforma en M’ mediante: σ E (M) = M’.


Este es el proceso de cifrado y viene dado por una función biyectiva aplicada sobre el
conjunto de los posibles bloques.

3.- El receptor recibe M’ y lo decodifica mediante: σ D (M’) = M

-100– Matemáticas y Mathematica


Tema 7: Introducción a la criptología

Este es el descifrado y se basa en el cálculo de la inversa de la función de cifrado.

Dentro de los sistemas clásicos vamos a ver los siguientes:

7.2.1.- Codificación módulo m con parámetros a y b

7.2.2.- El criptosistema de Vigenère.

7.2.3.- El método de trasposición.

7.2.4.- El cifrado matricial.

7.2.5.- El criptosistema DES

7.2.1.- Codificación módulo m con parámetros a y b

Proposición:
Dados a , b ∈ Zm, consideramos la aplicación

fa,b : Zm Æ Zm definida por: fa,b (x) = ax+b con a ≠ 0.

Si m y a son primos entre sí, la aplicación fa,b es biyectiva y su inversa es precisamente la


aplicación fp,q , donde p = a-1 y q = -a-1b.

(La demostración de esta proposición se encuentra en cualquier libro de Matemáticas


Discreta)

Considerando:

1. A = Zm (como ya hemos indicado vamos a considerar m=30).

2. K = (a,b) con a primo relativo a m y a, b∈ Zm .

3. E formado solamente por la aplicación σ E = fa,b.

4. D formado solamente por la aplicación σ D = fp,q con p = a-1 y q = -a-1b.

Obtenemos el llamado sistema de Codificación módulo m con parámetros a y b.

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

Matemáticas y Mathematica -101-


Tema 7: Introducción a la criptología

Ahora aplicamos la transformación de cifrado en nuestro caso σ E = f1 ,7 obteniendo:


18 18 11 13 7 10 7 4 20 28 11 29 11 4 2 4 19 11 10 15 7

Hacemos el cambio a letras y obtenemos el mensaje cifrado


rrlnhkhet.l,leceslkoh

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

Cambio a elementos de Z30


18 18 11 13 7 10 7 4 20 28 11 29 11 4 2 4 19 11 10 15 7

Aplico la transformación inversa σ D = f1, 23 puesto que en nuestro caso


a = 1 ⇒ a-1 = 1 = p
b=7 ⇒q = -a-1 b = -7 que en Z30 es 23

Así σ D (x) = f1 23(x) =x +23 y aplicada a nuestros datos obtenemos:


11 11 4 6 0 3 0 27 13 21 4 22 4 27 25 27 12 4 3 8 0

Cambio los números por letras:


llegada nueve y media.

7.2.2.- El criptosistema de Vigenère.


(aquí vamos a trabajar con Z27)

Este criptosistema está formado por:

1. A: Z27 x Z27 x ......x Z27 (m veces)

2. K es un subconjunto de Z27 x Z27 x ...... Z27 (m veces) formado por un solo elemento es
decir K= {(a1, a2, ......am)}

En estas condiciones, el mensaje a cifrar se descompone en bloques de m letras y


tenemos que aplicar la transformación de cifrado a cada uno de los bloques. Si la longitud
del texto en castellano (omitiendo espacios en blanco, puntos y comas) es igual a s, es
conveniente tomar m ≤ s.

3. E: estará formado por la transformación


Ea1 a2.....am (x1, x2, .......xm) = (y1, y2, .......,ym)
donde yj ≡ xj +aj (27)

4. D: estará formado por la transformación de descifrado Da1 a2.....am inversa de Ea1 a2.....am

-102– Matemáticas y Mathematica


Tema 7: Introducción a la criptología

Esta forma de codificación se consideró imposible de romper hasta el siglo XIX. El


llamado cifrado de Vernam es de este tipo pero utiliza una clave aleatoria de longitud igual a
m. La denominada “línea caliente” entre Washington y Moscú, que se sepa, al menos hasta el
año 1987 ha usado este tipo de clave.

Para facilitar las operaciones de cifrado y descifrado se utiliza la tabla de Vigenère. En


ella están todos los resultados al utilizar una clave tipo Cesar con (1,b) y 1≤b≤27.

Matemáticas y Mathematica -103-


Tema 7: Introducción a la criptología

Ejemplo 3:

Cifraremos la palabra mathematica usando la palabra clave “mesa” .


En este caso tenemos que descomponer el mensaje en bloques de cuatro letras
math emat ica

A: es el conjunto Z27 x Z27 x Z27 x Z27 (puesto que m=4)

K: es el conjunto {(m,e,s,a)}

E: es la transformación Emesa (x1,x2,x3,x4) = y1,y2,y3,y4 donde yj ≡ xj +aj (27)


En nuestro caso Emesa (math)= xemh porque pasando a elementos de Z27
E12 4 19 0 (12 0 20 7) = 24 4 12 7
Ya que 12 + 12 mod(27 ) = 24
4+0 mod(27)=4
19+20 mod(27)=12
0+7 mod(27)=7

y al cambiar a letras obtenemos : x e m h

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

Con el tercer bloque tenemos: E12 4 19 0 (8 2 0)=20 6 19 y al cambio : t g s

Por lo tanto el mensaje cifrado es:


xemhppsttgs

Ejemplo 4:

Descifra el mensaje : j r z c q t x l h s a c, sabiendo que se ha usado la palabra clave “paz”


y que el sistema ha sido el de Vigenère.

Separamos en bloques de tres y pasamos a números


9 18 26 2 17 20 24 11 7 19 0 2

Hacemos el cambio: xi = yi –ai sabiendo que trabajamos en Z27

Obtenemos el resultado: .............................................

7.2.3.- El método de trasposición.

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.

Este método descompone el mensaje en bloques de longitud fija, n, y aplica una


permutación Π de orden “n” a cada uno de los bloques. Como el conjunto de las
permutaciones de orden “n” es grupo, para descifrar el mensaje lo único que hay que hacer es

-104– Matemáticas y Mathematica


Tema 7: Introducción a la criptología

aplicar al mensaje cifrado, una vez descompuesto en bloques de orden “n”, la permutación
inversa de Π.

Así en este criptosistema tenemos:

1. A = Zm (como ya hemos indicado vamos a considerar m = 30).

2. K: Un elemento del conjunto Sn es decir una permutación de orden “n”

3. E formado solamente por la aplicación σ E = Π. (en este caso la aplicación es la propia


permutación)

4. D formado solamente por la aplicación σ D = Π-1

Ejemplo 5:

Cifrar el mensaje: buenos días, usando la permutación de orden 4


1 2 3 4 
Π =  
14 2 3 
Descomponemos el mensaje en bloques de longuitud 4 (cuando el último bloque tiene
longitud menor que cuatro se completa con espacios en blanco)
buen os d ias

Se aplica la permutación a cada bloque


benu o ds is a

El mensaje cifrado es: benuo dsis a

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

Separamos el mensaje cifrado en bloques de cinco:


“ stoe” “as fe” “ il c”

Aplicamos la inversa de Π y obtenemos el mensaje: ..........................................

7.2.4.- Cifrado Matricial

Vamos a ver un sistema de cifrado en el que se usan matrices cuadradas.

Matemáticas y Mathematica -105-


Tema 7: Introducción a la criptología

El método consiste en dividir el texto original en bloques de longitud igual a n y


considerar cada uno de esos bloques como un vector y a cada vector aplicarle la
transformación:
vÆ M.v + w
donde M es una matriz de orden nxn, con elementos en Z30 y tal que el
mcd(det(M),30)=1. w es un vector fijo de n componentes en Z30.

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.

1. A = Zm (como ya hemos indicado vamos a considerar m = 30).

2. K está formado por la matriz M y el vector W, ambos con elementos en Z30.

3. E formado solamente por la aplicación σ E (x) = Mnxn x nx1+ wnx1.

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 

Descomponemos el mensaje en bloques de dos, por ser la matriz de orden 2x2. En


caso de tener el último bloque con menos de “n” elementos, añadimos espacios en blanco
va ca ci on es

Pasamos a elementos de Z30

22 0 20 28 15 13 4 19

Aplicamos la transformación a cada uno de los 5 bloques que tenemos, teniendo en


cuenta que se trabaja en Z30

 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

15   1 1 15   12  10 


σ E   =     +   =  
13   0 1 13   22  5
-106– Matemáticas y Mathematica
Tema 7: Introducción a la criptología

4  1 1  4   12  5
σ E   =     +   =  
19   0 1 19   22  11

Volvemos a sustituir los números por letras y agrupamos, obteniendo el mensaje:


evñvvakffl

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.

Separemos en bloques de tres y pasamos a números:


28 4 19 1 18 3 22 24 28

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 
           

Haciendo lo mismo con el segundo bloque y con el tercero, obtenemos el mensaje:


..................................

7.2.5 .- El criptosistema DES

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.

Vamos a dar una somera idea de su diseño.

El algoritmo consta de lo siguiente:

1.- Una permutación inicial

2.- 16 iteraciones.

3.- Una permutación final inversa de la anterior.

Matemáticas y Mathematica -107-


Tema 7: Introducción a la criptología

Cifra secuencialmente bloques de 64 bits de texto binario y usa una clave k de 64 bits.

Prescindiendo de las permutaciones inicial y final, describiremos brevemente el


proceso iterativo. Así, si Si es el bloque de 64 bits que resulta como output de la i-ésima
iteración (1≤ i<16), la iteracioín (i+1)-ésima es como sigue:

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

Ri+1 = Li +2 f(Ri,Ki+1) (suma módulo 2 para cada dígito), donde



f : (Z 2)32 x (Z2)48 Æ (Z 2)32

• y donde el vector Ki+1 está dado por K i +164 = KS (i + 1, K ) , siendo

KS: N x (Z2)64 Æ (Z2)48 denominada generador de claves, que proporciona una clave
diferente para cada iteración.

3.- Finalmente se hace la yuxtaposición Mi+1 = Li+1Ri+1

7.3.- SISTEMAS DE CLAVE PÚBLICA

El tipo de cifrado visto hasta ahora, presenta varios problemas, (salvo el Des):

• La distribución de claves, ya que emisor y receptor están obligados a usar la misma


clave, lo que obliga a garantizar la seguridad en el intercambio de información
respecto a la clave.

• La clave debe mantenerse en dos sitios distintos duplicándose la posibilidad de ser


descubierta.

• El crecimiento del número de claves frente al aumento del número de usuarios (n) del
sistema.

• Por último, presentan problemas de verificación, ya que al recibir un mensaje no se


puede asegurar que el emisor sea realmente quien dice ser.

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.

Las llaves pública y privada tienen características matemáticas, su generación es


siempre en pareja y están relacionadas de tal forma que si dos llaves públicas son diferentes,

-108– Matemáticas y Mathematica


Tema 7: Introducción a la criptología

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.

El procedimiento de firmado consiste en que mediante un programa de cómputo, un


sujeto alimenta un documento a firmar y su llave privada (que sólo él conoce). El programa
produce como resultado un mensaje digital denominado firma digital. Juntos, el documento y
la firma constituyen el documento firmado.

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.

El sistema RSA es usado por MicrosoftWindows, Netscape, Navigator, Intuit`s


Quicke, Lotus Notes y otros cientos de productos.

El algoritmo RSA es usado esencialmente en:

• a. Generación de llaves (claves) RSA

• b. Cifrado del texto original

• c. Descifrado del texto cifrado

Algoritmo RSA de llave pública

l.a) Generar dos primos p,q

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)

5.a) La llave pública es (n,e) y la llave privada (d)

Matemáticas y Mathematica -109-


Tema 7: Introducción a la criptología

6.b) El usuario A calcula c con la llave pública (n,e)

7.b) A envía el mensaje cifrado c = m e mod(n) al destinatario B

8.c) B recobra el mensaje con la fórmula m= cd mod(n) con la llave privada d

Otra importante aplicación es la "Firma Digital" que consiste en lo siguiente:

Algoritmo de Firma Digital

• Si el usuario B quiere firmar el mensaje con la firma “m” hará lo siguiente:

s= md mod(n) donde d es la llave privada de B

• Para verificar la firma de B se procede como sigue:

se = m mod(n)

Si quieres obtener información sobre RSA y Mathematica puedes ir a la red en la


dirección :
http://search.wolfram.com/
y Search: MathSource
Key :RSA

-110– Matemáticas y Mathematica


Tema 7: Problemas y ejercicios

PROBLEMAS Y EJERCICIOS DEL TEMA 7

De este tema tienes que entregar: Problema 8


Otro cualquiera de los problemas de este tema
Los dos problemas entregados deben estar perfectamente documentados

7.1.-Aplicar el cifrado Cesar con b=3 al mensaje:


este es el primer ejercicio de cifrado que hacemos con mathematica

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 *)

7.3.- Utilizando la permutación 81, 4, 6, 9, 2, 5, 3, 7, 8< se ha cifrado una adivinanza:

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∗?∗∗∗

¿Qué dice la adivinanza?

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ñ

7.6.- Manda cifrada por el método matricial la solución a la adivinanza:

Dos esquimales fueron a pescar, el menor era hijo del mayor, pero el mayor no era su padre,
cómo se explica.

diciendo la matriz usada y el vector.

7.7.- Hacer un programa que realice lo siguiente:


Tomar el primo número 100 (llamale p)
Tomar el primo número 123 (llamale q)

Matemáticas y Mathematica - 111 -


Siguiendo los pasos del algoritmo RSA, envie cifrado el mensaje numérico: 20190.
Tienes que mandarme la clave pública para que lo pueda descifrar.

7.8.- Utilizando el criptosistema de Vigenère y la palabra clave elefante, mándanos el


siguiente mensaje cifrado:

ya queda poco tiempo para que terminen las clases.

ALGUNAS SOLUCIONES A LOS PROBLEMAS Y EJERCICIOS PROPUESTOS


DEL TEMA 7

7.1.- hvwhahvahñasulohuahmhuflflraghafliudgratxhakdfhorvafrpaodwkhodwlfd

- 112 – Matemáticas y Mathematica

Das könnte Ihnen auch gefallen