Está en la página 1de 63

Manual de Introduccin a Funciones Bsicas con o a MATLAB

M.C. Daniel S. Mart nez Ram rez Agosto de 2004

Cap tulo 1

Introduccin o
1.1. Acerca de MATLAB

El nombre de MATLAB proviene de la contraccin de MATrix LABoratory. MATLAB es considerado o como un lenguaje de alto nivel que maneja datos de tipo matricial. Por lo tanto, las matrices y arreglos constituyen la espina dorsal de MATLAB. Cabe mencionar, que MATLAB al ser considerado un lenguaje de alto nivel puede pensarse que puede hacer obsoletos a ciertos lenguajes de programacin ampliamente utilizados en la actualidad. Esta aseveracin o o es errnea debido a que esos lenguajes siguen siendo importantes para la computacin de alto rendimiento o o que requiere abundante memoria o un tiempo de cmputo largo. En cambio, la velocidad de cmputo de o o MATLAB paga un elevado precio debido a sus caracter sticas particulares.

1.2.

Caracter sticas importantes de MATLAB

La razn por la cual MATLAB puede considerarse como un lenguaje es debido a que ofrece caracter o sticas de programacin similares a otros lenguajes de programacin como FORTRAN o C. A continuacin algunas o o o de sus caracter sticas ms notables son mencionadas: a La programacin es mucho ms sencilla. o a Manipulacin de conjunto de datos en una amplia variedad ms rpidamente. o a a Biblioteca matemtica amplia. a Proporciona herramientas de interfaz grca de usuario (GUI) que permite a MATLAB ser utilizado a como una herramienta de desarrollo de aplicacin. o Abundantes herramientas grcas. a Capacidad de vincularse con otros lenguajes de programacin. o Transportabilidad. La combinacin de estructuras de datos de arreglos, caracter o sticas de programacin y herramientas o GUI permiten que MATLAB sea una poderosa herramienta para resolver problemas en muchos campos.

Cap tulo 2

Caracter sticas bsicas a


2.1. Operaciones Aritmticas Bsicas e a

Las operaciones aritmticas bsicas pueden ser llevadas a cabo con MATLAB de manera anloga a las e a a calculadoras. Estas operaciones aritmticas bsicas son las siguientes: e a
Operacin o adicin, a + b o substraccin, a - b o multiplicacin, a b o divisin, a b o exponenciacin, ab o S mbolo + * /\ o Ejemplo 5 + 45 100 - 55 3.14 * 0.90 3/4 = 4 \ 3 216

La evaluacin de estos operadores son llevadas a cabo por las reglas usuales de precedencia de operadores, o resumidas aqu .
Las expresiones son evaluadas de izquierda a derecha con la operacin de o exponenciacin teniendo la mayor precedencia, seguida por la multiplicacin o o y divisin teniendo la misma procedencia, seguida por la suma y substraccin o o teniendo la misma precedencia.

2.2.

Espacio de Trabajo

El entorno de trabajo en donde el usuario trabaja es llamado espacio de trabajo. El espacio de trabajo puede grabar los comandos ingresados por el usuario as como los valores de cualquier vaiable creada por el mismo. Por esa razn, estos comandos y variables residen en el espacio de trabajo de MATLAB o espacio de o trabajo bsico y pueden ser rellamados cada vez que se dese. a e Ejemplo: )) record=3.5878789 record = 3.5879 )) record record = 5

3.5879 ))

Para conocer el nombre de una variable en el espacio de trabajo de MATLAB se utiliza el comando who. Ejemplo:

)) a=445.126+129.75 a = 574.8760 )) b=a-100.25 b = 474.6260 )) c=a*b c = 2.7285e+005 )) d=c/37.5 d = 7.2760e+003 )) e=37.5\c e = 7.2760e+003 )) e=c\37.5 e = 1.3744e-004 )) f1=2^5 f1 = 32 )) who 6

Your variables are: a b )) c d e f1

Para obtener una informacin ms detallada de esa variable utilizamos el comando whos. o a Ejemplo: )) whos Name a b c d e f1

Size 1x1 1x1 1x1 1x1 1x1 1x1

Bytes 8 8 8 8 8 8

Class double double double double double double array array array array array array

Grand total is 6 elements using 48 bytes )) En cambio, para borrar variables utilizamos el comando clear. Ejemplo: )) clear a b )) who Your variables are: c d e f1

En este ejemplo borramos las variables a y b. A continuacin, mostramos las opciones del comando clear o a travs del comando help. e )) help clear CLEAR Clear variables and functions from memory. CLEAR removes all variables from the workspace. CLEAR VARIABLES does the same thing. CLEAR GLOBAL removes all global variables. CLEAR FUNCTIONS removes all compiled M-functions. CLEAR MEX removes all links to MEX-files and all M-functions. CLEAR ALL removes all variables, globals, functions and MEX links. 7

CLEAR CLASSES is the same as CLEAR ALL except that class definitions are also cleared. If any objects exist outside the workspace (say in userdata or persistent in a locked m-file) a warning will be issued and the class definition will not be cleared. CLEAR CLASSES must be used if the number or names of fields in a class are changed. CLEAR VAR1 VAR2 ... clears the variables specified. The wildcard character * can be used to clear variables that match a pattern. For instance, CLEAR X* clears all the variables in the current workspace that start with X. If X is global, CLEAR X removes X from the current workspace, but leaves it accessible to any functions declaring it global. CLEAR GLOBAL X completely removes the global variable X. CLEAR FUN clears the function specified. If FUN has been locked by MLOCK it will remain in memory. Use a partial path (see PARTIALPATH) to distiguish between different overloaded versions of FUN. For instance, clear inline/display clears only the INLINE method for DISPLAY, leaving any other implementations in memory. CLEAR ALL, CLEAR FUN, or CLEAR MEX also has the side effects of removing debugging breakpoints and reinitializing persistent variables since the breakpoints for a function and persistent variables are cleared whenever the m-file changes or is cleared. Use the functional form of CLEAR, such as CLEAR(name), when the variable name or function name is stored in a string. See also WHO, WHOS, MLOCK, MUNLOCK, PERSISTENT.

2.3.

Formato de display numrico e

Cuando MATLAB despliega los resultados numricos, esto sigue algunas reglas. Por default, si un resule tado es un entero, MATLAB lo despliega como tal. Por otro lado, si el nmero es real, MATLAB lo despliega u con cuatro d gitos a la derecha del punto decimal. Si los d gitos signicativos en el resultado estn fuera de a ese rango, MATLAB despliega el resultado en notacin cient o ca. A continuacin, los comandos de MATLAB o para formato numrico son mostrados. e
Comando de MATLAB format short format long format short e format long e format short g format long g format hex format bank format + format rat pi 3.1416 3.14159265358979 3.1416e+000 3.141592653589793e+000 3.1416 3.14159265358979 400921fb54442d18 3.14 + 355/113 Comentario 5 d gitos 16 d gitos 5 d gitos ms exponente a 16 d gitos ms exponente a mejora de format short o format short e mejora de format long o format long e punto otante hexadecimal d gitos de 2 dcimas e positivo, negativo o cero aproximacin racional o

2.4.

Control de ventanas de control

MATLAB proporciona algunos comandos para administrar la ventana de comando. Estos comandos son los siguientes.
Comandos clc home more Descripcin o Limpia la ventana de comandos moviendo el cursor a la esquina superior izquierda. Mueve el cursor a la esquina superior izquierda. Paginacin de la ventana de comandos. o

2.5.

Informacin del sistema o

Desde la l nea de comandos podemos obtener informacin acerca de la plataforma de la computadora en o la cual MATLAB est corriendo as como informacin de las aplicaciones de MATLAB. a o El comando computer regresa un caracter describiendo la computadora en la cul MATLAB est corriena a do. )) computer ans = PCWIN En este caso, MATLAB est corriendo en una computadora bajo Windows. Utilizan el comando help a vemos los diferentes tipos de sistemas que MATLAB puede correr. )) help computer COMPUTER Computer type. COMPUTER returns a string containing the name of the computer on which MATLAB is executing. Possibilities are:

PCWIN MAC2 SUN4 SOL2 HP700 SGI SGI64 IBM_RS ALPHA AXP_VMSG AXP_VMSIEEE LNX86 VAX_VMSG VAX_VMSD

MS-Windows Macintosh Sun SPARC Solaris 2 HP 9000/700 Silicon Graphics Silicon Graphics R8000 IBM RS6000 Dec Alpha Alpha VMS G_float Alpha VMS IEEE Linux Intel VAX/VMS G_float VAX/VMS D_float

[C,MAXSIZE] = COMPUTER returns also integer MAXSIZE which contains the maximum number of elements allowed in a matrix on this version of MATLAB. See also ISIEEE, ISPPC, ISUNIX, ISVMS. El comando isieee retorna 1 si el sistema utiliza aritmtica de la IEEE, 0 en caso contrario. e )) isieee ans = 1 De acuerdo a este comando, la computadora maneja aritmtica de la IEEE. e Para saber la versin de MATLAB que actualmente maneja el sistema, empleamos el comando version. o )) version ans = 5.3.0.10183 (R11) Para una informacin ms detallada de nuestra versin de MATLAB usamos el comando ver: o a o

