Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MATLAB
PARA PRINCIPIANTES
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.
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.
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.
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
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 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.
prompt
Start
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.
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
>>
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
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.
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
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.
z =
21
>>
>> P= pi
P =
3.1416
>> format long
>> P
P =
3.141592653589793
>> format rat
>> P
P =
355/113
>> format
>>
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
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 ( e1023 ) (1 f ) , si e = [1, 2046]
Representación especial, si e = 2047
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
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.
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.
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.
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.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]