Está en la página 1de 10

CAPITULO II

ARCHIVOS DE ORDENES
2.1 Concepto Matlab responde a cualquier comando que se le digite y en el orden en que estos comandos se introducen. Para problemas simples, introducir los comandos en la lnea de orden es rpido y eficiente. Sin embargo, cuando aumenta el nmero de comandos o, en el caso en que se desee cambiar el valor de una o ms variables y reevaluar una serie de comandos, escribir en la lnea de orden se hace tedioso y poco prctico. Por lo anterior, Matlab proporciona una solucin lgica a este problema. Permite colocar las rdenes en un simple archivo de texto y a continuacin indicarle a Matlab que abra el archivo y evale las ordenes exactamente como si hubiesen sido escritas desde la lnea de orden. Estos archivos se denominan archivos script o archivos M. El trmino script simboliza el hecho de que Matlab simplemente sigue el script (guin) encontrado en el archivo. El trmino archivo-M reconoce el hecho de que los nombres de los archivos scripts deben finalizar con la extensin .m. Los archivos M se agrupan en dos categoras: archivos M de guin y archivos M de funcin. Un guin equivale a un programa principal en los lenguajes de programacin tradicionales, en tanto que una funcin corresponde a un subprograma, subrutina o funcin en los lenguajes tradicionales.

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

27

2.2 Ventajas Los archivos script agrupan varias ordenes e instrucciones y por lo tanto es posible tratarlos como si fueran un solo comando propio del Matlab. Esto permite tener un mayor control sobre los clculos que se desean llevar a cabo y facilitar el proceso de digitacin, correccin, depuracin y mantenimiento de dichos archivos, con el consiguiente ahorro de tiempo. Adems es posible ejecutar un archivo de ordenes todas las veces que se desee y con diferentes valores de entrada cada vez. Los archivos script son tambin convenientes para introducir grandes arrays de datos que pueden, por ejemplo, provenir de medidas de laboratorio. Utilizando un editor de texto para introducir uno o ms arrays, las capacidades de edicin facilitan la correccin de errores sin que se tenga necesidad de escribir otra vez todo el array. Como en el caso anterior, este mtodo guarda los datos en el disco para su utilizacin posterior. La utilidad de los comentarios se hace rpidamente notoria cuando se usan archivos script. Los comentarios permiten documentar las ordenes del archivo de manera que no se olviden cuando en el futuro se decida revisar el archivo. Adems, el empleo de puntos y comas al final de las lneas permite suprimir la visualizacin de resultados para controlar la salida del archivo script de manera que no se muestren los resultados intermedios sino slo los resultados importantes. 2.3 Creacin Para crear y grabar un archivo script proceda as: 1. File 2. New 3. M-file 4. Digitar las rdenes Matlab que contendr el archivo 5. File 6. Save 7. Digitar nombre archivo: Ejemplo: prueba 8. Seleccionar carpeta donde se grabar el archivo 9. Guardar 10. File 11. Exit Editor/Debugger 2.4 Ejecucin Para ejecutar las ordenes contenidas en un archivo script proceda as: 1. File 2. Run Script... 3. Digitar el nombre del archivo 28
EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

4. Pulsar el botn OK o as: 1. Digitar el nombre del archivo en la lnea de orden del Matlab 2. Pulsar la tecla Enter. Cuando digitamos el nombre de un archivo script a fin de que Matlab ejecute sus ordenes, Matlab prioriza las variables actuales y las ordenes propias de Matlab antes de los nombres de los archivos M. As, si el nombre del archivo script no es una variable actual de Matlab o una orden incorporada en Matlab, entonces Matlab abre el archivo script (si lo puede encontrar) y evala las ordenes que contiene como si se hubieran introducido directamente desde la ventana de orden. Como consecuencia, las ordenes dentro del archivo script tienen acceso a todas las variables en el espacio de trabajo de Matlab y todas las variables creadas en el archivo empiezan a hacer parte del espacio de trabajo. Normalmente las ordenes ledas desde un archivo script no se visualizan cuando se evalan. Si se desean visualizar las ordenes del archivo se debe utilizar la orden hecho on, que le dice al Matlab que visualice o efecte un eco de las ordenes en la ventana de comando cuando se leen y evalan. Si no se desean visualizar las ordenes del archivo se debe utilizar la orden hecho off. Si se desea interrumpir la ejecucin de un proceso se deben pulsar en forma simultnea las teclas Ctrl y la tecla C (Ctrl + C). 2.5 Edicin Para editar las ordenes contenidas en un archivo script proceda as: 1. File 2. Open... 3. Seleccionar el archivo 4. Pulsar el botn Abrir 5. Efectuar las correcciones del caso en el archivo 6. File 7. Save 8. File 9. Exit Editor/Debugger o as: 1. En la lnea de orden del Matlab, digite la orden edit y a continuacin el nombre del archivo. 2. Pulsar la tecla Enter.
EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

29