10

)) ver -------------------------------------------------MATLAB Version 5.3.0.10183 (R11) on PCWIN MATLAB License Number: 76297 -------------------------------------------------MATLAB Toolbox Version 5.3 MATLAB Runtime Server Development Kit Version 5.3 Real Time Windows Target Version 1.0 Data Acquisition Toolbox Version 1.0 Dials & Gauges Blockset Version 1.0 Simulink Report Generator Version 1.0 MATLAB Report Generator Version 1.0 Database Toolbox Version 1.0 Power System Blockset Version 1.1 MATLAB Compiler (and Compiler 1.2.1) Version 2.0 Communications Toolbox Version 1.4 Symbolic Math Toolbox Version 2.1 NAG Foundation Toolbox - Numerical ... Version 1.0.3 Mapping Toolbox Version 1.1 Wavelet Toolbox Version 1.2 Partial Differential Equation Toolbox Version 1.0.3 Financial Toolbox Version 2.0.1 LMI Control Toolbox Version 1.0.5 QFT Control Design Toolbox Version 1.0.3 Fixed-Point Blockset Version 2.0 DSP Blockset Version 3.0 Fuzzy Logic Toolbox Version 2.0.1 Model Predictive Control Toolbox Version 1.0.4 Frequency Domain Identification Too... Version 2.0.3 Higher-Order Spectral Analysis Toolbox Version 2.0.3 Statistics Toolbox Version 2.2 Nonlinear Control Design Blockset Version 1.1.3 Image Processing Toolbox Version 2.2 Neural Network Toolbox Version 3.0.1 Mu-Analysis and Synthesis Toolbox Version 3.0.4 Signal Processing Toolbox Version 4.2 Spline Toolbox Version 2.0.1 Optimization Toolbox Version 2.0 Robust Control Toolbox Version 2.0.6 System Identification Toolbox Version 4.0.5 Control System Toolbox Version 4.2 Real-Time Workshop Version 3.0.0 SystemBuild to Simulink Translator Version 2.0 Stateflow Version 2.0 Simulink Version 3.0

(R11) 15-Jan-1999 (R11) 05-Oct-1998 (R11) 10-Jul-1998 (R11) Beta 2.0 07-Jan-1999 (R11) Beta 3 09-Jan-1999 (R11) 05-Dec-1998 (R11) 05-Dec-1998 (R11) 01-Aug-1998 (R11) 10-Aug-1998 (R11) 08-Dec-1998 (R11) 10-Jul-1998 (R11) 11-Sep-1998 (R11) 06-Jun-1998 (R11) 04-Sep-1998 (R11) 10-Jul-1998 (R11) 21-Nov-1997 (R11) 14-Aug-1998 (R11) 09-Sep-1998 (R11) 21-Nov-1997 (R11) 10-Jul-1998 (R11) 10-Jul-1998 (R11) 16-Sep-1998 (R11) 03-Sep-1998 (R11) 29-Sep-1998 (R11) 10-Jul-1998 (R11) 24-Jul-1998 (R11) 10-Aug-1998 (R11) 05-Aug-1998 (R11) 01-Jul-1998 (R11) 10-Apr-1998 (R11) 10-Jul-1998 (R11) 14-Aug-1998 (R11) 09-Oct-1998 (R11) 10-Apr-1998 (R11) 10-Apr-1998 (R11) 15-Jul-1998 (R11) 13-Oct-1998 (R11) 10-Aug-1998 (R11) 16-Jan-1999 (R11) 01-Sep-1998

11

2.6.

Variables

Como en cualquier lenguaje de programacin, MATLAB tiene reglas para los nombres de variables, a o continuacin dichas reglas son mencionadas. o
Reglas de asignacin de nombres o Los nombres de variables son sensibles. Los nombres de variables pueden contener hasta 31 caracteres. Los nombres de variables comienzan con letra Los caracteres de puntuacin no son permitidos o Los nombres pueden llevar guin bajo o Comentarios/Ejemplos Suma, suma, SUMA son variables distintas howaboutthisvariablename123 a1, position1, x1, x2 com.1, position.2, x.2 com 1, position 2, x 2

Aparte de estas reglas para nombres. MATLAB tiene algunas variables especiales. Y son las siguientes:
Variables Especiales ans pi eps ops inf NaN () nan o i (y) j nargin nargout realmin realmax Descripcin o Utilizada para resultados. Epsilon de la mquina a Conteo de operaciones de punto otante No nmero u i = j = 1 Nmero de argumentos de entrada de una funcin u o Nmero de argumentos de salida de una funcin u o Nmero entero real ms pequeo utilizable u a n Nmero entero real ms grande utilizable u a

2.7.

Comentarios, puntuacin e interrupcin de ejecucin o o o

En la l nea de comandos podemos escribir al nal un punto y coma (;) para no imprimir los resultados calculados. Ejemplo:

)) )) )) )) )) ))

erasers=6; pads=5; tape=4; items=erasers+pads+tape; cost=erasers*25+pads*52+tape*99; average_cost=cost/items

average_cost = 53.7333

De acuerdo a este ejemplo, los resultados intermedios no fueron desplegados debido a que se utiliz el o punto y coma al nal de los comandos que fueron denidos. Aparte del punto y coma, podemos usar otros caracteres de puntuacin tambin. Todo texto que precede o e del signo % es tomado como un comentario. Ejemplo: 12

)) items=200 % Nmero total de objetos (items) u items = 200 En este caso, a la variable items se le asigna el valor de 200 pero MATLAB simplemente ignora el signo % y todo el texto que va despus del mismo. e Tambin, mltiples comandos pueden estar en una sola l e u nea si estn separados por comas (,) puntos a o y coma. Ejemplo: )) erasers=6, pads=6; tape=2 erasers = 6

tape = 2

Nota! El procesamiento en MATLAB puede ser interrumpido en cualquier momento presionando Ctrl-C.

2.8.

N meros Complejos u

Una de las caracter sticas ms poderosas de MATLAB es que no requiere de manipulaciones especiales a para nmeros complejos. Los nmeros complejos en MATLAB son formados de varias maneras. u u Ejemplo: )) c1=1-2i % 2i significa la parte imaginaria c1 = 1.0000 - 2.0000i )) c1=1-2j % 2j significa la parte imaginaria c1 = 1.0000 - 2.0000i )) c2=3*(2-sqrt(-1)*3) c2 =

13

6.0000 - 9.0000i )) c3=sqrt(-2) c3 = 0 + 1.4142i )) c4=6+sin(.5)*i c4 = 6.0000 + 0.4794i )) c5=6+sin(.5)*j c5 = 6.0000 + 0.4794i

Cabe mencionar, que las operaciones matemticas con nmeros complejos pueden ser escritas de la misma a u forma para los nmeros reales. u Ejemplo:

)) c6=(c1+c2)/c3 c6 = -7.7782 - 4.9497i )) c6r=real(c6) c6r = -7.7782 )) c6r=imag(c6) c6r = -4.9497 )) check_it_out=i^2 % sqrt(-1) elevado al cuadrado debe ser -1. check_it_out = -1

En MATLAB, la conversin entre formas polar y rectangular se lleva a cabo con las funciones real, imag, o abs, y angle: 14

)) c1 c1 = 1.0000 - 2.0000i )) mag_c1=abs(c1) %magnitud mag_c1 = 2.2361 )) angle_c1=angle(c1) %ngulo en radianes a angle_c1 = -1.1071 )) deg_c1=angle_c1*180/pi % ngulo en grados a deg_c1 = -63.4349 )) real_c1=real(c1) %parte real real_c1 = 1 )) imag_c1=imag(c1) %parte imaginaria imag_c1 = -2

15

2.9.

Funciones matemticas a

Las listas de las funciones que MATLAB soporta son mostradas en las siguientes tablas. Muchas de estas funciones son utilizadas en la misma forma que ser escritas matemticamente. an a
Funciones trigonomtricas e acos acosh acot acoth acsc acsch asec asech asin asinh atan atan2 atanh cos cosh cot coth csc csch sec sech sin sinh tan tanh Funciones exponenciales exp log log10 log2 pow2 sqrt nextpow2 Funciones complejas abs angle conj imag real unwrap isreal cplxpair Descripcin o Coseno inverso. Coseno hiperblico inverso. o Cotangente inversa. Cotangente hiperblico inverso. o Cosecante inversa. Cosecante hiperblica inversa. o Secante inversa. Secante hiperblica inversa. o Seno inverso. Seno inverso hiperblico. o Tangente inversa. Tangente inversa de cuarto cuadrante. Tangente inversa hiperblica. o Coseno. Coseno hiperblico. o Cotangente. Cotangente hiperblica. o Cosecante. Cosecante hiperblica. o Secante. Secante hiperblica. o Seno. Seno hiperblico. o Tagente. Tagente hiperblica. o

Descripcin o Exponencial. Logaritmo natural. Logaritmo base 10. Logaritmo base 2 y diseccin en punto otante. o Potencia base 2 y escalamiento en punto otante. Ra cuadrada. z Potencia de 2 superior inmediata.

Descripcin o Valor absoluto o magnitud. Angulo de fase en radianes. Conjugado complejo. Parte imaginaria compleja. Parte real compleja. Angulo de fase. Verdaddero para arreglos reales. Vector de ordenacin en pares conjugados complejos. o

16

Funciones de redondeo y residuo x oor ceil round mod rem sign

Descripcin o Redondeo hacia cero. Redondeo hacia el entero inferior. Redondeo hacia el entero superior. Redondeo hacia el entero ms prximo. a o Residuo con signo. Residuo despus de la divisin. e o Funcin signo. o

