Está en la página 1de 20

MATLAB para principiantes 1

MATLAB PARA PRINCIPIANTES


MATLAB para principiantes 2

Universidad Nacional Autónoma de México


Centro de Física Aplicada y Tecnología Avanzada
MATLAB para principiantes 3

MATLAB
PARA PRINCIPIANTES

Rafael Quintero Torres


Rafael Quintero Bermúdez
Centro de Física Aplicada y Tecnología Avanzada
Juriquilla Querétaro
Universidad Nacional Autónoma de México

Universidad Nacional Autónoma de México


MATLAB para principiantes 4

Matlab para principiantes


D.R. © 2012
Universidad Nacional Autónoma de México
Av. Universidad 3000
Ciudad Universitaria, Delegación Coyoacán,
04510, México ,D. F.

Centro de Física Aplicada y Tecnología Avanzada


Boulevard Juriquilla 3001
76230 Juriquilla, Querétaro

ISBN: 978-607-02-3578-8
Diseño de cubierta:
D.G. Anahit Indra Ortiz Molina
Edición a cargo de:
Jit Press, S.A. de C.V.
General Santana 253
Col. M. Carrera
07070 México, D.F.,
Tel. (55) 5794 5198

DERECHOS RESERVADOS
Queda prohibida la reproducción o transmisión total o parcial del texto o las
ilustraciones de la presente obra bajo cualesquiera formas, electrónicas o
mecánicas, incluyendo fotocopiado, almacenamiento en algún sistema de
recuperación de información, dispositivo de memoria digital o grabado sin el
consentimiento previo y por escrito del editor.

Impreso y hecho en México


Printed in México
MATLAB para principiantes 5

Emprendemos la redaccion de este texto como resultado de que el alfabetismo en


MATLAB en las universidades continúa siendo muy bajo y de que la necesidad de
emplear las buenas herramientas de cómputo matemático de manera más extendida esté
presente.

El material aquí contenido está pensado para estudiantes que desconocen MATLAB, pero
que les gustaría introducirse en él de manera autodidácta. También puede ser de utilidad
para estudiantes de computación y métodos numéricos ya que los ejemplos y el interés
principal es el control de las acciones de la máquina por medio de la sintaxis de
MATLAB.

Suponemos que existe un genuino interés o una necesidad en introducirse en esta


temática, que se tiene un conocimiento básico de álgebra y que se aceptan los retos con
singular alegría.
MATLAB para principiantes 6

Prólogo
En las primeras palabras del material se evidencia la intención: ayudar a que
herramientas como MATLAB sean empleadas por los estudiantes de
licenciatura. Que este libro bosqueje un camino por el cual se pueda migrar
de las calculadoras al cómputo científico; no se pretende que este material
acompañe a los lectores hasta el final del camino, sino sólo que encienda el
fuego de la curiosidad y que pueda guiar los primeros pasos y que permita
que esta exploración continúe mucho más de lo aquí planteado.

Una buena conclusión preliminar es que las opcines de ayuda incluidas en


MATLAB son una fuente muy valiosa para reproducir lo que ya sabemos
hacer con otras herramientas y aprender otras alternativas de resolver
problemas. Este material sólo trata de poner orden en los primeros pasos,
esperamos que muchos más sean dados a lo largo de los estudios de
licenciatura y deseablemente se conviertan en una herramienta indispensable
para el trabajo profesional. Si bien esperamos que este material pueda ser
cubierto de manera autocontenida, la experiencia de uno de nosotros (RQT)
nos obliga a advertir que la utilidad plena se dará como parte de un curso
formal.

Creemos que una de las virtudes de la formación universitaria es la


estructura que se desarrolla en los individuos al estar expuestos al orden de
las matemáticas, que también se puede obtener con las reglas de juegos y
con la programación. La sinergia de la disponibilidad de computadoras, de
buenas herramientas de programación y solución de problemas, podrían
conducir a una mejor formación universitaria.

Esperamos que disfruten su experiencia con MATLAB, y que esta sea el


principio de un camino lleno de satisfacciones y placer para su formación.

Agradecemos el tiempo, los comentarios y las correcciones de los revisores,