3. Efectuar las correcciones del caso en el archivo 4. File 5. Save 6. File 7. Exit Editor/Debugger 2.6 Comandos de gestin de archivos Matlab proporciona algunas ordenes de gestin de archivos que permiten listar los nombres de los archivos, visualizar y suprimir archivos script, mostrar y cambiar el directorio actual. La tabla siguiente recoge algunas de estas ordenes. COMANDO type nom_archivo edit nom_archivo delete nom_archivo echo on/off Dir cd path cd/chdir Gat which nom_archivo path path (cadena_nueva_ruta) getenv(matlabpath) DESCRIPCIN Visualizacin: muestra el contenido de un archivo script en la ventana de orden. Edicin: permite editar las ordenes de un archivo Borrar: permite eliminar un archivo Activa o desactiva la visualizacin de las ordenes ejecutadas desde un archivo script. Listar: lista todos los archivos del directorio actual. Cambia al directorio dado por path. Muestra el directorio de trabajo presente. Devuelve un listado de todos los archivos M, MAT y MEN en el directorio actual. Visualiza el camino donde se encuentra el archivo. Camino: muestra la ruta de bsqueda vigente del Matlab Entorno: muestra las rutas de Matlab vigentes

Actividad N 1: Ponga en prctica los comandos contenidos en la tabla anterior. Asegrese de entender cada comando y si tiene dudas sobre algunos de ellos utilice la ayuda suministrada por Matlab, digitando la orden: help nombre-comando. Tome nota de estos comandos con su respectiva utilidad y sintaxis. Actividad N 2: Familiarcese con los procedimientos descritos en este captulo para crear, editar y ejecutar archivos script. Cree el siguiente archivo de ordenes que permite encontrar el conjunto solucin de ecuaciones cuadrticas o de segundo grado, utilizando la orden input. Ejectelo el anterior archivo de ordenes y encuentre la solucin a las siguientes ecuaciones: X2+3X-28=0 y X2+2X+3=0.

30

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

Actividad N 3: Crear archivos de ordenes Matlab que permitan resolver los problemas enunciados a continuacin: 1. Clculo de las coordenadas del vrtice y del foco de una funcin cuadrtica. 2. Clculo del permetro y del rea de un tringulo a partir del valor de sus lados. 3. Clculo del permetro y el rea de un polgono regular a partir del valor de su lado. 4. Clculo del rea lateral, rea total y volumen de un prisma recto. Ayuda Vrtice y foco de una funcin cuadrtica: b 4.a.c b 2 V 2a , 4a b 4.a.c b 2 + 1 F 2a , 4a Area y permetro de un tringulo en funcin de sus lados:
P = a +b + c P S = 2 Ar = S ( S a )( S b)( S c )

Area de un polgono regular:


2Tag n P = nl P. AP Ar = 2 Ap = l

Area lateral, rea total y volumen de un prisma recto:


P. AP 2 Al = nhl Ab = At = Al + 2 Ab V = Ab .h

Funciones definidas por el usuario

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

31

A continuacin se ampliar el tema mencionado en el captulo anterior sobre las funciones definidas por el usuario. Ms exactamente se ilustrar la forma que deben tener dichas funciones. La funcin debe comenzar con una lnea que contenga la palabra function, seguida del argumento de salida, un signo igual y el nombre de la funcin, el cual debe coincidir con el nombre del archivo que contiene dicha funcin. El nombre de la funcin va seguido por los argumentos de entrada encerrados entre parntesis. Esta lnea distingue un archivo de funcin de un archivo de ordenes. Es recomendable incluir despus de la primera lnea una o varias lneas de comentarios con informacin acerca de la funcin. Esta lneas de comentarios se visualizarn cuando el usuario pida ayuda para el nombre de la funcin con el comando help. En el cuerpo de la funcin debe existir una instruccin que asigne un valor al argumento de salida. La funcin se comunica con el espacio de trabajo de Matlab slo a travs de las variables pasadas y mediante las variables de salida que crea. Las variables intermedias dentro de la funcin no aparecen ni interaccionan con el espacio de trabajo de Matlab. A continuacin se muestran tres formatos para el diseo de funciones. Primer modelo: un argumento de entrada y uno de salida: function vble_sal = nom_funcion(vble_ent) %comentarios alusivos la funcin vble_sal = ...... Para invocar o llamar la funcin se procede as: Vble = nom_funcion(arg) Ejemplo 1: Crear una funcin que permita calcular el factorial de un nmero. function f=factorial(n) %Calculo del factorial de un nmero: n! %Introducir los datos as: factorial(n) f=1; for k=1:1:n f=f*k; end Obsrvese que aqu, la variable de salida es f y la variable de entrada es n. Esta funcin utiliza una tercera variable auxiliar k. Para calcular el factorial de un nmero cualquiera, por ejemplo 5, se invoca la funcin digitando en la ventana de comandos: factorial(5)

32

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