Transformacin de coordenadas o cart2sph cart2pol pol2cart sph2cart

Descripcin o Cartesianas a esfricas. e Cartesianas a polares o cil ndricas. Polar a cartesianas. Esfricas a cartesianas. e

Teor de n meros a u factor isprime primes gcd lcm rat rats perms nchoosek

Descripcin o Factores primos. Determina si un nmero es primo. u Genera lista de nmeros primos. u Mximo com n divisor. a u M nimo comn divisor. u Aproximacin racional. o Salida racional. Todas las posibles combinaciones. Todas las combinaciones de N elementos tomados K a la vez.

Funciones matemticas especializadas a airy besselj bessely besselh besseli besselk beta betainc betaln

Descripcin o Funciones de Airy. Funcin de Bessel del primer tipo. o Funcin de Bessel del segundo tipo. o Funcin de Bessel del tercer tipo. o Funcin de Bessel modicada del primer tipo. o Funcin de Bessel modicada del segundo tipo. o Funcin Beta. o Funcin Beta incompleta. o Lograitmo de funcin Beta. o

17

Funciones matemticas especializadas a airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx ernv expint gamma gammainc gammaln legendre cross dot

Descripcin o Funciones de Airy. Funcin de Bessel del primer tipo. o Funcin de Bessel del segundo tipo. o Funcin de Bessel del tercer tipo. o Funcin de Bessel modicada del primer tipo. o Funcin de Bessel modicada del segundo tipo. o Funcin Beta. o Funcin Beta incompleta. o Logaritmo de funcin Beta. o Funciones el pticas de Jacobi. Integral el ptica completa. Funcin de error. o Funcin de error complementaria. o Funcin de error complementaria escalada. o Funcin de error inversa. o Funcin de error exponencial. o Funcin gamma. o Funcin gamma incompleta. o Logaritmo de la funcin gamma. o Funcin asociada de Legendre. o Producto cruz vectorial. Producto punto.

2.10.

Archivos M script

Para problemas sencillos, el ingreso de datos puede ser sencillo y rpido por medio de la l a nea de comandos. Sin embargo, conforme aumenta el nmero de comandos o cuando se desea cambiar el valor de una o ms u a variables y reevaluar un nmero de comandos, eso podr convertirse en algo tedioso. La solucin a esto es u a o mover los comandos de MATLAB en un archivo de texto simple. Este tipo de archivos son llamados archivos script simplemente archivos tipo M. o Ejemplo: Archivo script ejemplo1.m:

% script archivo M ejemplo1.m erasers=4; % nmero de cada item u pads=6; tape=2; items=erasers+pads+tape cost=erasers*25+pads*52+tape*99 average_cost=cost/items Corriendo este archivo en la l nea de comandos produce lo siguiente )) ejemplo1 items = 12 18

cost = 610

average_cost = 50.8333 MATLAB proporciona algunas funciones que son particularmente utiles cuando son utilizadas en archivos M; y son las siguientes:
Funcin o disp(variable) echo input keyboard pause pause(n) waitforbuttonpress Descripcin o Despliega resultados sin identicar los nombres de variable. Controla la venta de comando permitiendo ver los comandos del archivo script. Entrada de datos de usuario. Proporciona control al teclado temporalmente. Pausa hasta que el usuario presiona cualquier tecla. Pausa por n segundos, entonces contina. u Pausa hasta que el usuario presiona una tecla o un botn de mouse. o

A continuacin, se har una demostracin de cada uno de estos comandos. o a o Ejemplo: Empleando el comando input. Archivo script heron.m:

% script archivo-M heron.m %Este programa determina el rea de un tringulo a partir del valor a a %de sus lados y su semipermetro. a=input(lado a: ); b=input(lado b: ); c=input(lado c: ); %Clculo del semipermetro a s=(a+b+c)/2 %Clculo del rea a a A=sqrt(s*(s-a)*(s-b)*(s-c))

Ejecutando este programa, tenemos lo siguiente: )) heron lado a: 17 lado b: 35 lado c: 42

19

s = 47

A = 290.8608 Ejemplo: Empleando el comando echo. Archivo script heron.m:

% script archivo-M heron.m %Este programa determina el rea de un tringulo a partir del valor a a %de sus lados y su semipermetro. echo on a=input(lado a: ); b=input(lado b: ); c=input(lado c: ); %Clculo del semipermetro a s=(a+b+c)/2 %Clculo del rea a a A=sqrt(s*(s-a)*(s-b)*(s-c)) echo off

Ejecutando este programa tenemos lo siguiente: )) heron a=input(lado a: ); lado a: 17 b=input(lado b: ); ladob: 35 c=input(lado c: ); lado c: 42 %Clculo del semipermetro a s=(a+b+c)/2 s = 47

%Clculo del rea a a A=sqrt(s*(s-a)*(s-b)*(s-c)) 20

A = 290.8608 echo off Como se ve en este ejemplo, este comando puede resultar muy tedioso para leer. Una ventaja importante del comando echo es su utilidad en la depuracin archivos script ms complicados. o a

2.11.

Funciones de usuario

En MATLAB podemos crear funciones que se guardan como archivos M, debemos recordar que equivalen a la subrutinas y funciones de otros lenguajes de programacin. La ventaja del manejo de funciones es que o permite una mayor versatilidad en la programacin con solo invocar el nombre de la funcin. o o Una funcin bsicamente se compone de uno o ms parmetros de entrada, y entrega una o ms variables o a a a a de salida. Una funcin en MATLAB bsicamente tiene la siguiente sintaxis: o a function[var1 , var2 , . . . , varn ]=nombre_funcion(par1 , par2 , . . . , parn ) % Comentarios sentencia1 sentencia2 . . . sentencian % Variables de salida var1 var2 . . . varn Donde par1 , par2 , . . . , parn son los parmetros de entrada de una funcin y var1 , var2 , . . . , varn son las a o variables de salida que la funcin entrega al ser invocada. o Tambin, podemos comentar la funcin con el n de que proporcione informacin acerca de la misma al e o o escribir el nombre de la funcin precedida del comando help. o Ejemplo: Crear la siguiente funcin. o f (x) = Archivo funcionx.m: 2x3 + 7x2 + 3x 1 x2 3x + 5ex

function[fx]=funcionx(x) %Evalua una funcion de la forma % f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x)) fx=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x)); Podemos por medio del comando help saber acerca de esta funcin as como su evaluacin. o o 21

)) help funcionx Evalua una funcion de la forma f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x)) )) y=funcionx(3) y = 502.1384 De acuerdo a la sintaxis anterior, una funcin puede devolver ms de una variable. o a Ejemplo: Crear una funcin que obtenga la media varianza y desviacin estndar de un grupo de o o a muestras de poblacin. o Archivo estadisticos.m:

function[media,varianza,dvstd]=estadisticos(X) %estadisticos entrega la media, varianza y desviacin estndar o a %de un vector de muestras X %Sintaxis: %estadisticos(X) %Cuyas variables de salida son almacenadas en las variables: %media, varianza y dvstd

n=length(X); media=sum(X)/n; varianza=sum(X.^2)/n-media.^2; dvstd=sqrt(varianza); Evaluando esta funcin, observamos lo siguiente en la ventana de comandos: o )) help estadisticos estadisticos entrega la media, varianza y desviacin estndar o a de un vector de muestras X Sintaxis: estadisticos(X) Cuyas variables de salida son almacenadas en las variables: media, varianza y dvstd )) x=[1 5 3 4 6 5 8 9 2 4]; )) [m, v, d]=estadisticos(x) m = 4.7000

v =

22

5.6100

d = 2.3685 Cabe mencionar, que al emplear esta funcin, el miembro de la derecha debe ser un vectoe; en el lado o izquierdo un vector tambin. e Tambin es posible que una funcin utiliza otra funcin, el argumento de una funcin puede ser el nombre e o o o de otra funcin. o Ejemplo: Crear una funcin que evala la media ponderada de una funcin en tres puntos de la forma: o u o fav = f (a) + 2f (b) + f (c) 4

Evalu con la funcin funcionx.m y con los valores de a = 1, b = 2 y c = 3. e o Archivo f_av.m:

function[mp]=f_av(nombre_func, a, b, c) %Evala la media ponderada de una funcin f(x) u o %dada una funcin y tres puntos o %Sintaxis: %f_av(nombre_funcin,a , b, c) o mp=(feval(nombre_func,a)+2*feval(nombre_func,b)+feval(nombre_func,c))/4; Evaluando en la l nea de comandos tenemos lo siguiente. )) help f_av Evala la media ponderada de una funcin f(x) u o dada una funcin y tres puntos o Sintaxis: f_av(nombre_funcin,a , b, c) o )) help funcionx Evalua una funcion de la forma f(x)=(2*x^3+7*x^2+3*x-1)/(x^2-3*x+5*exp(-x)) )) f_av(funcionx,1,2,3) ans = 89.8976 De este ejemplo, observamos que nombre_func es el nombre de una funcin f (x). Donde f (x) puede ser o una funcin predenida en MATLAB o creada por el usuario. El comando feval(nombre_func,x) evala la o u funcin llamada nombre_func para el argumento x. Ejemplo, si y=feval(sin(x),x) equivale a y=sin(x). o

23

24

Cap tulo 3

