SlideShare una empresa de Scribd logo
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
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
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
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
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
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
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
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
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
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Matlab principios
Matlab principiosMatlab principios
Matlab principios
 
Diapositivas matlab
Diapositivas matlabDiapositivas matlab
Diapositivas matlab
 
Funciones En Excel
Funciones En ExcelFunciones En Excel
Funciones En Excel
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Funciones En Excel
Funciones En ExcelFunciones En Excel
Funciones En Excel
 
2 _expresiones_matematicas_254209
2  _expresiones_matematicas_2542092  _expresiones_matematicas_254209
2 _expresiones_matematicas_254209
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Excel funcionesbasicas-100130150120-phpapp01
Excel funcionesbasicas-100130150120-phpapp01Excel funcionesbasicas-100130150120-phpapp01
Excel funcionesbasicas-100130150120-phpapp01
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switch
 
01 metprogramacion
01 metprogramacion01 metprogramacion
01 metprogramacion
 
Unidad III
Unidad IIIUnidad III
Unidad III
 
Programacion En Mat Lab
Programacion En Mat LabProgramacion En Mat Lab
Programacion En Mat Lab
 
Métodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - AlgoritmiaMétodos y Funciones - Java - Algoritmia
Métodos y Funciones - Java - Algoritmia
 
Utp ia_sl2 patrones de aprendizaje de las rna
 Utp ia_sl2 patrones de aprendizaje de las rna Utp ia_sl2 patrones de aprendizaje de las rna
Utp ia_sl2 patrones de aprendizaje de las rna
 
Metodos en java
Metodos en javaMetodos en java
Metodos en java
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Programacion en matlab
Programacion en matlabProgramacion en matlab
Programacion en matlab
 
Programacion MatLab
Programacion MatLabProgramacion MatLab
Programacion MatLab
 
Funciones en VB
Funciones en VBFunciones en VB
Funciones en VB
 
Programación funcional
Programación funcionalProgramación funcional
Programación funcional
 

Similar a Semana 02 software libre maxima

Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
Diego Maxdj Chicaiza
 
Conceptos fundmentales
Conceptos fundmentalesConceptos fundmentales
Conceptos fundmentales
alondrashare
 
Matlab aplicacione s
Matlab aplicacione sMatlab aplicacione s
Matlab aplicacione s
ford81
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
Ysaac Ruiz
 
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
chinop7
 
Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada
Cliffor Jerry Herrera Castrillo
 

Similar a Semana 02 software libre maxima (20)

Funciones con arrays y vectores en c
Funciones con arrays y vectores en cFunciones con arrays y vectores en c
Funciones con arrays y vectores en c
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Funciones con vectores c++
Funciones con vectores c++Funciones con vectores c++
Funciones con vectores c++
 
Conceptos fundmentales
Conceptos fundmentalesConceptos fundmentales
Conceptos fundmentales
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.
 
Matlab aplicacione s
Matlab aplicacione sMatlab aplicacione s
Matlab aplicacione s
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Tipos de Datos Abstractos.
Tipos de Datos Abstractos.Tipos de Datos Abstractos.
Tipos de Datos Abstractos.
 
Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.Programación de nivel básico 1 y 2. c2.
Programación de nivel básico 1 y 2. c2.
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Escuela
EscuelaEscuela
Escuela
 
Escuela
EscuelaEscuela
Escuela
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
 
Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 

Más de Juan Carlos Broncanotorres

Más de Juan Carlos Broncanotorres (20)

S053-Limite.pptx
S053-Limite.pptxS053-Limite.pptx
S053-Limite.pptx
 
funciones parte 01
funciones parte 01funciones parte 01
funciones parte 01
 
numeros complejos
numeros complejosnumeros complejos
numeros complejos
 
Criptofgrafia sobre curvas elípticas
Criptofgrafia sobre curvas elípticasCriptofgrafia sobre curvas elípticas
Criptofgrafia sobre curvas elípticas
 
criptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellmancriptosistema Rabin, Merkle-Hellman
criptosistema Rabin, Merkle-Hellman
 
criptosistema ELGAMAL
criptosistema ELGAMALcriptosistema ELGAMAL
criptosistema ELGAMAL
 
CRISPTOSISTEMA RSA MEJORADO
CRISPTOSISTEMA RSA MEJORADOCRISPTOSISTEMA RSA MEJORADO
CRISPTOSISTEMA RSA MEJORADO
 
Critografia Asimetrica el RSA
Critografia Asimetrica el RSACritografia Asimetrica el RSA
Critografia Asimetrica el RSA
 
Fundamentos matematicos para la criptografia asimetrica
Fundamentos matematicos para la criptografia asimetricaFundamentos matematicos para la criptografia asimetrica
Fundamentos matematicos para la criptografia asimetrica
 
primera practica calificada de criptografía
primera practica calificada de criptografíaprimera practica calificada de criptografía
primera practica calificada de criptografía
 
PRIMERA PRACTICA CALIFICADA MET MATEMATICOS DE TELECOMUNIACIONES II
PRIMERA PRACTICA CALIFICADA MET MATEMATICOS DE TELECOMUNIACIONES IIPRIMERA PRACTICA CALIFICADA MET MATEMATICOS DE TELECOMUNIACIONES II
PRIMERA PRACTICA CALIFICADA MET MATEMATICOS DE TELECOMUNIACIONES II
 
Metodos mat de tele ii 1 -
Metodos mat  de tele ii  1 -Metodos mat  de tele ii  1 -
Metodos mat de tele ii 1 -
 
Cuidades Inteligentes
Cuidades InteligentesCuidades Inteligentes
Cuidades Inteligentes
 
Historia de la Criptografía II
Historia de la Criptografía IIHistoria de la Criptografía II
Historia de la Criptografía II
 
Teoria de Numeros
Teoria de Numeros Teoria de Numeros
Teoria de Numeros
 
Problemas sobre propabilidad Condicionada y Teorema de Bayes
Problemas sobre propabilidad Condicionada y Teorema de BayesProblemas sobre propabilidad Condicionada y Teorema de Bayes
Problemas sobre propabilidad Condicionada y Teorema de Bayes
 
Criptosistemas
CriptosistemasCriptosistemas
Criptosistemas
 
Historia de la Criptografia 3
Historia de la Criptografia 3Historia de la Criptografia 3
Historia de la Criptografia 3
 
Ejercicios Probabilidades
Ejercicios ProbabilidadesEjercicios Probabilidades
Ejercicios Probabilidades
 
Probabilidad Condicional
Probabilidad CondicionalProbabilidad Condicional
Probabilidad Condicional
 

Semana 02 software libre maxima

  • 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