en particular a los académicos del CFATA, Dr. Miguel de Icaza Herrera y
Dr. José Luis Aragón Vera, al académico de la UAM-Azcapotzalco, Dr.
Ernesto Rodrigo Vázquez Cerón y a la física Rosa Elena López Escalera
Romano. De la misma manera, agradecemos las opiniones de los alumnos de
la Licenciatura en Tecnología de la UNAM, generaciones 2009 a 2011.
Todos sus comentarios disminuyeron los errores y enriquecieron el texto,
pero los que permanecen son sólo nuestra responsabilidad.
MATLAB para principiantes 7

Tabla de contenido
1 Introducción..................................................................................................................9
1.1 MATLAB por primera vez .................................................................................9
1.2 Uso elemental de MATLAB ............................................................................ 11
1.3 La ayuda en MATLAB .................................................................................... 13
1.4 Definición de variables..................................................................................... 14
1.5 Exhibición de resultados .................................................................................. 15
1.6 Representación de números en MATLAB...................................................... 15
1.7 Guardar el trabajo ............................................................................................. 19
1.8 Ejercicios........................................................................................................... 20
2 Arreglos y matrices................................................................................................... 21
2.1 Construcción de arreglos de números ............................................................. 22
2.2 Manipulación de los números en los arreglos................................................. 28
2.3 Operaciones con matrices ................................................................................ 31
2.4 Operaciones con arreglos ................................................................................. 36
2.5 Ejercicios........................................................................................................... 38
3 Programas (scripts) y funciones (functions)............................................................ 40
3.1 Programas (Scripts) .......................................................................................... 40
3.2 Funciones (Functions)...................................................................................... 41
3.3 Trabajo y mejora de programas (scripts) ........................................................ 43
3.4 Funciones de funciones .................................................................................... 45
3.5 Ejercicios........................................................................................................... 49
4 Control de flujo de programa ................................................................................... 50
4.1 Uso fundamental............................................................................................... 50
4.2 Ejemplo: Autómatas unidimensionales........................................................... 52
4.3 Ejemplo: Autómatas bidimensionales ............................................................. 54
4.4 Ejercicios........................................................................................................... 57
5 Métodos numéricos................................................................................................... 63
5.1 Mínimos cuadrados, modelo lineal.................................................................. 63
5.2 Promedio y desviación estándar ...................................................................... 68
5.3 Algoritmo simplex............................................................................................ 71
5.4 Método indirecto de solución de ecuaciones simultáneas ............................. 75
5.5 Raíces de polinomios (Método de Laguerre).................................................. 78
5.6 Runge Kutta ...................................................................................................... 81
5.7 Descomposición de LU .................................................................................... 86
5.8 Interpolación suave (splines) ........................................................................... 90
6 Gráficos ..................................................................................................................... 95
6.1 Dos dimensiones............................................................................................... 95
6.2 Tres dimensiones .............................................................................................. 98
6.3 Guardar imágenes ............................................................................................. 99
6.4 Ejercicios........................................................................................................... 99
7 Prácticas de buena programación........................................................................... 102
7.1 Elegir vectores en lugar de bucles. ................................................................ 102
7.2 Evitar que los arreglos crezcan mientras se corre el programa. .................. 105
7.3 Escritura de MEX-File cuando los bucles son inevitables........................... 105
7.4 Evitar variables que cambian de tamaño en gráficas activas ....................... 105
MATLAB para principiantes 8

7.5 Acceso a archivos ........................................................................................... 106


7.6 Otras consideraciones..................................................................................... 108
7.7 Ejercicios......................................................................................................... 108
8 GUI .......................................................................................................................... 110
8.1 Ejemplo de script para FFT ........................................................................... 110
8.2 Ejemplo de function para FFT ....................................................................... 111
8.3 Ejemplo de GUI para FFT ............................................................................. 112
8.4 Construcción del archivo ejecutable.............................................................. 115
8.5 Ejercicios......................................................................................................... 116
9 Conexión con C....................................................................................................... 119
9.1 MATLAB Coder ............................................................................................ 119
9.2 MATLAB Compiler ....................................................................................... 124
10 Simulink .............................................................................................................. 126
10.1 Simulink y solución de ecuaciones algebraicas............................................ 126
10.2 Simulink y solución de ecuaciones diferenciales ......................................... 128
10.3 Simulink y solución de sistemas de ecuaciones diferenciales ..................... 129
11 SimMechanics ..................................................................................................... 133
Apéndice A. control de accesorios de PC...................................................................... 137
A.1 Instrucciones para el control de un micrófono................................................... 137
A.2 Instrucciones para el control de una cámara ...................................................... 139
MATLAB para principiantes 9