Flujo de Control
MATLAB ofrece cuatro estructuras para control de ujo y toma de decisin que son: Ciclos For, Ciclos o While, If-Else-End, y Switch-Case. Estas estructuras son descritas y explicadas a continuacin. o

3.1.

Ciclos FOR

Los ciclos For permiten a un grupo de comandos o sentencias ser repetidos un nmero jo o predetermiu nado de veces. La forma general para los ciclos For es la siguiente.

for variable= expresin o sentencia 1 sentencia 2 . . . sentencia n end Cada sentencia entre los enunciados for y end son ejecutados una vez en cada valor que va tomando la expresin (iteracin). o o Ejemplo: Clculo de inters compuesto. a e Una persona invierte $1000,00 en una cuenta de ahorros, que redita un inters del 5 %. Suponiendo que u e todo el inters se queda en depsito dentro de la cuenta, calcular y desplegar la cantidad de dinero en la e o cuenta, al nal de cada ao, durante un periodo de 10 aos. Tip: Utilizar la frmula siguiente: n n o a = p(1 + r)n Donde p es la cantidad original invertida. r tasa anual de inters. e n nmero de aos. u n a cantidad en depsito al nal del ao n. o n Archivo script interes.m: 25

% script archivo-M interes.m % % % % % Este programa calcula el inters compuesto, donde e p es la cantidad original invertida (principal). r tasa anual de inters (rate). e n nmero de a~os (years). u n a cantidad en depsito al final del a~o n (amount). o n

principal=input(p: ); rate=input(r (%): ); years=input(n: ); rate=rate*0.01; disp(sprintf(\n\n %4s

%21s\n, a~o:, depsito:)) n o

for n=1:years amount=principal*(1+rate)^n; disp(sprintf(%4d %21.2f\n, n, amount)) end

Corriendo este programa, obtenemos los siguientes resultados. )) interes p: 1000 r (%): 5 n: 10

a~o: n 1 2 3 4 5 6 7 8 9 10

depsito: o 1050.00 1102.50 1157.63 1215.51 1276.28 1340.10 1407.10 1477.46 1551.33 1628.89

De acuerdo con el ejemplo anterior. En el archivo interes.m, el enunciado for n=1:years signica que la variable de control n ir tomando valores de 1 a 10, en incrementos de 1. Es decir, ejecuta 10 veces las a 26

sentencias dentro del ciclo; en este caso la frmula de inters y el desplegado en pantalla de la informacin. o e o Los ciclos For pueden ser anidados; es decir utilizando ciclos internos y externos. Ejemplo: Clculo de inters compuesto. a e Una persona invierte $15000,00 en una cuenta de ahorros, que redita un inters del 4 %. Suponiendo u e que todo el inters se queda en depsito dentro de la cuenta, calcular y desplegar la cantidad de dinero en la e o cuenta, al nal de cada ao, durante un periodo de 3 aos. Realizar el mismo clculo si utilizamos un inters n n a e del 4 % al 6 %. Archivo script interes2.m:

% script archivo-M interes2.m % % % % % % Este programa calcula el inters compuesto desde e una cierta tasa de inters a otra, donde e p es la cantidad original invertida (principal). r tasa anual de inters variable (variable rate). e n nmero de a~os (years). u n a cantidad en depsito al final del a~o n (amount). o n

clc principal=input(p: ); rate1=input(r0 (%): ); rate2=input(rn (%): ); years=input(n: ); rate=0.01.*(rate1:rate2); b=size(rate); for i=1:b(2) disp(sprintf(%6s %21s %15s %4.2f\n, a~o:, depsito:, inters (%):, 100*rate(i))) n o e for n=1:years amount=principal*(1.+rate(i))^n; disp(sprintf(%4d %21.2f\n, n, amount)) end end Corriendo este script, se obtiene lo siguiente: p: r0 rn n: 15000 (%): 4 (%): 6 3 a~o: n 1 2 3 a~o: n 1

depsito: o 15600.00 16224.00 16872.96 depsito: o 15750.00

inters (%): 4.00 e

inters (%): 5.00 e

27

2 3 a~o: n 1 2 3

16537.50 17364.38 depsito: o 15900.00 16854.00 17865.24 inters (%): 6.00 e

De acuerdo con el ejemplo anterior. En el archivo interes2.m, el ciclo interno for n=1:years signica que la variable de control n ir tomando valores de 1 a 3, en incrementos de 1. Este ciclo interno es ejecutado a desde 4 a 6 por el ciclo externo for i=1:b(2).

3.2.

Ciclos WHILE

Los ciclos While evalan un grupo de comandos o sentencias un nmero indenido de veces. La forma u u general de un ciclo While es:

while expresin o sentencia 1 sentencia 2 . . . sentencia n end

Las sentencias entre while y end son ejecutados mientras expresin es verdadera. En caso de que o expresin sea falsa, el ciclo while termina de ejecutarse. o Ejemplo: Considerar el ejemplo siguiente.

% archivo aprox.m num=0; EPS=1; clc while (1+EPS)>1 EPS=EPS/2; num=num+1; end num 2*EPS

Ejecutando este archivo script, tenemos lo siguiente: 28

num = 53

ans = 2.2204e-016

Este ejemplo realiza el clculo de la variable especial de MATLAB eps, el cul es el nmero ms pequeo a a u a n que puede ser sumado a 1 tal que el resultado es mayor que 1 utilizando precisin nita. o En el ejemplo, tenemos la variable EPS para que la variable especial eps no sea sobreescrita. EPS es inicializada a 1. Conforme (1+EPS)>1 es verdadero (no zero), las sentencias dentro del ciclo While son evaluados. Donde EPS es continuamente dividida en dos, EPS eventualmente va hacindose tan pequeo que e n sumndole EPS a 1 no llega a ser mayor que 1. En este punto, (1+EPS)>1 es falso (cero) y el ciclo While a termina. Finalmente, EPS es multiplicado por 2 debido a que la ultima divisin por 2 lo hizo muy pequeo o n por un factor de 2. La variable num es un contador de cuantas iteraciones se tuvieron que realizar.

3.3.

Estructuras IF-ELSE-END

En muchas ocasiones, las secuencias de comados deben estar condicionalmente evaluadas basadas en un test relacional. Esta lgica es proporcionada por la estructura If-Else-End. Las construccin If-Else-End o o ms simple tiene la siguiente forma: a

if expresin o (sentencias) end

Las sentencias entre los enunciados if y end son evaluados si todos los elementos de expresin son o verdadero (no cero). En aquellos casos en que expresin involucra algunas subexpresiones lgicas, solo el o o m nimo nmero requerido para determinar el estado lgico nal son evaluados. u o Por ejemplo, si expresin es expresin1 expresin2, entonces expresin2 es solo evaluada si o o o o expresin2 es falsa. Similarmente, si expresin es (expresin1 & expresin2), entonces expresin2 o o o o o no es evaluada si expresin1 es falsa. o Ejemplo: En una tienda con ventas al mayoreo, se venden ciertos art culos. La tienda realiza un descuento del 25 % a partir de la compra de 20 art culos, en caso contrario, se aplicar el costo por el nmero de a u art culos. Hacer un programa que lea el nmero de art u culos a comprar y el costo por unidad y realize estas consideraciones. Archivo script interes.m: 29

%archivo script descuento.m %Venta al mayoreo articles=input(numero de articulos: ); cost1=input(costo unitario: ); cost=articles*cost1; disp(sprintf(Costo original: %21.2f, cost)) if articles>20 %a partir de 20 articulos. cost=(1-25/100)*cost; %aplicar el 25% de descuento end disp(sprintf(Costo mayoreo: %21.2f, cost))

Ejecutando este cdigo, para un nmero de art o u culos de 100 a un costo unitario de 25$. Tenemos lo siguiente: )) mayoreo numero de articulos: 100 costo unitario: 25 Costo original: Costo mayoreo:

2500.00 1875.00

En casos donde existan dos alternativas, la estructura If-Else-End toma esta forma:

if expresin o (sentencias evaluadas si expresin es verdadera) o else (sentencias evaluadas si expresin es falsa) o end En casos cuando existan tres o ms alternativas, la estructura If-Else-End es la siguiente: a

if expresin1 o (sentencias evaluadas elseif expresin2 o (sentencias evaluadas elseif expresin3 o (sentencias evaluadas elseif expresin4 o (sentencias evaluadas elseif ... . . . else

si expresin1 es verdadera) o si expresin2 es verdadera) o si expresin3 es verdadera) o si expresin4 es verdadera) o

(sentencias evaluadas si ninguna expresin es verdadera) o end

30

En esta ultima forma solo los comandos asociados con la primera expresin verdadera encontrada son eval o uados; asegurando que las expresiones relacionales no sean probadas y el resto de la estructura If-Else-End es pasada por alto. El comando else puede o no aparecer. Manejando estructuras condicionales podemos realizar formas de salto o interrupcin de ciclos For y o ciclos While: Ejemplo: Aproximacin. o Archivo script interes.m:

% archivo aprox2.m clc EPS=1; for num=1:1000 EPS=EPS/2; if(1+EPS)<=1 EPS=EPS*2; break end end num EPS Corriendo est programa, tenemos lo siguiente: num = 53