Segundo modelo: un argumento de entrada y varios de salida: function vble_sal = nom_funcion(vble_e1, vble_e2, vble_e3) %comentarios alusivos a la funcin vble_sal = ...... Para invocar o llamar la funcin se procede as: Vble = nom_funcion(arg1, arg2, arg3) Ejemplo 2: Crear una funcin que permita calcular la definitiva de tres notas, sabiendo que la primera tiene una ponderacin del 30%, la segunda del 30% y la tercera del 40%. function d=definitiva(n1,n2,n3) %Definitiva de tres notas con pesos de %30%, 30% y 40% respectivamente %Introducir los datos as: definitiva(n1,n2,n3) d=0.30*n1+0.30*n2+0.40*n3; Obsrvese que aqu, la variable de salida es d y las variables de entrada son n1, n2 y n3. Para calcular la definitiva de tres notas cualesquiera, por ejemplo 3, 2 y 5, se invoca la funcin digitando en la ventana de comandos: definitiva(3,2,5) Tercer modelo: varios argumentos de entrada y varios de salida: function [vble_s1, vble_s2] = nom_funcion(vble_e1, vble_e2, vble_e3) %comentarios alusivos a la funcin vble_s1 = ...... vble_s2 = ...... Para invocar o llamar la funcin se procede as: [Vble1, Vble1] = nom_funcion(arg1, arg2, arg3) Ejemplo 3: Crear una funcin que permita calcular el promedio aritmtico y al desviacin estndar de un conjunto de nmeros. Ayuda: Media y desviacin estndar: x x= n
s=

( x

x)

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

33

function [media, desviacion]=promedio(x) %Media aritmtica o promedio aritmtico y %Desvicin estndar de una serie de valores numricos %Introducir los datos as: [Med, Des]=promedio(Vector_X) n=length(x); media=sum(x)/n; desviacion=sqrt(sum(x.^2)/n-media.^2); Obsrvese que aqu, las variables de salida son media y desviacion y la variable de entrada es el vector que contiene la serie de valores, x. Para calcular la media y la desviacin de una serie de valores, por ejemplo: 1, 5, 3, 4, 6, 5, 8, 9, 2 y 4, se invoca la funcin digitando en la ventana de comandos, las siguientes ordenes: x=[1 5 3 4 6 5 8 9 2 4]; [m, d]=promedio(x) m= 4.7000 d= 2.3685 Ejemplo 4: Crear una funcin que dados los dos primeros trminos de una progresin geomtrica, calcule y muestre el n-simo trmino y la suma de los primeros n trnimos. Ayuda: Progresin geomtrica: a r= n a n 1
a n = a1 r n 1 Sn = a ( r n 1) r 1

function [an, sn]=pg(a1, a2, n) %Calculo del n-esimo trmino y la suma de los primeros n trminos %de una progresin geomtrica r=a2/a1; an=a1*r^(n-1); sn=a1*(r^n-1)/(r-1);

34

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

Actividad N 4: Crear una funcin que permita calcular una combinacin. Ayuda: Combinaciones:
nCr = n! r!( n r )!

Actividad N 5: Crear archivos de ordenes Matlab que permitan resolver los problemas enunciados a continuacin: 1. Clculo de la distribucin de probabilidad Binomial. 2. Clculo de la distribucin de probabilidad de Poisson. 3. Clculo de un trmino de la potencia de un binomio. Ayuda: Distribucin de probabilidad Binomial:
n P( x ) = p x q n x x

Distribucin de probabilidad de Poisson: x e x


P ( x) = x!

Desarrollo de la potencia de un binomio:


( a + b ) n = a nk b k k
n

k =0

Actividad N 6: Crear una funcin que permita evaluar la siguiente serie:


f ( x) = x
n x2 x3 n +1 x + ... + ( 1) , 1 < x 1 2 3 n

Los valores de x y n se pasan a la funcin mediante argumentos. Pruebe la funcin comparando el resultado con clculos manuales para x=1 y n=4. La serie en cuestin es una expansin Mclaurin truncada de log(1+x) y converge para 1<x<1. Sabiendo esto, pruebe la funcin con valores de x selectos como x = -0.5, y 0.5, con n = 1, 2, 3, 5, 10, 20, 50 y compare el resultado con log (1+x). La convergencia se hace progresivamente ms difcil al acercarse x a 1 o 1.

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS

35

Actividad N 7: Crear una funcin que dado un valor x, calcule a partir de la suma de los n primeros trminos de la serie de potencia correspondiente, el valor de: a). ex Ayuda: Series de potencia: n xk ex = k =0 k!
sen ( x) =
n

b). Sen(x)

c). Cos(x)

d). Tan(x)

e). Tan-1(x)

( 1) k +1 x 2 k 1 ( 2.k 1)! k =1 n ( 1) k +1 x 2 k 2 cos( x) = ( 2.k 2)! k =1 n ( 1) k +1 x k , 1 tan ( x ) =

k =1

k!

-1 x 1

36

EDGAR ENRIQUE HERRERA MORALES HERNANDO LAVADO LEAL LUIS ANTONIO EGEA VARGAS