1 Introducción
MATLAB es un software para computación en ingeniería y ciencias. Nos ofrece un
poderoso lenguaje de programación, una posibilidad de realizar y manipular gráficas con
facilidad, además de reunir conocimiento acumulado en estas áreas de manera
estructurada y útil.

MATLAB se centra en el cómputo y no en las matemáticas, así que las expresiones y la


manipulación simbólica no son su fuerte, a excepción de las empleadas con la
herramienta symbolic o con el programa MuPAD. Las soluciones son numéricas e
inexactas, asociadas a los artificios del redondeo. Esto puede verse desde dos puntos de
vista, como un problema, al evidenciar el riesgo de errores ocultos en los resultados y
como una ventaja, ya que permite el cálculo numérico con un conjunto de números
diferente al de los números reales.

Comparado con otros lenguajes de programación numéricos como C++ o FORTRAN,


MATLAB es mucho más fácil de usar y está integrado con una biblioteca formada de una
gran cantidad de información, módulos, programas, subrutinas, relacionadas con el
cómputo numérico.

La única comparación donde MATLAB queda en desventaja con respecto a C++ o


FORTRAN es en el rubro de velocidad de ejecución, pero puede ser menos drástica con
buenas prácticas de programación, como veremos aquí. MATLAB no es la herramienta
de elección para cómputo de alto desempeño (aunque probablemente sí lo sea en el futuro
cercano) pero es una plataforma inmejorable para proyectos desde elementales hasta
intermedios y en muchos casos para probar lo que en otros lenguajes sería código muy
elaborado o que requiere de demasiado tiempo de elaboración.

MATLAB permite obtener una respuesta numérica a una expresión algebraica, de manera
similar a una calculadora, también permite obtener una aproximación numérica a algunos
problemas donde la sustitución no es posible, por ejemplo, el valor de E en la expresión
E02  E  E tan E . Lo que consideramos como la solución enfrenta dos dificultades; 1)
que MATLAB entienda una cosa diferente de lo que estamos pensando, en virtud de la
falta de dominio de la herramienta y 2) que el procedimiento emprendido sea adecuado
para alcanzar la solución. Espero que este escrito ayude a aminorar el primer problema, el
segundo se logra con el dominio de los métodos numéricos y de la experiencia. No se
espera que MATLAB pueda resolver un problema que no se pueda resolver con papel,
lápiz y tiempo. En general se es más exitoso, si antes de expresar el problema en
MATLAB, se ha expresado en papel y lápiz.

1.1 MATLAB por primera vez


Al iniciar MATLAB aparece el escritorio, Multipaneled desktop, con diversas áreas de
trabajo, que se puede modificar al gusto de cada usuario, acción que no es necesaria en un
principio. La figura 1.1 ilustra las áreas de trabajo, Command Window (elipse punteada)
MATLAB para principiantes 10

donde se escriben los comandos, inmediatamente frente al prompt >> (rectángulo


punteado) y donde aparecen las respuestas numéricas.

prompt

Start

Figura 1.1 Multipaneled desktop en MATLAB.

MATLAB es un lenguaje de programación que interpreta las instrucciones línea por


línea, a diferencia de otros lenguajes de programación que compilan el programa total.
Esta es una afirmación correcta en parte, ya que como veremos existen las funciones que
no se interpretan o incluso programas completos en MATLAB que pueden ser
ejecutables. Esta parte se aclarará al ver MEX files y GUI en los capítulos 7 y 8.

Workspace (elipse continua) muestra las variables definidas e información al respecto; en


un principio está vacía, pero al definir variables o realizar operaciones se acumulan y se
pueden editar. Al hacer doble clic sobre la variable inicia un editor que permite su
visualización y edición, siempre que sea menor a 65 536 renglones o columnas. En esta
misma área se puede visualizar la carpeta en la que se está trabajando al seleccionar la
pestaña correspondiente a Current Directory, MATLAB solo ve el contenido de la
carpeta que está seleccionada. Para cambiar el directorio se emplea el acceso rápido
(circulo segmentado, arriba al centro).

Command History (rectángulo continuo) lista las acciones solicitadas en Command