EPS = 2.2204e-016 Este ejemplo es una manera de obtener eps. El ciclo For est estructurado para correr un nmero mayor a u de veces. La estructura If-Else-End checa para ver si EPS ha llegado a ser lo sucientemente pequea. Si n eso se tiene, EPS es multiplicada por 2 y el comando break forza al ciclo For a terminar prematuramente. La variable num indica el nmero de veces que se realiz el clculo de EPS. u o a En este ejemplo, cuando el enunciado break es ejecutado, MATLAB salta al siguiente enunciado fuera del ciclo en donde ste aparece. En este caso, ser desplegar las variables num y EPS. e a En el caso de ciclos anidados cuando un comando break aparece, MATLAB salta fuera del ciclo en el cul aparece. Pero no fuera la estructura completa anidada. a

31

3.4.

Estructuras SWITCH-CASE

Cuando las secuencias de comandos deben ser evaluados en base al uso repetido de prueba de igualdad. Esto es llevado a cabo de manera mucho ms fcil empleando las estructuras Switch-Case y son de la a a siguiente forma:

switch expresin o case test_expresin1 o (sentencias1) case {test_expresin2,test_expresin3,test_expresin4} o o o (sentencias2) othewise (sentencias3) end

Aqu expresin debe ser un escalar o una cadena de caracter. Si expresin es un escalar, expresin==test_expresin o o o o o o es probada por cada enunciado case. Si expresin es una cadena de caracter, expresin es comparado con test_expresin1 en el primer enunciado. Si son iguales, sentencias1 son evaluadas y el resto de los enuncio ados antes del end son pasados por alto. Si la primera comparacin es falsa, la segunda opcin es considerada o o (segundo case). Si todas las comparaciones son falsas, (sentencias3) son ejecutadas despus del enunciado e otherwise.

Nota! La implementacin de Switch-Case permite al menos que uno del grupo de sentencias sea ejecutada. o

Ejemplo: Crear un programa que convierta una medida lineal a una unidad por default (en este caso, cent metros). Ingresar la magnitud y la unidad.

Archivo script interes.m: 32

%archivo script medidas.m %Este archivo realiza la conversin de un nmero o u %en medidas lineales a centmetros. x=input(cantidad: ); units=input(unidades: ); switch units %convierte x a centmetros case {inch, in} y=x*2.54; case {feet, ft} y=x*2.54*12; case {meter, m} y=x/100; case {millimeter, mm} y=x/10; case {centimeter, cm} y=x; otherwise disp([Unidades desconocidas: units]) y=nan; end disp(sprintf(%21.5f %3s, y, cm))

Ejecutando este programa con varios ejemplos, tenemos los siguientes resultados en pantalla. )) cantidad: 2.7 unidades: m 0.02700 cm )) cantidad: 1 unidades: in 2.54000 cm )) cantidad: 5 unidades: ft 152.40000 cm )) cantidad: 3 unidades: mm 0.30000 cm

33

34

Cap tulo 4

Arreglos y operaciones con arreglos


4.1. Direccionamiento de arreglos

En MATLAB, los datos necesarios para operaciones son almacenados y procesados en forma de arreglos. Los elementos de un arreglo son accesados a travs de sub e ndices (este sub ndice representa una direccin en o donde se localiza un elemento en particular). Ejemplo: Utilizando arreglos evaluar la siguiente funcin utilizando pasos de 0,1 y realizar la grca o a correspondiente. f (x) = sin(x) para 0 x 2

Escribiendo el archivo correspondiente llamado seno.m:

% script archivo-M seno.m %Este programa evala la funcin seno desde 0 hasta 2*pi u o %y obtiene su grfica a x=0:0.1*pi:2*pi y=sin(x) plot(x,y) grid %vector desde 0 hasta 2*pi en pasos de 0.1*pi %vector que contiene el valor del seno de x %obtiene la grfica de la funcin seno a o

Corriendo este archivo script (ya sea desde la l nea de comandos o desde el editor de MATLAB), vemos en la ventana de comandos los valores correspondientes de x y el valor de la funcin seno (arreglo y) . o )) seno x = Columns 1 through 7 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850

35

Columns 8 through 14 2.1991 2.5133 2.8274 3.1416 3.4558 3.7699 4.0841

Columns 15 through 21 4.3982 4.7124 5.0265 5.3407 5.6549 5.9690 6.2832

y = Columns 1 through 7 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511

Columns 8 through 14 0.8090 0.5878 0.3090 0.0000 -0.3090 -0.5878 -0.8090

Columns 15 through 21 -0.9511 -1.0000


1

-0.9511

-0.8090

-0.5878

-0.3090

-0.0000

0.8

0.6

0.4

0.2

0.2

0.4

0.6

0.8

Figura 4.1: Grca de la funcin seno. a o

Como vemos en la Figura 6.10, la grca de la funcin seno est formada por los arreglos x (la variable a o a independiente) y el arreglo y (la variable dependiente). Nota! Los arreglos involucrados para la gracacin deben de ser del mismo tama o o dimensin. o n o

36

4.2.

Construccin de arreglos o

MATLAB maneja bsicamente dos tipos de arreglo que son: a Unidimensionales: Existen dos tipos y podemos verlos como vectores: Tipo la: Tamao (dimensin) 1 n, donde n es el nmero de columnas. n o u Tipo columna: Tamao (dimensin) n 1, donde n es el nmero de las. n o u Bidimensionales: Son aquellos que tienen cierta cantidad de las y columnas (podemos considerarlos como matrices). En MATLAB se pueden denir con slo especicar sus dimensiones. o Matriz de tamao n n (matriz cuadrada), donde n es el nmero de las y columnas. n u Matriz de tamao n m (matriz rectangular), donde n es el nmero de las y m el nmero de n u u columnas.
En MATLAB, para crear un vector la; los elementos deben estar separados por espacios o comas especicando diferentes columnas. De manera anloga, para un vector columna, a cada elemento est separado por punto y coma especicando diferentes las. a Para construir matrices, especicamos las columnas separando cada elemento por medio de espacios coma y con punto y coma las las. o

Las tcnicas y comandos empleados para la construccin de arreglos unidimensionales se muestran a e o continuacin: o
Tcnicas de construccin e o x=[ 2 2*pi sqrt(2) 2-3j] y=[ 2;2*pi;sqrt(2);2-3j] x=rst:last x=rst:step:last x=linspace(rst,last,n) x=logspace(rst,last,n) Descripcin o con elementos espec cos. con elementos espec cos. rst hasta last. rst hasta last con incrementos (step). rst hasta last, teniendo n elementos (puntos). logar tmicamente espaciado desde 10f irst hasta 10last teniendo n elementos (puntos).

Crean un vector la x. Crea un vector columna y. Podemos pasar de vector la a columna o viceversa, esto es llevado a cabo realizando una transpuesta al vector la o columna y se denota con el operador (). Ejemplo: )) a=1:.5:5 a = Columns 1 through 7 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000

Columns 8 through 9 4.5000 )) b=a 5.0000

37

b = 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 Cuando se manejan vectores o matrices con elementos complejos, si empleamos el operador () obtenemos la transpuesta pero con sus elementos conjugados. MATLAB ofrece el operador punto transpuesta (.); la diferencia del primero con el segundo con respecto al segundo radica en que el operador (.) entrega la transpuesta con sus elementos sin alterar. Ejemplo: )) c=a+i*a c = Columns 1 through 4 1.0000 + 1.0000i Columns 5 through 8 3.0000 + 3.0000i Column 9 5.0000 + 5.0000i )) c. ans = 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 )) c ans = 1.0000 - 1.0000i 38 + + + + + + + + + 1.0000i 1.5000i 2.0000i 2.5000i 3.0000i 3.5000i 4.0000i 4.5000i 5.0000i 3.5000 + 3.5000i 4.0000 + 4.0000i 4.5000 + 4.5000i 1.5000 + 1.5000i 2.0000 + 2.0000i 2.5000 + 2.5000i

1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000

1.5000i 2.0000i 2.5000i 3.0000i 3.5000i 4.0000i 4.5000i 5.0000i

Tambin podemos construir matrices y realizar operaciones matemticas; las matrices en MATLAB e a consisten en arreglos con mltiples las y columnas. A continuacin, tenemos algunos ejemplos de contruccin u o o de matrices. Ejemplo: Construccin de matrices o )) g=[1 2 3 4;5 6 7 8] g = 1 5 2 6 3 7 4 8

)) h=[1 2 3 4; 5 6 7 8; 9 10 11 12] h = 1 2 3 4 5 6 7 8 9 10 11 12 )) A=[-1 0 7 5;2 -4 10 8;6 4 -12 0;4 -2 5 7] A = -1 2 6 4 0 -4 4 -2 7 10 -12 5 5 8 0 7

)) B=[1 -3 10 -5;8 -10 11 3;8 16 -12 1;18 -1 9 3] B = 1 8 8 18 -3 -10 16 -1 10 11 -12 9 -5 3 1 3

4.3.

Operaciones matemticas con arreglos a

Operaciones matemticas matriciales y vectoriales pueden ser llevadas a cabo en MATLAB. a A continuacin, en la siguiente tabla resumimos las operaciones realizadas con matrices y vectores en o MATLAB. 39

Operaciones matriciales Suma escalar pi eps ops inf NaN () nan o i (y) j nargin nargout realmin realmax

Descripcin o Donde A, B son matrices y c un escalar Utilizada para resultados. Epsilon de la mquina a Conteo de operaciones de punto otante No nmero u i = j = 1 Nmero de argumentos de entrada de una funcin u o Nmero de argumentos de salida de una funcin u o Nmero entero real ms pequeo utilizable u a n Nmero entero real ms grande utilizable u a

