1. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
GUIA DE LABORATORIO N° 2
FACULTAD
DIRECCIÓN
CURSO
DOCENTE
: INGENIERÍA DE SISTEMAS Y ELECTRÓNICA
: INGENIERÍA DE TELECOMUNICACIONES
: MÉTODOS MATEMÁTICOS DE TELECOMUNICACIONES I
: JUAN CARLOS BRONCANO TORRRES
TEMA: PRINCIPOS DE PROGRAMCIÓN Y FUNCIONES MATEMÁTICAS USUALES
OBJETIVOS:
- Manipular funciones matemáticas.
- Programar en Máxima.
MATERIALES A UTILIZAR:
·
Software matemático Máxima.
Funciones Matemáticas usuales.
Para definir una función en Maxima se utiliza el operador :=. Se pueden definir funciones de una
o varias variables, con valores escalares o vectoriales,
1
2. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
que se pueden utilizar como cualquier otra función.
Si la función tiene valores vectoriales o varias variables tampoco hay problema:
También se puede utilizar el comando define para definir una función. Por ejemplo, podemos
utilizar la función g para definir una nueva función y, de hecho veremos que ésta es la manera
correcta de hacerlo cuando la definición involucra funciones previamente definidas, derivadas
de funciones, etc. El motivo es que la orden define evalúa los comandos que pongamos en la
definición.
Eso sí, aunque hemos definido las funciones f , g y h, para utilizarlas debemos añadirles variables:
Si queremos saber cuál es la definición de la función g, tenemos que preguntar
pero teniendo cuidado de escribir el número correcto de variables
Esto plantea varias cuestiones muy relacionadas entre sí: cuando llevamos un rato trabajando y
hemos definido varias funciones, ¿cómo sabemos cuales eran? y ¿cuál era su definición?. La lista
de funciones que hemos definido se guarda en la variable functions a la que también puedes
2
3. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
acceder desde el menú Maxima Mostrar funciones de manera similar a como accedemos a la
lista de variables. En el mismo menú, Maxima Borrar función tenemos la solución a cómo borrar
una función (o todas). También podemos hacer esto con la orden remfunction.
Ya sabemos preguntar cuál es la definición de cada una de ellas. Más cómodo es, quizás, utilizar
la orden fundef que nos evita escribir las variables
que, si nos interesa, podemos borrar
o, simplemente, borrar todas las que
tengamos definidas
Funciones definidas a trozos
Las funciones definidas a trozos plantean algunos problemas de difícil solución para
Máxima esencialmente hay dos formas de definir y trabajar con funciones a trozos:
a) definir una función para cada trozo con lo que tendremos que ocuparnos nosotros de ir
escogiendo de elegir la función adecuada, o
b) utilizar una estructura if-then-else para definirla. Cada uno de los métodos tiene sus
ventajas e inconvenientes. El primero de ellos nos hace aumentar el número de funciones que
definimos, usamos y tenemos que nombrar y recordar. Además de esto, cualquier cosa que
queramos hacer, ya sea representar gráficamente o calcular una integral tenemos que plantearlo
nosotros. Maxima no se encarga de esto. La principal limitación del segundo método es que las
funciones definidas de esta manera no nos sirven para derivarlas o integrarlas, aunque sí
podremos dibujar su gráfica. Por ejemplo, la función
la podemos definir de la siguiente forma utilizando el segundo método
3
4. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
y podemos evaluarla en un punto
o dibujarla
Evidentemente, si la función tiene “muchos” trozos, la definición se alarga; no cabe otra
posibilidad.
En este caso tenemos que anidar varias estructuras if-then-else o definir tantas funciones
como trozos. Por ejemplo, la función
la podemos escribir como
Existe una manera alternativa de definir una función a trozos veamos como:
define la función.
4
5. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Por otra parte, se tiene el paquete pw elaborado por Richard Hennessy, el cual está en proceso de
desarrollo, que puede resultar útil en ciertos casos.
El paquete pw (cuya versión en la actualidad es 6.4) se puede descargar desde
http://sourceforge.net/projects/piecewisefunc/
Esto define la función:
Programando en Máxima
La elaboración de programas con el lenguaje de programación de Maxima permite al usuario
definir sus propias funciones. De esta manera se hace posible la automatización de secuencias de
operaciones que son útiles para abordar la solución de un determinado tipo de problema.
Además, es posible implementar varias funciones, relacionadas con cierto tema, y guardarlas en
un solo archivo que luego se pueda ejecutar sin necesidad de visualizar todo el código elaborado.
A tal archivo se le conoce como paquete de funciones.
Operadores relacionales y lógicos
De manera similar que cualquier lenguaje de programación Maxima incluye operadores
relacionales y lógicos, así como estructuras de control (que se utilizan para controlar el flujo del
programa en una rutina).
En Maxima, los operadores lógicos pueden ser infijos o prefijos. Un operador recibe el nombre de
infijo cuando éste debe escribirse entre los operandos, por ejemplo el operador and cuya sintaxis
es p and q, para ciertos operandos p y q. Por otra parte, un operador prefijo es aquel que debe
escribirse antes del operando, por ejemplo el operador not cuya sintaxis es not p, para cierto
operando p. Cabe destacar que, en Maxima, casi todos los operadores lógicos son infijos y
únicamente hay un operador lógico prefijo.
5
6. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Téngase en cuenta que las expresiones consideradas en los ejemplos de las entradas ( %i1) y ( %i2)
equivalen a las expresiones: if 2 = 3 then 1 else false y if 3 = 3 then 1 else false, respectivamente.
6
7. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Operadores y argumentos
Casi todo en Maxima es un objeto de la forma fun(a1; ……… ; an), es decir, una expresión que
comprende un operador como fun y los argumentos de éste, a1;…….; an. Las funciones op y args
permiten averiguar la estructura de las expresiones.
Aquí se define la expresión a + b, la cual es almacenada en la variable expr.
A continuación, con la primera operación se obtiene el operador de la expresión
previamente definida; y en la segunda, se obtiene una lista con los argumentos de
dicha expresión.
7
8. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Algunas expresiones (plot2d, integrate, etc.) requieren de una comilla simple
Programación funcional
La programación funcional es la programación que pone énfasis en el uso de funciones. Maxima
incluye las funciones predefinidas apply, map, lambda que permiten apreciar la potencia de la
programación funcional.
Aquí se define la función G, la cual es aplicada luego a una lista cuyos elementos pasan a ser los
argumentos de G.
En este caso se aplica la función predefinida min.
En este ejemplo se define una función lambda con dos argumentos y un argumento opcional.
Luego esta función es evaluada en tres argumentos y se obtiene una lista con el resultado
esperado, no obstante al evaluar la función en más argumentos se obtiene una lista con tantos
elementos como argumentos adicionales hay.
8
9. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Implementación del paquete: ejemplo
En esta sección se implementará el paquete ejemplo, que incorporará las funciones triangulo y
circunferencia.
Aquí se define la función triangulo. Esta función permite calcular el área de un triángulo y el
baricentro de un conjunto de puntos de R2 , dados. Además, si los puntos son colineales, devuelve
el mensaje: Los puntos son colineales.
Dado el conjunto de puntos del plano{ (1; 2); (3;-1); (2; 3)}, no colineales, la función triangulo
devuelve el área y las coordenadas del baricentro del triángulo definido por los puntos dados.
Para visualizar los gráficos se utilizará el paquete draw.
Esto muestra la gráfica del triángulo previamente analizado, conjuntamente con el punto que
corresponde al baricentro del mismo.
9
10. DIRECCIÓN DE INGENIERÍA
DE TELECOMUNICACIONES
Puesto que, en este caso, los puntos del conjunto {(1; 1); (2; 2); (3; 3)} son colineales,
la función triangulo devuelve un mensaje indicando éste hecho.
Aquí se define la función circunferencia que permite obtener la ecuación de la circunferencia
definida por tres puntos dados.
Dado el conjunto de puntos del plano {(1; 2); (3;-1); (2; 3)}, no colineales, la función circunferencia
devuelve la ecuación de la circunferencia definida por estos puntos.
Esto muestra la gráfica de la circunferencia previamente analizada, conjuntamente con los puntos
que la definen.
10