Window, de la más reciente a la más antigua y se pueden pasar a la zona de trabajo
navegando por medio de las flecha en el teclado (arriba y abajo) o haciendo doble clic en
la línea histórica deseada.

Start (rectángulo segmentado) es el puerto de entrada a muchas de las funciones de


MATLAB, herramientas de trabajo, ayudas y más. Usualmente debe estar preparado para
pasar horas de sano entretenimiento en los ejemplos y guías de uso. Cuando se le ha
pedido a MATLAB que realice una actividad que toma tiempo, desaparece el prompt y a
la derecha de Start aparece la leyenda Busy, que indica la necesidad de tener paciencia. Si
MATLAB para principiantes 11

se desea cancelar el proceso se puede hacer presionando al mismo tiempo las teclas ctrl-c
restableciendo el prompt y aparece la leyenda Ready a la derecha de Start.

En cálculo numérico elemental, un camino trivialmente simplista es usar una calculadora


cuando la tarea es muy simple, después utilizar Excel si se requiere de gráficas más
elaboradas y finalmente C++ cuando se tienen en mente acciones no desarrollas por un
programa particular. El salto de una herramienta a la otra puede ser intimidante e incluso
limitante. Si quisiéramos que MATLAB estuviera presente en esta evolución, igualmente
puede ser una alternativa a cualquiera de las herramientas anteriores. Una de las
limitaciones para iniciar a usar MATLAB como calculadora (inicialmente y después el
cielo es el límite) es que no se parece a una. Superando esta diferencia, se puede
fácilmente superar las ventajas de Excel como hoja de cálculo y de ahí pasar a usar
MATLAB con más provecho.

1.2 Uso elemental de MATLAB


Si se escribe una expresión válida en el área de Command Window, la respuesta aparece
de manera inmediata.
>> 5*3 (presionar la tecla de cambio de línea, enter, )

ans =

15

>>
La multiplicación de dos números se realiza y el resultado se guarda en la variable ans.
El prompt indica que está listo para nuevas instrucciones.
>> 3^3

ans =

27

>>
La potencia es igualmente evidente, el resultado se escribe en la variable ans,
sustituyendo cualquier valor o contenido que tuviera anteriormente.
>> 1/0
Warning: Divide by zero.

ans =

Inf
>>
Aquí Inf es la manera de representar ∞, que indica un número más grande que
cualquiera que puede ser escrito y que en este caso resulto de intentar dividir el número
uno entre cero.
>> cos(pi/4)
MATLAB para principiantes 12

ans =

0.7071

>>
Aquí la función trigonométrica está en radianes, pi representa el símbolo , medida del
perímetro del círculo en función del diámetro. La misma función trigonométrica en
grados donde el círculo tiene 360 grados se escribe cosd.
>> exp(i*pi/4)

ans =

0.7071 + 0.7071i

>>
Aquí i (también puede ser 1i, “uno-i”, que evita confusiones con la variable i)
representa a la raíz cuadrada de menos uno  1 , unidad de los números imaginarios. i
puede ser también una variable, así que no está de más tener precauciones para no
cometer errores. En cuanto a la notación exp(x) es la representación de e x , donde e es
el número de Euler cuyo valor aproximadamente es 2.718281828.
>> 0/0
Warning: Divide by zero.

ans =

NaN

>>
Aquí NaN representa a un resultado indefinido, se formó de Not a Number, no es un
número y aquí surge de intentar dividir cero entre cero.
>> (3-exp(log(3)))/3

ans =

1.4803e-016
>>

Aquí la respuesta algebraica esperada es cero, pero en virtud de que la aritmética de


punto flotante realiza por aproximaciones los cálculos, en su lugar aparece un número
muy pequeño, 1.4803  10-16 (1.4803e-016=1.4803E-016); los cálculos en la
computadora producen errores, estos con la ventaja del punto flotante (notación
exponencial) son muy pequeños. eps representa el valor del error máximo aritmético
para el número uno en una máquina típica que describe los números en punto flotante con
64 bits y que es 2.2204  10-16; cualquier número mas pequeño que eps es indistinguible
del uno. Dicho de otra manera el siguiente número mayor que uno y distinguible de uno
en la máquina es 1+eps.
>> eps
MATLAB para principiantes 13

ans =

2.2204e-016

>>