Ejemplo: Operaciones matemticas con matrices en MATLAB. a )) A A = -1 2 6 4 )) B B = 1 8 8 18 -3 -10 16 -1 10 11 -12 9 -5 3 1 3 0 -4 4 -2 7 10 -12 5 5 8 0 7

)) A+B %suma de las matrices A+B ans = 0 10 14 22 -3 -14 20 -3 17 21 -24 14 0 11 1 10

)) 2*A %multiplicacin del escalar 2 por la matriz A o ans = -2 4 12 8 0 -8 8 -4 14 20 -24 10 10 16 0 14

)) ans-B %restar B de la respuesta previa (2*A-B) 40

ans = -3 -4 4 -10 3 2 -8 -3 4 9 -12 1 15 13 -1 11

Podemos hacer la multiplicacin de dos matrices; elemento por elemento matricial. En el siguiente o o ejemplo veremos las dos diferencias. Ejemplo: Multiplicamos las matrices A y B elemento por elemento. )) A A = -1 2 6 4 )) B B = 1 8 8 18 )) A.*B ans = -1 16 48 72 0 40 64 2 70 110 144 45 -25 24 0 21 -3 -10 16 -1 10 11 -12 9 -5 3 1 3 0 -4 4 -2 7 10 -12 5 5 8 0 7

El punto antes del s mbolo de multiplicacin le dice a MATLAB desarrollar o la multiplicacin elemento por elemento. En cambio, si no utilizamos el punto o signica que es la multiplicacin matricial. o

41

42

Cap tulo 5

Clculos de tiempo a
MATLAB ofrece funciones para manipular tiempo. Podemos realizar aritmticas con fechas, horas, ime primir calendarios, y localizar d espec as cos. MATLAB realiza esto almacenando la fecha y la hora como nmeros de doble precisin representando el nmero de d donde comienza el ao cero. MATLAB tiene u o u as n funciones para convertir nmeros de fechas y cadenas de caracteres y para manipular fechas y horas. u

5.1.

Fecha y hora actual

La funcin clock regresa la fecha y hora actuales en un arreglo. Ejemplo: o )) T=clock T = 1.0e+003 * 2.0030 0.0090 0.0030 0.0180 0.0390 0.0098

Estos datos fueron almacenados en el arreglo T con el siguiente formato: T=[a~o mes da hora minutos segundos] n La funcin now regresa la fecha y hora actual como nmeros de doble precisin o simplemente un nmero o u o u de fecha. )) format long )) t=now t = 7.318277810951389e+005 Cabe mencionar que T y t contienen la misma informacin. o La funcin date regresa la fecha actual como una cadena con el formato dd-mmm-yyyy: o )) date ans = 03-Sep-2003 43

5.2.

Conversiones para formatos de fechas

Generalmente, las matemticas en las que involucran tiempo involucra horas o fechas en forma de datos a numricos, desarrollando las operaciones matemticas estndares en las horas, y entonces convirtiendo el ree a a sultado a un formato comprensible al usuario. Como resultado, la conversin entre la conversin de diferentes o o formatos de tiempo es muy importante. MATLAB soporta tres formatos para fechas: 1. Nmeros de fecha con doble precisin. u o 2. Cadenas de caracteres de fechas en una variedad de estilos. 3. Vector numrico de fechas. e Podemos convertir el nmero de fecha a una cadena utilizando la funcin dateform. La sintaxis empleada u o para la funcin datestr es la siguiente: o datestr(fecha,forma del dato) A continuacin, vemos las caracter o sticas del comando datestr. )) help datestr DATESTR String representation of date. DATESTR(D,DATEFORM) converts a serial data number D (as returned by DATENUM) into a date string. The string is formatted according to the format number or string DATEFORM (see table below). By default, DATEFORM is 1, 16, or 0 depending on whether D contains dates, times or both. Date strings with 2 character years are interpreted to be within the 100 years centered around the current year. DATESTR(D,DATEFORM,PIVOTYEAR) uses the specified pivot year as the starting year of the 100-year range in which a two-character year resides. The default pivot year is the current year minus 50 years. DATEFORM = -1 uses the default format. DATEFORM number 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 DATEFORM string dd-mmm-yyyy HH:MM:SS dd-mmm-yyyy mm/dd/yy mmm m mm mm/dd dd ddd d yyyy yy mmmyy HH:MM:SS HH:MM:SS PM HH:MM HH:MM PM QQ-YY 44 Example 01-Mar-1995 15:45:17 01-Mar-1995 03/01/95 Mar M 3 03/01 1 Wed W 1995 95 Mar95 15:45:17 3:45:17 PM 15:45 3:45 PM Q1-96

18

QQ

Q1

See also DATE, DATENUM, DATEVEC. Ejemplos del comando datestr: )) t=now; )) datestr(t) ans = 03-Sep-2003 18:57:22 )) datestr(t,14) ans = 6:57:22 PM La funcin inversa a datestr es datenum. La funcin datenum convierte una fecha en formato de cao o dena de caracteres a una fecha en formato numrico utilizando datenum(str). Alternativamente, convierte e especicaciones de fechas individuales utilizando la forma: datenum(a~o,mes,da) n datenum(a~o,mes,da,hora,minutos,segundos) n Por ejemplo: )) t=now t = 7.318277941717593e+005 )) datestr(t) ans = 03-Sep-2003 19:03:36 )) datenum(ans) ans = 7.318277941666667e+005 )) datenum(2003,9,3) ans = 731827 )) datenum(2003,5,3,19,04,34) ans = 7.317047948379630e+005 45

La funcin datevec convierte una cadena de fechas usando datesr(format 0,1,2,6,13,14,15, o 16) a o un vector numrico conteniendo los componetes de la fecha. De manera alterna, convierte una fecha numrica e e a un vector numrico de componentes de fechas. Por ejemplo: e )) c=datevec(11/28/2001) c = 2001 11 28 0 0 0

)) [yr,mo,day,hr,min,sec]=datevec(28-Nov-2001 19:00) yr = 2001

mo = 11

day = 28

hr = 19

min = 0

sec = 0

5.3.

Funciones para fechas

El d de la semana de manera numrica puede ser encontrado a partir de una cadena de caracteres o a e una fecha numrica utilizando la funcin weekday. Ejemplo: e o )) [d,w]=weekday(731827) d = 4

46

w = Wed )) [d,w]=weekday(28-Nov-2003) d = 6

w = Fri El ultimo d de cualquier mes puede ser encontrado utilizando la funcin eomday. Debido a que existen a o los aos bisiestos, el ao y la fecha son requeridos. n n )) eomday(1996,2) % 2000 fue a~o bisiesto n ans = 29 MATLAB puede generar un calendario para cualquier mes que el usuario solicite y lo despliega en la ventana de comandos en forma de una matriz de 6 7 utilizando la funcin calendar: o )) calendar(9/21/01) %despliega calendario Sep 2001 S M Tu W Th F S 0 0 0 0 0 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 30 0 0 0 0 0 0 )) S=calendar(2000,9) %retorna calendario como arreglo numrico e S = 0 3 10 17 24 0 )) size(S) ans = 6 7 47 0 4 11 18 25 0 0 5 12 19 26 0 0 6 13 20 27 0 0 7 14 21 28 0 1 8 15 22 29 0 2 9 16 23 30 0

5.4.

Funciones de temporizacin o

Las funciones tic y toc son utilizadas para temporizar una secuencia de operaciones de MATLAB. El comando tic inicializa un cronmetro; por su parte, toc para el cronmetro y despliega el tiempo o o transcurrido. )) tic;plot(rand(5));toc elapsed_time = 7.80000000000000 )) tic;plot(rand(5));toc elapsed_time = 0.55000000000000 Cabe notar, que la diferencia de tiempos transcurridos para comandos plot idnticos. En el segundo plot e fue signicativamente ms rpido debido a que MATLAB ya hab creado la ventana de Figura y compil las a a a o funciones que necesit en memoria. o La funcin cputime entrega el tiempo de CPU en segundos que MATLAB ha empleado desde que la o sesin actual inici. La funcin etime calcula el tiempo transcurrido entre dos vectores de tiempo en un o o o vector la de 6 elementos tal como regresan las funciones clock y datevec. Las funciones cputime y etime pueden ser utilizadas para calcular el tiempo que toma una operacin en ser completada. o )) t0=cputime;oido;cputime-t0 ans = 0.21999999999935 )) t1=clock;oido;etime(clock,t1) ans = 0.22000000000000

48

Cap tulo 6

Grcas con MATLAB a


MATLAB comprendera una gran gama de funciones para construir diferentes tipos de grcas. Es decir, a podemos generar grcas polares, de barras, impl a citas, ret culas triangular y contornos, 2-D y 3-D. MATLAB permite la colocacin de t o tulos, etiquetas a los ejes, cuadriculado a las grcas as como algunas instrucciones a para controlar las ventanas grcas. a
Funciones bsicas de gracacin a o axis bar cla clf close fplot ginput grid gtext hold loglog pause plot polar semilogx semilogy stairs text title xlabel ylabel Descripcin o Establece los ejes de las grcas. a Realiza grcas de barras. a Borra curvas gracadas y redibuja los ejes. Borra lo que haya en la ventana de grcos. a Cierra la ventana de gracacin. o Funcin de gracacin. o o Obtiene los puntos de la grca con un click de ratn. a o Cuadr cula. Coloca texto donde se haga un click de ratn. o Mantiene las grcas. a Establece una escala logar tmica en los ejes x y y de la grca. a Realiza una pausa entre grcas. a Gracacin 2-D de manera lineal. o Gracacin polar. o Establece una escala logar tmica en el eje x. Establece una escala logar tmica en el eje y. Grca de escaleras. a Coloca texto en la ventana grca. a Coloca t tulo en la grca. a Coloca etiqueta en el eje x. Coloca etiqueta en el eje y.

