10
DIRECCIÓN DE INGENIERÍA DE TELECOMUNICACIONES 1 GUIA DE LABORATORIO N° 2 FACULTAD : INGENIERÍA DE SISTEMAS Y ELECTRÓNICA DIRECCIÓN : INGENIERÍA DE TELECOMUNICACIONES CURSO : MÉTODOS MATEMÁTICOS DE TELECOMUNICACIONES I DOCENTE : JUAN CARLOS BRONCANO TORRRES TEMA: PRINCIPOS DE PROGRAMCIÓN Y FUNCIONES MATEMÁTICAS USUALES OBJETIVOS: MATERIALES A UTILIZAR: 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, - Manipular funciones matemáticas. - Programar en Máxima. · Software matemático Máxima.

Semana 02 software libre maxima

Embed Size (px)

Citation preview

Page 1: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

1

GUIA DE LABORATORIO N° 2

FACULTAD : INGENIERÍA DE SISTEMAS Y ELECTRÓNICA DIRECCIÓN : INGENIERÍA DE TELECOMUNICACIONES CURSO : MÉTODOS MATEMÁTICOS DE TELECOMUNICACIONES I DOCENTE : JUAN CARLOS BRONCANO TORRRES

TEMA: PRINCIPOS DE PROGRAMCIÓN Y FUNCIONES MATEMÁTICAS USUALES OBJETIVOS:

MATERIALES A UTILIZAR:

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,

- Manipular funciones matemáticas.

- Programar en Máxima.

· Software matemático Máxima.

Page 2: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

2

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

Page 3: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

3

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

Page 4: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

4

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.

Page 5: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

5

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.

Page 6: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

6

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.

Page 7: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

7

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.

Page 8: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

8

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.

Page 9: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

9

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.

Page 10: Semana 02 software libre maxima

DIRECCIÓN DE INGENIERÍA

DE TELECOMUNICACIONES

10

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.