Algunas
log(x) palabras reservadas
es logaritmo natural deenxMATLAB
log(x) es el logaritmo
log10(x) es el logaritmonatural
base de
10xde x
atan(x) eseselelángulo
log10(x) logaritmo base 10cuya
en radianes de x tangente es x
sinh(x) es el ángulo
atan(x) en radianes
seno hiperbólico decuya
x tangente es x
es el seno hiperbólico
sqrt(x) raíz cuadrada de x
sinh(x) de x
sqrt(x) es la raíz cuadrada de x

1.3 La ayuda en MATLAB


MATLAB contiene un enorme material que es imposible dominarlo todo y menos aún
recordarlo todo, por lo que es importante aprenda a aprender y recordar de manera
eficiente. No es por accidente que al iniciar el programa, la primera línea invite a explorar
el material de ayuda que contiene:

To get started, select MATLAB Help or Demos from the Help menu.

>>

El texto subrayado es una liga directa a la ayuda en MATLAB, que abre una ventana
como la mostrada en la figura 1.2.

En la figura 1.2 se ve la ventana de ayuda; en el panel izquierdo está el navegador, en el


que se puede explorar por contenido, por índice, hacer búsquedas o explorar las
demostraciones. Aquí se muestra el navegador por contenido (elipse continua), el libro de
MATLAB (elipse segmentada), las funciones por categoría (elipse punteada) y las
funciones matemáticas elementales. En el panel derecho se ve la lista de funciones
exponenciales, haga doble clic en cualquier nombre en azul para ver la ayuda preparada
en cuanto a su definición y uso.
MATLAB para principiantes 14

Figura 1.2 Ventana de ayuda de MATLAB.

Muchas veces no se recuerda o conoce el nombre de la función que hace lo que


buscamos, para esas ocasiones la búsqueda alfabética de funciones puede ser útil. Si
recordamos el nombre de la función pero no su uso, podemos emplear Command Window
y teclear help y el comando del que requiere ayuda, por ejemplo help log y aparece
en el Command Window la ayuda al respecto, usualmente simplificada.

1.4 Definición de variables


Se pueden almacenar las variables usadas en el cálculo de las expresiones
>> a=exp(1)

a =

2.7183

>>
Aquí a tiene el valor de la constante de Euler.

>> c=a*b
??? Undefined function or variable 'b'.

>>
Aquí intentamos guardar en la variable c el resultado de multiplicar el número de Euler
(a) por el contenido de b. Como no habíamos definido previamente el valor de b se nos
indica. El prompt regresa en espera de una instrucción válida. La multiplicación a*b
tiene la notación correcta, (a)(b) no es aceptable como multiplicación, como tampoco
MATLAB para principiantes 15

lo es ab ni a.b; estos dos últimos casos corresponden a otras variables, la variable ab y


la componente b del objeto a (a.b).

A continuación aparecen algunas convenciones útiles que hay que tener en cuenta: los
comentarios que ignora el intérprete de MATLAB, la asignación de caracteres
alfanuméricos a las variables y la continuación de comandos en varias líneas. Los
caracteres que hay después del símbolo de porcentaje (%) son comentarios y aparecen
en color verde en el editor de MATLAB además de que no son interpretados. En el libro
los comentarios aprarecen en tono gris.

>> % este es un comentario, no hay ejecución