6.1.

Gracacin 2-D o

Si tenemos un conjunto de puntos de datos, (xi , yi ), i = 1, 2, 3, . . . , n. Es necesario manejar x y y en forma de arreglos la o columna del mismo tamao o dimensin. Estos datos pueden ser gracados con el n o comando plot. Ejemplo: Gracar la funcin seno amortiguada siguiente. o f (x) = sin(x)e0,4x 49 para 0 x 20

Escribiendo el archivo correspondiente llamado amortiguada.m:

%archivo amortiguada.m %vector fila 0<=x<=20 con 1000 puntos de resolucin o x=linspace(0,20,1000); %funcin o vector fila y o y=sin(x).*exp(-0.4.*x); %orden de graficacin de datos (xi,yi) o plot(x,y) %desplegado de ejes x e y xlabel(x) ylabel(y) %cuadrcula (opcional) grid Ejecutando este cdigo, obtenemos la siguiente grca. o a
0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2

10 x

12

14

16

18

20

Figura 6.1: Grca de la funcin seno amortiguada. a o De este ejemplo, denimos primero el vector la x debido a que denir a la funcin y que tambin es a o e un vector la del mismo tamao. El comando plot(x,y) recibe como parmetros los vectores x y y en ese n a orden. Los nombres de los ejes se despliegan mediante los comandos xlabel y y. Debido a que en MATLAB podemos gracar en 2-D, podemos gracar tambin un plano complejo. A e continuacin, tenemos el siguiente ejemplo. o Ejemplo: Gracar la identidad de Euler en el plano complejo dada por. z = cos(p) + i sin(p) donde z = eip

50

Archivo euler.m: %archivo euler.m %vector fila 0<=p<=8pi con 1000 puntos de resolucin o p=linspace(0,8*pi,500); %funcin o vector fila y o z=cos(p)+i*sin(p); %orden de graficacin de datos (xi,yi) o plot(real(z),imag(z)) %ajuste de ejes axis([-1.2 1.2 -1.2 1.2]) %desplegado de ejes x e y xlabel(Re(z)) ylabel(Im(z)) %cuadrcula (opcional) grid Escribiendo y corriendo este cdigo, tenemos lo siguiente: o
1.5

0.5

Im(z)

0.5

1.5 1.5

0.5

0 Re(z)

0.5

1.5

Figura 6.2: Grca de la identidad de Euler. a Gracacin con marcas: Cuando utilizamos el comando plot, ste genera por default una grca o e a conectando los puntos por medio de l neas. MATLAB dispone de cinco tipo de marcas o letras para indicar una grca. a 51

Tipo de marca Punto Ms a Asterisco C rculo Marca x

S mbolo . + * o x

Ejemplo: Gracar la funcin seno amortiguada anterior con *. o Escribiendo el archivo correspondiente llamado amortiguada2.m:

%archivo amortiguada.m %vector fila 0<=x<=20 con 80 puntos de resolucin o x=linspace(0,20,80); %funcin o vector fila y o y=sin(x).*exp(-0.4.*x); %orden de graficacin de datos (xi,yi) o plot(x,y,*) %desplegado de ejes x e y xlabel(x) ylabel(y) %cuadrcula (opcional) grid Ejecutando este cdigo, obtenemos la siguiente grca. Hay que notar que se utiliz para esta gracacin o a o o 80 puntos. Tipo de colores y l neas: Se dispone de cuatro tipos de l neas.
Tipo de l nea Continua Guiones Punteada Guiones y puntos S mbolo -: -.

El tipo de l nea por default es continuo. Si deseamos gracar un tipo de grca en particular, simplemente a especicamos la marca de l nea como tercer parmetro en el comando plot; por ejemplo: a plot(x,y,--) Tambin, disponemos de los siguientes colores: e
Color de l nea Rojo Amarillo Magenta Turquesa Verde Azul Blanco Negro S mbolo r y m c g b w k

52

0.6

0.5

0.4

0.3

0.2

0.1

0.1

0.2

10 x

12

14

16

18

20

Figura 6.3: Grca de la funcin seno amortiguada. a o

El s mbolo del color se especica tambin como tercer parmetro en el comando plot; por ejemplo: e a plot(x,y,g) Adems, es posible combinar marcas y colores: a plot(x,y,+g) Conversin de n meros a cadenas: En ocasiones, deseamos incluir en las grcas valores numricos o u a e en el texto. Para ello, podemos utilizar los comandos num2str y int2str, que signican nmero a cadena y u entero a cadena, respectivamente; por ejemplo, cad=num2str(pi) En esta l nea, denimos una variable de cadena de caracteres que contiene el valor de pi. Por su parte, int2str, un valor real se convierte en una cadena que contiene slo la parte entera del nmero; por ejemplo, o u con cad=int2str(pi) Denimos una variable de cadena de caracteres contiene slo la parte entera de pi. Una vez que el nmero o u se ha convertido en cadena, se puede incluir en los argumentos de las funciones title, xlabel e ylabel, o en text; por ejemplo, title([ Caja: , cad, cm]) Texto en la grca: Podemos escribir texto en una grca con los comandos text o getext. La primera a a orden requiere tres parmetros en su argumento, a saber: a text(x, y, cadena) Los dos primeros argumentos son x y y son los valores de las coordenadas absolutas del punto en el que comienza la cadena; el tercero es la cadena que se imprimir, misma que puede ser una variable de cadena a predenida o un texto encerrado en apstrofos. Por ejemplo: o text(2, 4, +++ material) 53

Esta orden signica que a partir del punto (2,4) exhibe en pantalla la cadena +++ material. Si es necesario determinar manualmente la ubicacin del texto, gtext(cadena) resulta de utilidad. o Cuando se ejecuta este comando, el programa espera hasta que se hace click con el ratn o se pulsa una tecla o con el apuntador del ratn dentro de la ventana grca, y el texto se escribir en el lugar sealado por el o a a n ratn o por el cursor. o Cabe aclarar, el comando text funciona tambin en ejes tridimensaionales, pero gtext slo lo hace en e o ejes bidimensionales. Color y tipo de letra: Podemos modicar el color y el tipo de la letra o fuente del texto en una grca. a Por ejemplo: text(0.3, 0.2, cadena, Fontsize, [18], Color, r) Esta orden imprimir cadena en rojo con una fuente de 18 puntos. Si deseamos cambiar el color por a omisin, escribir o amos: set(gcf, DefaultTextColor, yellow) Ejecutando esta orden, los textos en exhibirn en amarillo. El color del texto puede elegirse entre red a (rojo), yellow (amarillo), green (verde), cyan (turquesa), blue (azul) y magenta, los cuales se abrevian como r, y, g, c, b y m, respectivamente. Podemos modicar el color de otros textos de forma similar cuantas veces sea necesario. La disponibilidad de tamaos de fuentes var dependiendo de la edicin de MATLAB. n a o Tambin, podemos modicar el tipo de letra; por ejemplo, el manejo de s e mbolos griegos que podemos introducir tambin con text; ejemplo: e text(2, 0, abcdefg.., FontName, symbol) Exhibir . . . Los especicadores FontName y symbol de los argumentos convierten las letras a alafbticas a letras griegas. A continuacin mostramos la tabla de conversin de letras alfabticas a letras e o o e griegas y s mbolos.
a b c d e f g h i j k l m n o p

q r s t u v w x z D G S W X $ ?

El tamao de la fuente de los valores correspondientes a las marcas de escala de los ejes se puede modicar n con set; por ejemplo, set(gca, FontSize, [18]) Cambia la fuente del eje a 18 puntos. Si colocamos texto en un lugar incorrecto, no hay forma de borrarlo; la solucin a ese problema es redibujar toda la gura despus de corregir el guin. o e o Figura: Podemos abrir mltiples ventana de grcos con el comando figure. Si slo se utiliza una u a o ventana, no hay necesidad de utilizar este comando, pero si se requieren ms ventanas de grcos se pueden a a abrir con ella. Si se necesita reactivar una ventana grca previamente abierta, entonces utilizamos figure(n) a que reactivar la n-sima ventana, donde n es el nmero secuencial de gura que aparece en la parte superior a e u de la ventana de grcos. Tambin es posible modicar las propiedades de las guras. a e 54

6.2.
6.2.1.

Grcos m ltiples a u
Gracacin m ltiple con plot o u

En MATLAB podemos generar dos o ms grcas con una sola orden plot, eso lo podemos realizar a a escribiendo todos los conjuntos de coordenadas repetidamente en la orden plot. Ejemplo: Comparar dos voltajes de corriente alterna representados en forma sinusoidal en funcin del o tiempo y estn dados por la forma general: a V (t) = A sin(2f t + ) En donde: A es la amplitud o voltaje pico (volts). f frecuencia dada en (Hz). t tiempo. ngulo de fase (radianes). a Gracar los siguintes voltajes y compararlos:

V1 (t) = V2 (t) = Donde f = 60 Hz. Archivo voltajes.m:

120 sin(2f t) 120 cos(2f t)

(6.1) (6.2)

%archivo voltajes.m %vector tiempo t=linspace(0,0.018,500); %voltajes sinusoidales v1=120*sin(2*pi*60*t); v2=120*cos(2*pi*60*t); plot(t,v1,t,v2) xlabel(t) ylabel(V(t)) title(Voltajes de corriente alterna) grid

55

Voltajes de corriente alterna 150

100

50

V(t)

50

100

150

0.002

0.004

0.006

0.008 t

0.01

0.012

0.014

0.016

0.018

Figura 6.4: Grca de dos voltajes de corriente alterna. a

6.2.2.

Gracacin m ltiple con fplot o u

Otra forma de gracar funciones individuales es con fplot( nombref , [xmin, xmax]), donde nombre_f es el nombre de la funcin o del archivo M de funcin que se desea gracar y xmin y xmax son los l o o mites de la grca. El mximo y el m a a nimo del eje y ests determinado por el m a nimo y mximo reales de la funcin; a o sin embargo podemos ajustar los l mites de la grca con axis, que se explicar en breve. a a Ejemplo: Gracar la funcin seno, coseno y tangente. o Escribimos lo siguiente: )) fplot([tan(x),sin(x),cos(x)],2*pi*[-1 1 -1 1]) )) grid )) Teniendo en pantalla lo siguiente:

6.2.3.

Gracacin m ltiple con retencin o u o

En ocasiones, es necesario agregar nuevos grcos a uno ya existente, esto es levado a cabo por el comando a hold on. Cuando utilizamos hold on, MATLAB no remueve los ejes existentes cuando nuevas funciones plot son utilizadas. En lugar de esto, son agregados nuevos grcos a los ejes actuales, sin embargo, si nuevos a datos no se pueden ajustar dentro de los l mites de ejes actuales, los ejes son reescalados. Una vez ejecutado el comando hold on, la grca permanece en la pantalla incluso si se ejecuta otro a guin; por tanto, lo prudente es colocar la orden hold off despus de realizar el ultimo grco. o e a Ejemplo: Utilizar la orden hold para los voltajes de corriente alterna anteriormente descritos: 56

6 6 4 2 0 2 4 6

Figura 6.5: Grca de la funcin seno, coseno y tangente. a o

Archivo voltajes.m:

%archivo voltajes2.m %Utilizacion del comando hold %vector tiempo t=linspace(0,0.018,500); %voltajes sinusoidales v1=120*sin(2*pi*60*t); plot(t,v1); hold on v2=120*cos(2*pi*60*t); plot(t,v2,--r); hold off xlabel(t) ylabel(V_1(t) (-), V_2(t) (--)) title(Voltajes de corriente alterna) grid

6.3.

Subgrcas a

En MATLAB es posible sobre una misma ventana de gura gracar ms de un solo conjunto de ejes, a es decir un grupo de m n grcas. Esta accin es realizada por el comando subplot, cuya sintaxis es la a o siguiente: 57

Voltajes de corriente alterna 150

100

50
V1(t) (), V2(t) ()

50

100

150

0.002

0.004

0.006

0.008 t

0.01

0.012

0.014

0.016

0.018

Figura 6.6: Grca de dos voltajes de corriente alterna. a

subplot(m,n,j)

Donde m, n y j son enteros. Aqu el par m y n se reere a un arreglo m n grcas, y j es el nmero a u secuencial de la grca. Por ejemplo, si utilizamos subplot(3,2,1), trazaremos la primera grca del grupo a a 3 por 2 grcas. a Ejemplo: Dada una seal sinuisoidal de la forma: n

V (t) = A sin(2f t + )

Generar un conjunto de grcas en donde variamos los parmetros importantes de la seal que son; la a a n amplitud A, la frecuencia f y la fase . Proponer valores con el n de comparar dicho grupo de grcas. a Archivo sinusoidales.m: 58

clc clear all close all T=1; t=linspace(0,T+.5,8000); subplot(2,2,1) plot(t,1*sin(2*pi*1*t+0),b) title(A = 1, f = 1,FontSize, [9]) xlabel(t, FontSize, [9]) ylabel(g(t), FontSize, [9]) text(0.55,.45,q=0,FontSize, [9],FontName,symbol) grid subplot(2,2,2) plot(t,0.5*sin(2*pi*1*t+0),r) title(A = 0.5, f = 1, FontSize, [9]) xlabel(t, FontSize, [9]) ylabel(g(t), FontSize, [9]) text(0.55,.45,q=0, FontSize, [9],FontName,symbol) grid

subplot(2,2,3) plot(t,1*sin(2*pi*2*t+0),g) title(A = 1, f = 2, FontSize, [9]) xlabel(t, FontSize, [9]) ylabel(g(t), FontSize, [9]) text(0.55,.45,q=0, FontSize, [9],FontName,symbol) grid

subplot(2,2,4) plot(t,1*sin(2*pi*1*t+pi/4),m) title(A = 1, f = 1,FontSize, [9]) xlabel(t, FontSize, [9]) ylabel(g(t), FontSize, [9]) text(0.55,.45,q=p/4, FontSize, [9],FontName,symbol) grid

6.4.

Grcas logar a tmicas y polares

Las grcas logar a tmicas y semilogar tmicas pueden ser generadas utilizando los comandos loglog, semilogx y semilogy.
loglog(x, y) semilogx(x, y) semilogy(x, y) Genera la grca de log10 (x) contra log10 (y) a Genera la grca de log10 (x) contra los ejes lineales de y. a Genera la grca de log10 (y) contra los ejes lineales de x. a

Los logaritmos de nmeros negativos y del cero no existen, entonces los datos de los vectores a gracar u no los deben de contener. 59

A = 1, f = 1

A = 0.5, f = 1

0.5

=0

0.5
g(t)

=0

g(t)

0.5

0.5
t A = 1, f = 2

1.5

0.5

0.5
t A = 1, f = 1

1.5

0.5
g(t)

=0

0.5
g(t)

=/4

0.5

0.5

0.5
t

1.5

0.5
t

1.5

Figura 6.7: Grca de dos voltajes de corriente alterna. a

Ejemplo: En pruebas de laboratorio, se realizan estudios de respuesta del o humano con el n de do determinar el umbral de auditividad (por ejemplo, el nivel de sonido perceptible ms bajo) del o humano a do var con la frecuencia. Se recolectaron los siguientes datos, que a continuacin se muestran: a o 60

0.5

0.4

0.3

0.2

0.1

0.1

0.2

0.3

0.4

0.5 10

10

15

Figura 6.8: Esto es una prueba.

Frecuencia (Hz) Intensidad (dB) 20 76 30 66 40 59 50 54 60 49 70 46 80 43 90 40 100 38 200 22 300 14 400 9 500 6 600 3.5 700 2.5 800 1.4 900 0.7 1000 0 1500 -1 2000 -3 3000 -8 4000 -7 5000 -2 6000 2 7000 7 61 8000 9 9000 11 10000 12

Escribiendo el archivo correspondiente llamado oido.m:

%archivo oido.m %Frecuencias en Hz Hz=[20,30,40,50,60,70,80,90,100,200 ,300,400,500,600,700,800,900,1000,1500, 2000,3000,4000,5000,6000,7000,8000,9000,10000]; %Nivel de presin de sonido en el odo humano (dB) o nps=[76,66,59,54,49,46,43,40,38,22, 14,9,6,3.5,2.5,1.4,0.7,0,-1,-3,-8,-7, -2,2,7,9,11,12]; %Graficacin semilogartmica de respuesta vs frecuencia especificando o %crculos en los puntos en color rojo semilogx(Hz,nps,-or) xlabel(Frecuencia (Hz)) ylabel(Nivel de presin de sonido relativo (dB)) o title(Umbral del odo humano) grid

Umbral del odo humano 80

70

60

Nivel de presin de sonido relativo (dB)

50

40

30

20

10

10 1 10

10

10 Frecuencia (Hz)

10

Figura 6.9: Grca de respuesta del o humano. a do Ejecutando este cdigo; se observa en la grca que el o humano es ms sensible a tonos alrededor de o a do a los 3 Khz. Tambin podemos construir grcas de funciones en coordenadas polares por el comando polar. Con la e a siguiente sintaxis:
polar(, ) Donde y son vectores; est dado en radianes y es la magnitud a

62

Ejemplo: Un nmero complejo puede ser representado en forma polar en la forma z = rei . La nth u potencia de un nmero complejo ests dada por z n = rn ein . Si r = 1,2 y = 10 . Gracar la funcin |z n | u a o contra n para 0 n 36. Archivo polar1.m:

%archivo polar1.m r=1.2; %valor de magnitud theta=10*pi/180; %conversion a radianes %n*theta donde n=0 a 36, en incrementos de 10pi/180 radianes angle=0:theta:36*theta; magnitude=r.^(angle/theta); %orden de graficacin de datos (theta,rho) o polar(angle,magnitude) title(Grfica polar de un nmero complejo a u z=r^ne^{jn\theta}) %cuadrcula (opcional) grid

Grfica polar de un nmero complejo z=rnejn 90 120 600 800 60

150

400

30

200

180

210

330

240 270

300

Figura 6.10: Grca en forma polar de z = 1,2n ej10n . a

63

También podría gustarte