>> x=a^2; % ; al final de la instrucción evita que aparezca el
resultado en Command Window
>> y='letreros';% los apostrofes (') definen los caracteres
alfanuméricos
>> z=1+2+3+...
4+5+6 % ... es una continuación de línea

z =

21

>>

1.5 Exhibición de resultados


Los resultados numéricos aparecen con cuatro decimales, pero se pueden exhibir con 15
decimales (format long), en forma fraccional aproximada (format rat) o en
formato hexadecimal (format hex). La palabra format sin argumento regresa a la
forma predeterminada.

>> P= pi
P =
3.1416
>> format long
>> P
P =
3.141592653589793
>> format rat
>> P
P =
355/113
>> format
>>

1.6 Representación de números en MATLAB


La representación de números en base decimal se basa en escribirlos como una suma de
potencias de 10. Por ejemplo, para el número 273.375
MATLAB para principiantes 16

273.375  2x10 2  7 x101  3x10 0  3x10 1  7 x10 2  5x10 3

Esta representación es tan común e intuitiva que no abundaremos en ella, pero la


representación de este mismo número en base binaria y hexadecimal es interesante de
recordar.

273.375 D  100010001.011B  1x 28  1x 2 4  1x 2 0  0 x 2 1  1x 2 2  1x 2 3
o
273.375 D  111.6 H  1x16 2  1x161  1x16 0  6 x16 1

Donde los subíndices D, B y H se refieren a decimal, binario y hexadecimal,


respectivamente. Binario y hexadecimal son intercambiados fácilmente si agrupamos los
binarios en 4 números, partiendo del punto. En este ejemplo: 0001 0001 0001.0110B, que
son 1 1 1.6H

Decimal Binario Hexadecimal


00 0000 0
01 0001 1
02 0010 2
03 0011 3
04 0100 4
05 0101 5
06 0110 6
07 0111 7
08 1000 8
09 1001 9
10 1010 a
11 1011 b
12 1100 c
13 1101 d
14 1110 e
15 1111 f

MATLAB tiene una representación de los números en notación binaria de 64 bits que
cumple la norma IEEE 754 y que es:

(1)s 2( 1022 ) ( f ) , si e = 0
(1) s 2 ( e1023 ) (1  f ) , si e = [1, 2046]
Representación especial, si e = 2047

donde s representa al signo del número y se representa con un bit 0 o 1.

e representa al exponente del número y se define con 11 bits que cubre del entero decimal
1 al 2046, en cuyo caso se llaman números normales. En caso de que e sea cero su
MATLAB para principiantes 17

representación se denomina número subnormal y en tal caso el término (1+f) se sustituye


sólo por f. En caso de que e sea 2047 se reserva para representaciones especiales tales
como NaN o inf.

f representa a la mantisa del número y está formada por 52 bits, lo que produce números
52
desde el número decimal 2 52 al número 2 n
; también puede ser cero y en tal caso el
n 1
número es una potencia de 2.

La siguiente tabla ilustra los números en MATLAB de acuerdo con la norma IEEE 754,
en particular los valores para s, e y f.

Nombre Decimal aproximado Hexadecimal s e f


-inf -------------------- fff 0000000000000 1 2047 0
-realmax= -1.797693134862316e+308 ffe fffffffffffff 1 2046 52
n
(-)(2^1023)(1+
2^-1+2^-2+…)
2
n 1
(-)(2^1023)(1) -8.988465674311580e+307 ffe 0000000000000 1 2046 0
-1=(-)(2^0)(1) -1 bff 0000000000000 1 1023 0
-realmin=(-)(2^- -2.225073858507201e-308 801 0000000000000 1 1 0
1022)(1)
0 0 000 0000000000000 0 0 0
eps(0)=(+) 4.940656458412465e-324 000 0000000000001 0 0 2 52
(2^-1022)(2^-52)
realmin=2^-1022 2.225073858507201e-308 001 0000000000000 0 1 0
realmin+ 2.225073858507202e-308 001 0000000000001 0 1 2 52
eps(realmin)
1=(+)(2^0)(1) 1 3ff 0000000000000 0 1023 0
3=(+)(2^1)(1+.5) 3 400 8000000000000 0 1024 2 1
pi 3.141592653589793 400 921fb54442d18 0 1024 0.57079…
(+)(2^1023)(1) 8.988465674311580e+307 7fe 0000000000000 0 2046 0
realmax= 1.797693134862316e+308 7fe fffffffffffff 0 2046 52
n
(+)(2^1023)(1+
2^-1+2^-2+…)
2
n 1
Inf=realmax+ --------------------- 7ff 0000000000000 0 2047 0
eps(realmax)
NaN --------------------- fff 8000000000000 1 2047 .5

Los números reales son necesarios para las operaciones aritméticas; y acceder a ellos
permite disponer de un continuo de números, que se pueden visualizar como cualquier
punto de la recta numérica, no así el conjunto de números que se puede representar en
MATLAB, que es diferente en dos aspectos fundamentales:

1. Existen vacíos entre los números; qué tan grande es este vacío depende del número en
cuestión.
2. No es posible representar de manera exacta a todos los números reales.

Por ejemplo los números reales entre 72057594037927932 y 72057594037927944 se


representan por el mismo número en MATLAB (4370000000000000H) =
MATLAB para principiantes 18

(+)2^(416^2+316+7-1023)(1+0), que sólo es correcto para el número


72057594037927936.

En el siguiente ejemplo, al que se puede regresar después de cubrir el capítulo 3, permite


obtener la representación binaria de cualquier número real en notación extendida, y se
basa en la división sucesiva de potencias de 2. Enseguida crea un vector para almacenar
las potencias y exhibe el número. La línea con la instrucción
(KKKL(a(a>=0)+1)=1;) indica que el vector KKKL en su posición x tomará el valor
1, donde x es el valor que tiene el vector a sumándole 1, sólo cuando a es mayor igual a
0. En las posiciones donde a<0 se deja el valor que KKKL ya tenía, en este caso cero.

% Representación binaria de un número


%
% Formato: [bina]=detobi(número, resolución)
%
% Ejemplo: A=detobi(73.02,20)
%
% Se busca el binario de 73.02 con una representación de 20
% bits
function [bina]=detobi(numero,representacion)
m=1;
while numero>2^-representacion;
a(m)=floor(log(numero)/log(2));
numero=numero-2^a(m);
m=m+1;
end
if max(a)>0
ndi1=max(a)+1;
else
ndi1=0;
end
if min(a)<0
ndi2=min(a);
else
ndi2=0;
end
KKKL=zeros(1,ndi1);KKKR=zeros(1,abs(ndi2));
KKKL(a(a>=0)+1)=1;KKKR(abs(a(a<0)))=1;
resss=[num2str(KKKL),'.',num2str(KKKR)]
format long
bina=sum(10.^a);

Un ejemplo vívido de la importancia del orden de las operaciones y de la representación


numérica en MATLAB se puede ver en siguiente ejemplo. Hallar los valores de n tales
que
MATLAB para principiantes 19

 n 1 
f (n )  1  n  1  0 1.1
 n 
El problema es que si desarrollamos el paréntesis, resulta que f(n) es cero para cualquier
valor de n. MATLAB, sin embargo, realiza las operaciones en el orden de su prioridad,
primero potencia, después multiplicación y división y finalmente suma y resta, (los
paréntesis tienen preferencia sobre el orden de prioridad). En este caso se sumará n+1
antes de dividir entre n, después se resta el uno, y todo se multiplica por n, y lo que
resulte se resta al uno. Como resultado, entonces, de este orden de operaciones y de la
representación numérica, f(n) no vale cero para toda n.

En MATLAB el código para ilustrar la función anterior es el siguiente, donde eps se


emplea para aumentar y normalizar la diferencia con el cero.

n=1:500;
f=(1-n.*((n+1)./n-1))./eps(n);
plot(n,f,'*')

Figura 1.3 Diferencia artificialmente introducida por MATLAB por el orden de las
operaciones, solo las n que son potencias de 2 dan cero para la función f(n).

1.7 Guardar el trabajo


Si se desea guardar las variables se procede por File-Save workspace as y se guarda con
el nombre deseado. Para guardar la historia de comandos se procede a seleccionarlos en
el panel de Command History y con el botón derecho del ratón se selecciona Create M-
File y aparece otra ventana con la historia de los comandos y ahí se puede guardar su
contenido en un archivo. Más adelante se verá cómo generar las figuras, las cuales se
pueden guardar en formatos muy diversos. *.fig es el formato nativo de MATLAB, es
modificable y es el más conveniente ya que guarda los valores que lo generaron. *.eps
es postscript y se pueden anexar a documentos Word y la calidad no cambia al cambiar el
tamaño. *.jpg es el más común pero la calidad es muy limitada y disminuye
rápidamente al cambiar de tamaño. Este comentario se basa en que las imágenes bitmap
(como las jpg) fundamentan su calidad en el tamaño del pixel. Las imágenes vectoriales
basan su calidad en fórmulas que describen los objetos así que se pueden ampliar o
reducir sin alterar la calidad.
MATLAB para principiantes 20

1.8 Ejercicios
1. Evalúe las siguientes expresiones en MATLAB.
e
e
a) A  e
 1
b) B  cos 1   
 3
  
c) C  log e  
 7
d) determine qué número del conjunto es primo {0,1,2,3,4,5,6,7,8,9,10,97,99}

Respuestas:
a) A=3.8143e+006
b) B=1.9106 [rad]
c) C=0.1718
d) [2, 3, 5, 7, 97]

También podría gustarte