Subido por victor hugo mallqui nalvarte

52 MATLAB para ingenieros Holly Moore

11111111111~111ll1
* 03200121514 *
Este texto de Holly Moore comienza con algebra basica y muestra c6mo
se utiliza MATLAB para resolver problemas de ingenieria en un amplio
ran go de disciplinas. Los ejemplos desarrollan los conceptos fundamenta­
les de qUlmlca y fisica, asr como de ingenieria. A 10 largo de toda la obra,
se utiliza de forma consistente una metodologia estandar para resolver
problemas.
MATLAB es un poderoso lenguaJe de programaci 6n que incluye los
conceptos comunes a la mayoria de los lenguajes de programaci6n . Pues­
to que se trata de un lenguaje con base en scripts, la cread6n de pro­
gramas y su depuraci6n en MATLAB con frecuenci a es mas facil que en
los lenguajes de programaci6n tradicionales, como c++. Esto hace que
MATLAB sea una valiosa herramienta para los cursos introductorios de
programaci6n.
las secciones que describen las tecnicas de MATLAB para resolver pro­
blemas mediante calculo y ecuaciones diferenciales se lncluyen en la parte
final de los capitulos.
En el texto se proponen numerosos ejercicios, y en cada capitulo se en­
cuentran ejemplos numerados mas "avanzados, para reforzar los concep­
tos que se estudian. Los ejercicios de practica brindan a los estudiantes la
oportunidad inmediata de usar sus nuevas habilidades; en el Apendice B
se dan las soluciones completas a estos ejercicios.
EI matenal se agrupa en tres secciones. La primera, "Introducci6n a las
herramientas basicas de MATLAB", es de inicio para el alumno y contiene
los primeros 6 capitulos"
la segunda seccion del texto, "Programaci6n en MATLAB", introduce
a los estudiantes a la programacion y consta de los capitulos 6 a 8.
los capitulos 9 a 13 de la tercera secci6n versan sobre los "Conceptos
avanzados de MATLAB".
Para mayor informaci6n visite la pagina:
www.pearsoneducaci6n.net/moore
I
ISBN 970 -26-1082-6
I
9 789702 610823
I
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Acerca de MATLAB
1.1
¿QUÉ ES MAlLAB?
MATLAB es una de las muchas sofisticadas herramientas de computación disponibles
en el comercio para resolver problemas de matemáticas, tales como Maple. Mathematica
y MathCad. A pesar de lo que afirman sus defensores, ninguna de ellas es "la mejor".
Todas tienen fortalezas y debilidades. Cada una permitirá efectuar cálculos matemáticos
básicos, pero difieren en el modo como
los cálculos simbólicos y procesos ma­
temáticos más complicados, como la manipulación de matrices. Por ejemplo, MATLAB
'
es superior en los cálculos que involucran matrices, mientras que Mapte lo supera en
los cálculos simbólicos. El nombre mismo de MATLAB es una abreviatura de Matrix
Laboratory, laboratorio matricial. En un nivel fundamental, se puede pensar que estos
programas son sofisticadas calculadoras con base en una computadora. Son capaces de
realizar las mismas funciones que una calculadora científica, y muchas más. Si usted
tiene una computadora en su escritorio, descubrirá que usará MATLAB en lugar de su
calculadora incluso para la más simple de sus aplicaciones matemáticas, por ejemplo para
el balance de su chequera. En muchas clases de ingeniería. la realización de cálculos con
un programa de computación matemático como MATLAB sustituye la programación
de computadoras más tradicional. Esto no significa que el lector no deba aprender un
lenguaje de alto nivel como C++ o FORTRAN, sino que los programas como MATLAB
se han convertido en una herrdlIlienta estándar para ingenieros y científicos.
Dado que MATLAB es tan fácil de usar, muchas tareas de programación se llevan
a cabo con él. Sin embargo, MATLAB no siempre es la mejor herramienta para usar en
una tarea de programación. El programa dest�ea en cálculos numéricos, especialmente
en los relacionados con matrices y gráficas. pero usted no querrá escribir un programa
de procesamiento de palabras en MATLAB. C++ y FORTRAN son programas de pro­
pósito general y serían los programas de elección para aplicaciones grandes como los
sistemas operativos o el software de diseño. (De hecho, MATLAB, que es un programa
grande de aplicación, se escribió originalmente en FORTRAN y después se rescribió en
C, precursor de C++.) Por lo general, los programas de alto nivel no ofrecen acceso fácil
a la graficación, que es una aplicación en la que destaca MATLAB. El área principal
de interferencia entre MATLAB y los programas de alto nivel es el "procesamiento de
números": programas que requieren cálculos repetitivos o el procesamiento de grandes
cantidades de datos. Tanto MATLAB como los programas de alto nivel son buenos en el
procesamiento de números. Por lo general, es más fácil escribir un programa que "pro-
2
Capítulo 1
Idea cI�ve:
es ópti.rn
Acerca de MAlLAB
MATLAB
para cálculos
matricial s.
http://jurgensoft.co.cc
cese números" en MATLAB, pero usualmente se ejecutará más rápido en C++ o FORTRAN. La
única excepción a esta regla son los cálculos que involucran matrices: puesto que MATLAB es
óptimo para matrices, si
un
problema se puede formular con una solución matricial, MATLAB
lo ejecuta sustancialmente más rápido que un programa similar en un lenguaje de alto nivel.
MATLAB está disponible en versiones tanto profesional como estudiantil. Es probable
que en el laboratorio de cómputo de su colegio o universidad esté instalada la versión profe­
sional, pero disfrutará tener la versión estudiantil en casa. MATLAB se actualiza de manera
regular; este texto se basa en MATLAB 7. Si utiliza MATLAB 6 podrá observar algunas di­
ferencias menores entre éste y MATLAB 7. En versiones anteriores a MATLAB 5.5 existen
diferencias sustanciales.
1.2
Idea clave: MATLAB
se actualiza regularmente.
EDICiÓN ESTUDIANTIL DE MAlLAB
Las ediciones profesional y estudiantil de MATLAB son muy similares. Es probable que los
estudiantes que comienzan no sean capaces de distinguir la diferencia. Las ediciones estudian­
tiles están disponibles para los sistemas operativos Mícrosoft Windows, Mac OSX y Linux, y
se pueden adquirir en las librerías escolares o en línea a través de T he MathWorks, en www.
mathworks.com.
MathWorks empaca su software en grupos llamados.entregas (releases), y MATLAB 7
se agrupa, junto con otros productos, como Simulink 6.1, en la entrega 14. El número de en­
trega es el mismo para ambas ediciones, estudiantil y profesional. La entrega 14 de la edición
estudiantil incluye las siguientes característica�:
•
MATLAB 7 completo.
•
Simulink 6.1, con la capacidad de construir modelos de hasta 1000 bloques (la versión
profesional permite un número ilimitado de bloques).
•
Grandes porciones de Symbolic Math Toolbox.
•
Manuales de software tanto para MATLAB 7 como para Simulink.
•
Un CD que contiene la documentación electrónica completa.
•
Una licencia de usuario único, que en el caso de los estudiantes se limita al empleo en el
salón de clase (la licencia de la versión profesional es tanto individual como grupal).
Cajas de herramientas distintas a la Symbolic Math Toolbox se pueden adquirir por separado.
La diferencia más grande que observará entre las ediciones profesional y estudiantil es
el incitador de comando (prompt), que es
»
en la versión profesional, y es
EDU»
en la versión estudiantil.
1.3
¿CÓMO SE USA MATLAB EN LA INDUSTRIA?
La habilidad para usar herramientas tales como MATLAB se convirtió rápidamente en un
requisito para muchos puestos de ingeniería. En una reciente búsqueda de empleo en Monster.
com se encontró el siguiente anuncio:
... se busca un ingeniero de sistema de pruebas con experiencia en aviónica... Sus
responsabilidades incluyen modificación de scripts de MATLAB, ejecución de
simulaciones en Simulink y el análisis de los datos del resultado. El candidato
DEBE estar familiarizado con MATLAB, Simulink y C++...
Este anuncio no es raro. La misma búsqueda arrojó 75 compañías diferentes que reque­
rían específicamente el manejo de MATLAB para los ingenieros que entraran al nivel de base.
Sección 1 .3 ¿Cómo se usa MATlAS en la industria?
http://jurgensoft.co.cc
3
MATLAB es particularmente popular para aplicaciones de ingeniería eléctrica, aunque se usa
Idea clave: MATLAB
muchísimo en todos los campos de la ingeniería y ciencias. Las secciones que siguen delinean
se usa ampliamente en
sólo algunas de las muchas aplieaciones actuales que utilizan MATLAB.
ingeniería.
1.3.1
Ingeniería eléctrica
MATLAB se utiliza mucho en ingeniería eléctrica para aplicaciones de procesamiento de seña­
les. Por ejemplo, en la figura 1.1 se presentan vanas imágenes creadas durante un programa de
investigación en la University of Utah para simular algoritmos de detección de colisiones que
usan las moscas domésticas (y adaptados en el laboratorio a sensores de silicio). La investiga­
ción dio como resultado el diseño y fabricación de un chip de computadora que detecta colisio­
nes inminentes. Esto tiene una aplicación potencial en el diseño de robots autónomos que usen
la visión para navegar y en particular en aplicaciones para la seguridad en automóviles.
1.3.2
Ingeniería biomédica
Por lo general, las imágenes médicas se guardan como archivos dicom (el estándar Digital Ima­
ging and Communications in Medicine: imágenes digitales y comunicaciones en medicina). Los
archivos dicom utilizan la extensión de archivo .dcm. La compañía MathWorks ofrece una caja
de herrainientas adicional, llamada caja de herramientas para imágcnes que puede leer esos ar­
chivos, lo que hace que sus datos estén disponibles para procesamiento en MATLAB. La caja de
herramientas para imágenes también incluye un amplio rango de funciones de las que muchas
son especialmente apropiadas para las imágenes médicas, Un conjunto limitado de datos MRI
ya convertidos a un formato compatible con MATLAB se incluye con el programa MATLAB
estándar, Este conjunto de datos le permite probar algunas de las funciones de generación de
imágenes disponibles tanto con la instalación estándar de MATLAB como con la caja de herra­
mientas para imágenes expandida, si la tiene instalada en su computadora. La figura 1.2 muestra
seis imágenes de secciones horizontales del cerebro con base en el conjunto de datos MRI.
Figura 1.1
Procesamiento de
imógenes con el uso de una
cómara con objetivo de ojo
de pescado para simular el
sistema visual del cerebro
de una mosca doméstica:
(Con permiso del Dr. Reid
Harrison, University of
Utah.)
Figura 1.2
Secciones horizontales
del cerebro, con base
en el archivo de datos
de muestra incluido con
MATLAB,
4
Capítulo 1
Acerco de MATLAB
http://jurgensoft.co.cc
Figura 1.3
Visualización tridimensional
de datos MRI.
El mismo conjunto de datos se puede usar para construir una imagen tridimensional,
como cualquiera de las que se muestran en la figura 1.3. En el tutorial help se dan instruccio­
nes detalladas acerca de cómo crear esas imágenes.
1.3.3
Dinámica de fluidos
Los cálculos que describen velocidades de fluidos (rapideces y direcciones) son importantes
en varios campos. En particular, a los ingenierós aeroespaciales les interesa el comportamien­
to de los gases, tanto afuera de una aeronave o vehículo espacial como dentro de las cámaras
de combustión. Visualizar el comportamiento tridimensional de los fluidos es difícil, pero
MATLAB ofrece cierto número de herramientas que lo hacen más sencillo. En la figura 1.4,
los resultados del cálculo de campo de flujo para un dispositivo de control del vector de empu­
je se representan como una gráfica de vectores de velocidad. El control del vector de empuje
es el proceso de cambiar la dirección en que apunta una tobera (y, por tanto, la dirección en que se
mueve un cohete) al operar un actuador (un dispositívo pistón-cilindro). El modelo en la figj.lra
Velocidades de flujo de una cámara de admisión a una tubería curva
2
1.5
0.5
Figura 1.4
Gráfica de vectores
de velocidad del
comportamiento de un gas
en un dispositivo de control
del vector de empuje.
o �--�����----�2
1
0.5
1.5
O
eje x
Sección
1.4 Resolución de problemas en ingeniería y ciencias S
http://jurgensoft.co.cc
representa un depósito de gas a alta presión (una cámara de admisión) que eventualmente se
alimenta al pistón y, por tanto, controla la longitud del actuador.
1.4
RESOLUCiÓN DE PROBLEMAS EN INGENIERíA Y CIENCIAS
En las disciplinas de ingeniería, ciencias y programación de computadoras, es importante
Idea clave: use
tener un enfoque consistente para resolver los problemas técnicos. El enfoque que se plantea
siempre una estrategia
a continuación es útil en cursos tan distintos como química, física, termodinámica y diseño de
sistemática de resolución
ingeniería. También se aplica a las ciencias sociales, como economía y sociología. Otros auto­
de problemas.
res quizá formulen sus esquemas de resolución de problemas de forma ligeramente diferente,
pero todos tienen el mismo formato básico:
•
•
Plantear el problema.
o
En esta etapa con frecuencia es útil hacer un dibujo.
o
Si no tiene una comprensión clara del problema, es improbable que pueda resolverlo.
Describir los valores de entrada (conocidos) y las salidas (incógnitas) que se requieren.
o
Tenga cuidado de incluir las unidades conforme describe los valores de entrada y salida.
o
Identifique las constantes que tal vez requiera en el cálculo, como la constante de los gases
El manejo descuidado de las unidades con frecuencia lleva a respuestas incorrectas.
ideales y la aceleración de la gravedad.
o
Si es apropiado, en un dibujo escriba los valores que haya identificado o agrúpelos en una
tabla.
•
Desarrollar un algoritmo para resolver el problema. En aplicaciones de cómputo, es fre­
cuente que esto se logre con una prueba de escritorio. Para ello necesitará.
•
o
Identificar cualesquiera ecuaciones que relacionen los valores conocidos con las incógnitas.
o
Trabajar con una versión simplificada del problema, a mano o con calculadora.
Resolver el problema. En este libro, esta etapa involucra la creación de una solución con
MATLAB.
•
Probar la solución.
o
¿Sus resultados tienen sentido físico?
o
¿Coinciden con los cálculos de la muestra?
o
¿La respuesta es la que se pedía en realidad?
o
Las gráficas con frecuencia son formas útiles de verificar que los cálculos son razonables.
Si utiliza en forma consistente un enfoque estructurado de resolución de problemas,
como el que se acaba de describir, descubrirá que los problemas tipo "narración" son mucho
más fáciles de resolver. El ejemplo
1.1
ilustra esta estrategia de resolución de problemas.
La conversión de la materia en energía
Albert Einstein (véase la figura
1.5)
veinte. Einstein nació en Alemania en
es con toda seguridad el físico más famoso del siglo
1879
y asistió a la escuela tanto en Alemania como en
Suiza. Mientras trabajaba en una oficina de patentes en B erna desarrolló su famosa teoría de la
relatividad. Acaso la ecuación física mejor conocida en la actualidad es su:
Esta ecuación sorprendentemente sencilla vincula los mundos antes separados de la materia y
la energía, y se puede utilizar para encontrar la cantidad de energía que se libera conforme la
materia se destruye en reacciones nucleares tanto naturales como inducidas por el hombre.
6
Capítulo 1
Acerca de MATLAB
http://jurgensoft.co.cc
Figura 1.5
Albert Einstein. (Cortesía de
la Biblioteca del Congreso,
LC -USZ62-60242.)
El Sol irradia
385 X
1024 J/s de energía, los cuales se generan mediante reacciones nucleares
que convierten la materia en energía. Utilice MATLAB y la ecuación de Einstein para deter­
minar cuánta materia se debe convertir en energía para producir esa cantidad de radiación en
un día.
1. Plantee el problema.
Encontrar la cantidad de materia que se necesita para producir la cantidad de energía
que irradia el Sol cada día
2. Describa la entrada y la salida.
Entrada
E
Energía
=
385 X
1024 J/s, que se debe convertir en la energía total
irradiada durante un día
Rapidez de la luz
e =
3. 0 X 108 mis
Salida
Masa
3.
m
en kg
Desarrolle una prueba de escritorio.
La energía irradiada en un día es
385 X
10
La ecuación E
J
2e
X
s
2
= mc
s
horas
hora
día
3600 -- X 24 -- X
se debe resolver para
m =
m =
=
E/c
m
1 día
( 3.0
3l
10 J
2
8
X 10 mls )
3.7 X 10
3.33 X
1
103 J
y sustituir los valores de E y c. Se tiene
2
3.33 X
=
14
J
_
_
2 2
m /s
Sección 1.4
Resolución de problemas en ingeniería y ciencias
http://jurgensoft.co.cc
A partir de los criterios de salida se puede ver que se desea la masa en kg, así que, ¿qué
fue lo que estuvo mal? Se necesita hacer una conversión de unidades adicional:
4. Desarrolle una solución con MATLAB.
Claramente, en este punto de su estudio de M ATLAB no ha aprendido cómo crear có­
digo MATLAB. Sin embargo, debe ser capaz de ver, a partir de la siguiente muestra de
código, que la sintaxis de MATLAB es similar a la sintaxis que se utiliza en la mayoría
de las calculadoras científicas algebraicas. Los comandos de MATLAB se introducen
en el prompt
(»),
y los resultados se reportan en la línea siguiente. El código es:
E=385e24
E =
3.8500e+026
»
E=P'3600*24
E =
3. 3264e+031
»
c=3e8
e =
300000000
»
m=E/cA2
m
3.6960e+014
»
De aquí en adelante no se mostrará el prompt cuando se describan interacciones en la
ventana de comandos.
5. Pruebe la solución.
La solución MATLAB coincide con el cálculo hecho a mano, ¿pero tienen sentido los
números? Cualquier cosa multiplicada por 1014 es un número realmente grande. Sin
embargo, considere que la masa del Sol es 2 X 1030 kg. Se podría calcular cuánto tiem­
po tomárá consumir por completo la masa del Sol a una tasa de 3.7 X 1014 kg/día. Se
tiene:
tiempo
.
tIempo
=
( masa del Sol ) / ( tasa de consumo)
2 X 1030 kg
=
3.7 X 1014 kg/día
X
año
365 días
l.5 X 1013 años
¡Esto es 15 billones de años! En lo que le resta de vida, no necesitará preocuparse de
que el Sol se quede sin materia que pueda convertir en energía.
7
http://jurgensoft.co.cc
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
http://jurgensoft.co.cc
Alllbiente MATLAB
b"le t I�O�
' , C,':"
j'>' "" ' > ;
•
i�JlIesflIlJés de l�eSla't:�fÚlOF
serác�de¡
�� �
iniciar,elp
d
lAa
y resolverpfQb�$impfes
��
�'
la vel1ta
�,�{)
n
comprénder gt:�:(fe: ,'"
en
•
matrices'
identif,¡i<lI;Y
,
� ��.'
ventdnas·de
'
- definir yu
- nornbrC1"
• enféfld�r;erot
)".�f���X
.rJ& ·� .•..
opertÍción���,�,M$.�·'·
•
coro
•
exprespFtiúíli�t.§:áij;
_
enfre¿61é"
de arrégfdiciJKlfí1éibléSéIl
MATLAIL' . .
�, -
>
'
-
- -
d���HQfrlnt�JÍ
notación
cienfífka.·
"
:,,,;,'
aiusfar�r�
seuseititlíl' ,
.' ,'"
nÚl1:lefQs,enldvenftlnti&
' "
•
•
coin�n��..�".;�.;}.... <,;
glfQr9af�L:'((l14deJ�
,.
varia*quf,l'�·#seIJ,n.
ul'lpsesiqn.deJ\4ATtABf
g�o�clar;\Joo;serie� '
comandoseri.umQI'&ivO""llh
2.1
INICIO
Usar MATLAB por primera vez es fácil; dominarlo puede tomar años. En este capí­
tulo se introducirá al lector al ambiente de MATLAB y se le mostrará cómo efectuar
cálculos matemáticos básicos. Después de leer este capítulo, será capaz de empezar a
usar MATLAB para hacer sus tareas o en el trabajo. Por supuesto, conforme éomplete
el resto de los capítulos podrá hacer más cosas.
Dado que el procedimiento para instalar MATLAB depende de su sistema
operativo y del ambiente de la computadora, se supondrá que el lector ya instaló
MATLAB en su computadora o que trabaja en un laboratorio de computación donde
ya se instaló MATLAB. Para iniciar MATLAB, ya sea en el ambiente Windows o en
el de Apple, haga clic en el icono del escritorio, o use el menú inicio para encontrar el
programa. En el ambiente UNIX, escriba Matlab en el shell prompt (línea de co­
mandos). No importa cómo lo inicie, una vez abierto MATLAB debe ver el prompt
(incitador) de MATLAB (» o EDU» ), que le indica que MATLAB está listo para
que ingrese un comando. Cuando termine su sesión con MATLAB, puede salir del
programa al escribir quit o exit en el prompt de MATLAB. MATLAB también utiliza
la barra de menú estándar de Windows, de modo que puede salir del programa si elige
EXIT MATLAB en el menú File (Archivo) o al seleccionar el icono de cerrar (x) en
la esquina superior derecha de la pantalla. En la figura 2.1 se muestra por defecto la
pantalla de MATLAB, la cual se abre siempre que inicia el programa.
Para comenzar a usar MATLAB, sólo necesita prestar atención a la ventana
de comandos (a la derecha de la pantalla). En ella puede realizar cálculos en forma
similar a como lo hace en una calculadora científica. lncluso, la mayoría de la sin­
taxis es la misma. Por ejemplo, para calcular el valor de 5 al cuadrado, se escribe el
comando
5A2
Se desplegará la salida siguiente:
ans
25
10
Capítulo 2
Figura
Ambiente MATLAB
http://jurgensoft.co.cc
2.1
Ventana de apertura
de MATLAB. El ambiente de
MATLAB consta de algunas
ventanas, cuatro de las
cuales se abren en la vista
por defecto. Otras se abren
conforme se necesiten
durante una sesión de
MATLAB.
-'\
Historia de
comandos
o bien, para encontrar el valor de cos(1T), escriba
cos (pi )
que da como resultado la salida
ans =
-1
'dea clave: MATLAB
usa las reglas algebraicas
estándar para el orden de
operación.
MATLAB usa las reglas algebraicas estándar para ordenar operaciones, lo que se vuelve importante cuando encadena cálculos. Estas
se estudian en la sección 2.3.2.
S u g erencia
Es posible que piense que algunos de los ejemplos son demasiado sencillos como
para escribirlos usted mismo, que es suficiente con leer el material. Sin embargo,
¡recordará mejor el material si lo lee y lo escribe!
Antes de continuar, intente resolver el ejercicio de práctica 2.1.
'Eiercicio de práctica
2.1
Escriba las siguientes expresiones en el prompt de comando de MATLAB y observe
los resultados:
1. 5+2
2 . 5*2
3. 5/2
http://jurgensoft.co.cc
Sección 2.2 Ventanas de MATLAB 11
4.3+2*(4+3)
5. 2.54*8/2.6
6. 6.3 - 2.1045
7 . 36
. 1\2
8. 1 +2/''2
.
9. sqrt(5)
10.
�
cos(pi)
Sugerencia
Es posible que encuentre flUstrante descubrir que, cuando comete un error, no
se puede volver a escribir el comando después de haberlo ejecutado. Esto ocurre
porque la ventana de comandos crea una lista de todos los comandos que ingresó.
No se puede "desejecutar" o "descrear" un comando. Lo que puede hacer es
introducir el comando en forma correcta y luego ejecutar esta nueva versión.
MATLAB le ofrece varias maneras de facilitar lo anterior. Una de ellas es usar las
teclas de flecha, que, por lo general, se encuentran en el lado derecho del teclado.
La tecla hacia arriba,
t le permite desplazarse a trav;és de la lista de comandos
ejecutados. Una vez que encuentre el comando apropiado, puede editarlo y
luego ejecutar la versión nueva. Esto ahorra tiempo en verdad. Sin embargo,
también siempre es posible sólo volver a escribir el comando.
2.2 VENTANAS DE MATLAB
.\1ATLAB utiliza varias ventanas de despliegue. La vista por defecto, que se presenta en la
figura 2 . 1 , incluye una gran command window (ventana de comandos) a la derecha y, apila­
das a la izquierda. se encuentran las ventanas current directory (directorio actual), workspace
(área de trabajo) y command history (historia de comandos). Observe las pestañas abajo a
la izquierda de las ventanas; dichas pestañas le permiten acceder a las ventanas ocultas. Las
versiones antiguas de MATLAB también incluían una ventana de launch pad (lanzamiento),
que se reemplazó con el botón de start (inicio) en la esquina inferior izquierda. Además, cuando
sea necesario, se abrirán automáticamente ventanas de document (documento), graphics (grá­
ficas) y editing (edición). Cada una de esas ventanas se describe en las secciones que siguen.
MATLAB también tiene construida internamente una función de ayuda, a la que se puede
acceder desde la barra de menú, como se muestra en la figura 2.1. Para personalizar el escri­
torio, puede redimensionar cualquiera de estas ventanas, cerrar las que no use con el icono de
cerrar (la x en la esquina superior derecha de cada ventana), o "desacoplarlas" con el icono
t! que también se localiza en la esquina superior derecha de cada ventana .
undock (desacoplar),
2.2.1 Ventana de comandos (command window)
La ventana de comandos se localiza en el lado derecho de la vista por defecto de la pantalla
de MATLAB, como se muestra en la figura 2. 1 . La ventana de comandos ofrece un ambiente
similar a una memoria de trabajo auxiliar (scratch pad). El empleo de la ventana de comandos
Idea clave: la ventana
le permite guardar los valores que calcule, mas no los comandos que usó para generarlos. Si
de comandos es similar a
un archivo-m (m-file). Los archivos-m se describen en la sección 2.4.2. Ambos enfoques
auxiliar.
desea guardar la secuencia de comandos, necesitará emplear la ventana de edición para crear
son valiosos; sin embargo, primero se enfatizará el uso de la ventana de comandos, antes de
introducir los archivos-m.
una memoria de trabajo
12
Capítulo 2 Ambiente MATLAB
http://jurgensoft.co.cc
2.2.2 Historia de comandos (command history)
Idea clave: la historia
La ventana de historia
de eomandos registra
comandos. Cuando sale de MATLAB, o cuando escribe el comando ele, la ventana de co­
de comandos
registra los comandos que se escriben en la ventana de
todos los comandos
mandos se limpia (clear). Sin embargo, la ventana de historia de comandos conserva una lista
que se escribieron en la
de todos sus comandos. También puede limpiar la historia de comandos con el menú edit. Si
ventana de eomandos.
trabaja en una computadora pública, entonces, como medida de seguridad, las opciones de
MATLAB por defecto se pueden establecer de modo que limpie la historia cuando salga del
programa. Si introdujo los comandos de muestra anteriores, observará que se repiten en la
ventana de historia de comandos. Esta ventana es valiosa por varias razones, dos de las cuales
son: porque permite revisar sesiones anteriores de MATLAB y porque se puede usar para
transferir comandos a la ventana de comandos. Por ejemplo, primero limpie el contenido de la
ventana de comandos al escribir
ele
Esta acción limpia la ventana de comandos, pero deja intactos los datos de la ventana
de historia de comandos. Usted puede transferir cualquier comando desde la ventana de his­
toria de comandos hacia la ventana de comandos al hacer dOble
sJjc (lo que también ejecuta
el comando) o al hacer dic y arrastrar la línea de código a 19A'éntana de comandos. Intente
..
hacer doble clíc
eos(pi)
en la ventana de historia de comandos. Debe regresar
ans
=
-1
Ahora haga elic y arrastre
SA2
desde la ventana de historia de comando hacia la ventana de comandos. El comando no se
ejecutará hasta que oprima enter, y entonces obtendrá el resultado:
ans
=
25
Conforme ejecute cálculos cada vez más complicados en la ventana de comandos, en­
contrará que la ventana de historia de comandos es útil.
2.2.3 Ventana del área de trabajo (workspace)
Idea clave: la
La ventana del
ventana workspace
forme ejecuta comandos en la ventana de comandos. Si ha hecho los ejemplos, la ventana del
área de trabajo
le mantiene informado de las
variables que usted define con­
(área de trabajo) lista la
área de trabajo debe mostrar sólo una variable, ans, y decir que tiene un valor de 25 y que es
información que describe
un arreglo doble:
todas las variables que
crea el programa.
Nmne
ans
Valne
25
double array
Haga que la ventana del área de trabajo diga algo más acerca de esta variable al hacer
clic con el botón derecho sobre la barra con las etiquetas de las columnas. (Esta característica
es nueva en MATLAB 7 Y no funcionará con una versión anterior.) Revise síze (tamaño) y
bytes, además de name (nombre), value (valor) y elass (clase). La ventana del área de trabajo
ahora debe mostrar la siguiente información:
http://jurgensoft.co.cc
Bytes
1
25
Ea ans
Xl
8
Sección 2.2
Class
double
array
El símbolo en fonna de retícula indica que la variable aus es un arreglo. El tamaño, 1 X 1,
dice que es un solo valor (una fila por una columna) y. por tanto, es un escalar. El arreglo usa
8 bytes de memoria. MATLAB está escrito en lenguaje e, y la designación de clase dice que,
en lenguaje e, aus es un arreglo de punto flotante y doble precisión. En este momento, basta
,aber que la variable aus puede almacenar un número punto flotante (un número con punto
decimal ). En realidad, MATLAB considera a todo número que se ingrese como si fuera
punto flotante, se escriban decimales o no.
Es posible definir variables adicionales en la ventana de comandos, y se listarán en la
ventana del área de trabajo. Por ejemplo, al escribir
A
=
A
=
5
regresa
5
Observe que la variable A se agregó a la ventana del área de trabajo, que lista las va­
riables en orden alfabético. Las variables que comienzan con letras mayúsculas se listan en
primer lugar, seguidas por las variables que comienzan con letras minúsculas.
SBe
Value
Name
A
ans
Bytes
1x 1
Xl
5
25
1
8
8
Class
double
double
array
array
En la sección 2.3.2 se estudiará en detalle cómo introducir matrices a MATLAB . Por
ahora, usted puede ingresar una matriz uni dimensional sencilla al escribir
B
=
/
.
[1 , 2 , 3 , 4]
Este comando regresa
B
=
1
2
3
4
Las comas son opcionales; se obtendría el mismo resultado con
B
=
[ 1
2
3
4]
B
1
z
3
4
Observe que la variable B se agregó a l a ventana del área de trabajo y que su tamaño es
un arreglo 1 X 4:
.��.
EEA
B
aos
....'Value
Size
1x 1
5
[1234] lX4
lxl
25
Bytes
8
32
8
Ventanos de MATLAB 13
Class
double array
double array
double
array
Idea clave: el tipo
de datos por defecto
es de números punto
flotante y doble precisión
almacenados en una
matriz.
14
Capítulo 2
http://jurgensoft.co.cc
Ambiente MATLAB
En forma similar se definen matriccs bidimensionales. Se emplea punto y coma para
separar las filas. Por ejemplo:
e
=
[ 1 2 3 4; 10 20 30 40; 5 10 15 20]
regresa
e
1
10
5
2
20
10
Nante
Value
mA
mB
EBc
5
[1234]
<3 x 4 double>
25
ans
Observe que
4
40
20
3
30
15
Size
Bytes
1x 1
lX4
3x4
lxl
8
32
96
8
Class
double array
double array
double array
double array
e aparcce en la ventana del área de trabajo como una matriz de 3
X 4. Para
conservar espacio, no se mencionan los valorcs. almacenados en la matriz.
Se pueden recuperar los valorcs para cualquier variable al escribir en el nombre de la
variable. Por ejemplo, al ingresar
A
se obtiene
A
5
Aunque las únicas variables que se introdujeron son matrices que contienen números,
son posibles otros tipos de variables.
J¡ujo el comando ele. Este comando limpia
Al describir la ventana de comandos se intr
�
la ventana de comandos y deja una página en bla co para que usted trabaje en ella. Sin em­
bargo, no borra de la memoria las variables reales que creó. El comando clear (limpiar) borra
todas la variables guardadas. La acción del comando elear se refleja en la ventana del área de
trabajo. lnténtelo al escribir
clear
en la ventana de comandos. La ventana del área de trabajo ahora está vacía:
Name
Value
Size
Bytes
Class
Si usted suprime la ventana del área de trabajo (al cerrarla o desde el menú file o con el
icono de cierre en la esquina superior derecha dc la ventana), todavía podrá descubrir cuáles
variables se definieron mediante el comando
whos
whos:
http://jurgensoft.co.cc
Si se hubiese ejecutado antes de ingresar el comando
Name
e
8ize
1x1
1x4
3x4
aos
W
A
B
Bytes
8
32
96
8
Sección 2.2
Ventanas de MAlLAB
1S
clear, wbos habría regresado
Class
double array
double array
doubJe array
doubJe array
Grand total is 18 eJemeots using 144 bytes
2.2.4 Ventana de directorio actual (current directory)
La ventana de directorio actual lista todos los archivos en una carpeta de la computadora
llamada directorio actual. Cuando MATLAB ingresa a archivos o guarda información, usa el
directorio actual a menos que se diga algo diferente. La ubicación por defecto del directorio
actual varía con su versión del software y con cómo se instaló. Sin embargo, el directorio ac­
tual se cita en la parte superior de la ventana principaL El directorio aetual se puede cambiar
al seleccionar otro directorio de la lista desplegable que se ubica junto a la lista de directorio
o al navegar entre los archivos de su computadora. La navegación se lleva a cabo con el botón
browse, que se ubica junto a la lista desplegable. (Véase la figura 2.2.)
2.2.5 Ventana de documento (document window)
Hacer doble clic sobre cualquier variable mencionada en la ventana del área de trabajo lanza
automáticamente una ventana de documento que contiene el array editor (editor de arreglos).
Los valores que se almacenan en la variable se despliegan en un formato de hoja de cálcu­
lo. Puede cambiar los valores en el editor de arreglos o puede agregar nuevos valores. Por
ejemplo, si todavía no ingresa la matriz bidimensional C, ingrese el siguiente comando en la
ventana de comandos:
e
=
[
1
2 3 4; 10 20 30 40; 5 10 15 20];
S
[1, 2, 3, 4]
1
2
[ 1
1
1
10
5
5
3
2
2
[ 1 2 3
2
20
10
4J
3
3
<11;
"
4
10 20 30 40; 5 10 15 20]
3
30
15
4
40
20
Figura 2.2
La ventana de
directorio aetua/lista
todos los archivos en el
directorio actual. Puede
cambiar el directorio
actual o en el menú
desplegable o con el
botón browse.
16
Capítulo 2 Ambiente MAllA B
http://jurgensoft.co.cc
Icono de
variable
nueva
Figura 2.3
La ventana de
documentos despliega
el editor de arreglos.
'dea clave: un punto y
coma suprime la salida de
los comandos escritos en
la ventana de comandos.
Poner punto y coma al final del comando suprime la salida, de modo que no se repita en la
ventana de eomandos. Sin em bargo, abora e se debe citar en la ventana del área de trabajo.
Haga doble cHc en ella. Sobre la ventana de comandos se abrirá una ventana de documento,
como se muestra en la figura 2.3. Ahora puede agregar más valores a la matriz e o cambiar
los valores existentes.
también se puede usar en conjunto con la
La ventana de documento/editor de
ventana del área de trabajo para crear arreglos completamente nuevos. Corra su ratón lenta­
mente sobre los iconos en la barra de atajos en lo alto de la ventana del área de trabajo . Si
es paciente, deberá aparecer la función de cada icono. El icono de variable nueva se parece
a una página con un gran asterisco detrás suyo. Seleccione el icono de variable nueva y, en
la lista de variabl es, deberá aparecer una nueva variable llamada unnamed (sin nombrar). Puede
cambiar su nombre al hacer elic derecho y seleccionar rename (renombrar) del menú secun­
dario. Para agregar valores a esta variable nueva, haga doble c lic sobre ella y agregue sus datos
desde la ventana de editor de arreglo. El botón de variable nueva es una nueva característica de
MATLAB 7; si utiliza una versión anterior, no podrá crear variables de esta forma.
Cuando termine de crear variables nuevas, cierre el editor de arreglos al seleccionar el
icono de cerrar ventana en la esquina superior derecha de la ventana.
�
2.2.6 Ventana gráficas (graphics window)
La ventana de gráficas se lanza automáticamente cuando solicita una gráfica. Para demostrar
esta característica, primero cree un arreglo de valores x:
x
=
[ 1 2 3 45];
(Recuerde que el punto y coma suprime la salida de este comando; sin embargo, en la ventana
del área de trabaj o aparece una variable nueva, x.)
Ahora cree una lista de valores y:
y
=
[10 20 30 4050];
Para crear una gráfica, use el comando plot:
plot(x,y)
Sección
Resolución de problem as con
http://jurgensoft.co.cc
2.3
MATLAB
Figura 2.4
MATlAB hace fócil l a
creación
de gróficas.
L a ventana de gráficas s e abre automáticamente. (Véase l a figura 2.4.) Note que e n l a barra de
Idea clave: agregue
tareas aparece una nueva etiqueta de ventana al fondo de la pantalla de la ventana. Se titulará
siempre un título y
<Student Version> Figure
...
o simplemente
Figure 1, dependiendo de si usa la versión es­
tudiantil o profesional, respectivamente, del software. Cualesquiera gráficas adicionales que
cree sobrescribirán la figura 1 a menos que ordene específicamente a MATLAB que abra una
nueva ventana de gráficas.
MATLAB facilita la modificación de las gráficas al agregar títulos, etiquetas
neas múltiples, etc. ¡Los ingenieros y científicos
x
y y, li­
nunca presentan una gráfica sin etiquetas!
2.2.7 Ventana de edición (edit window)
File de la barra de menú, luego New y, finalmente,
M-file (File -+ New -+ M-file). Esta ventana le permite escribir y guardar una serie de coman­
dos sin ejeeutarlos. También puede abrir la ventana de edi:c:iún'1iJ escribir edit en el prompt de
La ventana de edición se abre al elegir
comando o al elegir el botón New File (arehivo nuevo) en la barra de herramientas (toolbar).
2.2.8 Botón de inicio
El botón de inicio se ubica en la esquina inferior izquierda de la ventana de MATLAB. Ofrece
un acceso alternativo a las diversas ventanas de MATLAB, así como a la función de ayuda,
productos de Internet y cajas de herramientas de MATLAB. Las cajas de herramientas propor­
cionan funcionalidad MATLAB adicional, para áreas de contenido específico. En particular, la
caja de herramientas simbólica es enormemente útil a científicos e ingenieros. El botón de inicio
es nuevo a MATLAB 7 Y sustituye la ventana de lanzamiento que se usaba en MATLAB 6.
2.3
RESOLUCiÓN DE PROBLEMAS CON MATLAB
El ambiente de ventana de comandos es una poderosa herramienta para resolver problemas de
ingeniería. Para usarla de manera efectiva, necesitará entender más acerca de cómo funciona
MATLAB.
etiquetas de ejes a las
gráficas.
17
18
Capítulo 2
Ambiente MATlAB
2.3.1
http://jurgensoft.co.cc
Uso de variables
Aunque es posible resolver muchos problemas al usar MATLAB como calculadora, usual­
mente es más conveniente dar nombres a los valores que utiliza. MATLAB usa las convencio­
nes de nomenclatura comunes a la mayoría de los programas de cómputo:
•
Todos los nombres deben comenzar con una letra. Los nombres pueden tener cualquier lon­
gitud, pero en MATLAB 7 sólo se usan los primeros 63 caracteres. (Use el comando name­
lengthmax para confirmar esto cuando instale MATLAB.) Aunque MATLAB le pennitirá
crear nombres de variable largos, la longitud excesiva crea una significativa oportunidad de
error. Un lineamiento común es usar letras minúsculas y números en los nombres de varia­
ble y usar letras mayúsculas para los nombres de constantes. Sin embargo, si una constante
tradicionalmente se expresa como una letra minúscula, siéntase en libertad de seguir dicha
convención. Por ejemplo, en los textos de física, la rapidez de la luz siempre es la letra e
minúscula . Los nombres deben ser lo suficientemente cortos como para recordarlos y que
sean descriptivos.
•
Los únicos caracteres permisibles son letras, números y el guión bajo. Con el comando
isvarname puede verificar si se permite el nombre de la variable. Como es estándar en los
lenguajes de computación, el número 1 significa que algo es verdadero y el número O signi­
fica falso. En consecuencia,
isvarname time
ans
1
indica que time es un nombre de variable legítimo, y
isvarname cool - beans
<ans =
o
dice que cool-beans no es un nombre de variable legítimo.
•
•
Los nombres son sensibles a mayúsculas/minúsculas, La variable x es diferente de la variable X.
MATLAB reserva una lista de palabras clave para uso del programa, que no se pueden
asignar como nombres de variable. El comando iskeyword hace que MATLAB elabore una
lista de tales nombres reservados:
iskeyword
ans
=
'break'
'case'
'catch'
'continue'
'else'
'elseif'
'end'
'for'
'function'
'global'
, if'
'otherwise'
'persistent'
'return'
'switch'
'try'
'while'
Sección
Resolución de problemas con
http://jurgensoft.co.cc
2.3
•
MATLAB le pennite reasignar nombres de función intemos como nombres de variable. Por
ejemplo, podría crear una nueva variable llamada sin con el comando
sin=4
que regresa
sin
=
4
Esto es claramente una práctica peligrosa, pues la función sin (es decir: seno) ya no está
disponible. Si intenta usar la función sobrescrita, obtendrá un enunciado de error ("índice
supera dimensiones de matriz"):
sin(3)
??? Index exceeds matrix dimensions.
Puede verificar si una variable es una función MATLAB interna al usar el comando
which:
which sin
sin is a variable.
Puede restablecer sin a una función al escribir
clear sin
Ahora, cuando pregunte
which.sin
la respuesta es
C:\MATLAB7\toolbox\matlab\elfun\sin.m
que menciona la ubicación de la función interna.
Ejercicio de práctica 2.2
¿Cuál de los siguientes nombres se penniten en MATLAB? Haga sus predicciones y
luego pruébelas con los comandos isvarname, iskeyword y which.
1 . test
2. Test
3. if
4. mí-libro
5. mí libro
�
o�íusoasisepennite?
6. Es esunnombremuylarg
7. lergrupo
8. grupo_uno
9. zzaAbc
10. z34wAwy?l2#
1 1 . sin
12. lag
MAllAB
19
20 Capítulo 2 Ambiente MATlAB
http://jurgensoft.co.cc
2.3.2 Matrices en MAllAB
Idea clave: la matriz
es el tipo de datos
principal en MATLAB
y puede retener
información numérica
así como otros tipos de
información.
El tipo de datos básico que se usa en MATLAB es la matriz. Un solo valor, llamado escalar,
se representa como una matriz 1 X 1. Una lista de valores, ordenados o en una columna o en
una fila, es una matriz unidimensional que se llama vector. Una tabla de valores se representa
como una matriz bidimensional. Aunque este capítulo se limitará a escalares, vectores y ma­
trices, MATLAB puede manejar an'eglos de orden superior.
En nomenclatura matemática, las matrices se representan como filas y columnas dentro
de corchetes:
vector: matriz
compuesta de una sola
fila o una sola columna
A
=
[5]
B
=
[2
5]
e
En este ejemplo, A es una matriz ] Xl, B es una matriz 1 X 2 Y e es una matriz 2 X 2. La
ventaja de usar representación matricial es que todos los grupos de información se pueden
representar con un solo nombre. La mayoría de personas se sienten más cómodas al asignar
un nombre a un solo valor, así que se comenzará por explicar cómo MATLAB maneja los
escalares y luego se avanzará a matrices más complicadas.
escalar: matriz de un
solo valor
Operaciones escalares
MATLAB maneja operaciones aritméticas entre dos escalares en forma muy parecida a como
lo hacen otros programas de cómputo e inclusó su calculadora. En la tabla 2.1 se muestra la
sintaxis para la suma, resta, multiplicación, división y exponenciación, El comando
se debe leer como "a a se le asigna un valor de 1 más 2", que cs la suma de dos cantidades
escalares, Las operaciones aritméticas entre dos variables escalares usa la misma sintaxis, Por
ejemplo, suponga que usted definió a en el enunciado anterior y que b tiene un valor de 5:
b
=
5
Entonces
regresa el siguiente resultado:
x
=
8
Tabla 2.1
Operaciones aritméticas
Suma
Resta
Multiplicación
División
Exponencioción
a+b
a b
axb
a+b
a-b
a* b
a/b
Secd6n 2.3
http://jurgensoft.co.cc
Resolud6n de problemas con MATlAB
21
En MATLAB, un solo signo igual
se llama operador asignación. El operador asignación
hace que el resultado de sus cálculos se almacenen en una ubicación de memoria de la compu­
tadora. En el ejemplo anterior, a x se le asigna un valor de 8. Si usted ingresa el nombre de
.-ariable
x
en MATLAB, obtiene el siguiente resultado:
x =
8
El operador asignación es significativamente diferente de una igualdad. Considere el
enunciado
x = x + 1
Éste no es un enunciado algebraico válido, pues claramente x no es igual a x + 1. Sin em­
bargo, cuando se interpreta como un enunciado de asignación, dice que se debe sustituir el valor
actual de x almacenado en memoria con un nuevo valor que es igual a la antigua x más 1.
Dado que el valor almacenado en x originalmente fue 8, el enunciado regresa
x =
9
lo que indica que el valor almacenado en la ubicación de'memoria llamada x cambió a 9. El
enunciado de asignación es similar al proceso familiar de guardar un archivo. Cuando guar­
da por primera vez un documento en un procesador de palabras, usted le asigna un nombre.
Subsecuentemente, después de que realiza cambios, vuelve a guardar su archivo, pero todavía
le asigna el mismo nombre. Las versiones primera y segunda no son iguales: sólo asignó una
nueva versión de su documento a una ubicación de memoria existente.
Orden de las operacianes
En todos los cálculos matemáticos es importante entender el orden en el que se realizan las
operaciones. MATLAB sigue las reglas algebraicas estándar para el orden de operación:
•
•
•
•
Primero realiza los cálculos adentro de paréntesis, desde el conjunto más interno hasta el
más externo.
A continuación, realiza operaciones de exponenciación.
Luego realiza operaciones de multiplicación y división de izquierda a derecha.
Finalmente, realiza operaciones de suma y resta de izquierda a derecha.
Para entender mejor la importancia del orden de las operaciones, considere los cálculos
que se involucran al encontrar el área de un cilindro circular recto.
El área es la suma de las áreas de las dos bases circulares y el área de la superficie curva
entre ellas, como se muestra en la figura 2.5. Si la altura (heigbt) del cilindro es 10 cm y el
radio (radius) es de 5 cm, se puede usar el siguiente código MAT
B para encontrar el área
(surface_area):
j
5;
radius
height = 10 ;
surface_area = 2*pi*radiusA2 + 2*pi*radius*height
=
El código regresa
surface_area =
471. 2389
En este caso, MATLAB realiza primero la exponenciación y eleva el radio a l a segun­
da potencia. Luego trabaja de izquierda a derecha y calcula el primer producto y luego el
Idea clave: el operador
asignación es diferente de
una igualdad.
22 Capítulo 2 Ambiente MATLAB
Figura 2.5
http://jurgensoft.co.cc
l
h
Encontrar el área de
un cilindro circular
recto involucra suma,
multiplicación y
exponenciación.
o
o
2mh
SA
=
21T? + 2mh
=
21Tr(r + h)
segundo producto. Finalmente, suma los dos produ ctos. En vez de ello, podría formular la
expresión como
surface_area = 2*pi*radius*(radius + height)
que también regresa
sur face_area =
471 . 2 389
En este caso, MAT LAB primero encuentra la suma del radio y la altura y luego realiza las
multiplicaciones, trabaj ando de izquierda a derecha. Si olvida incluir los paréntesis, tendría
surface_area = 2*pi*radius*radius + height
en cuyo caso el programa primero tendría que calcular el producto de 2*pi*radius*radius y
luego sumar beigbt, lo que obviamente resulta en la respuesta incorrecta. Note que fue nece­
sario incluir el operador multiplicación antes de los paréntesis, porque MATLAB no supone
operador alguno e interpretaría la expresión
radius(radius + height)
como la función radius con entrada (radius + height). Puesto que no hay funeión radio en
MATLAB, esta interpretación resultaría en un enunciado de error.
Es importante tener mucho cuidado al convertir ecuaciones en enunciados MATLAB. No
hay penalización por agregar paréntesis adieionales y con frecuencia esto hace al código más fácil
de interpretar, tanto para el programador como para otros que puedan usar el código en el futuro .
Otra forma de hacer más legible un código de cómputo es descomponer las expresiones
largas en múltiples enunciados. Por ejemplo, considere la eeuación
f
=
+
+ e)
+
+ e)
--=:.-'-::----�--'-::------'-41TX2+
+
+ e)
log(ax2 bx
sin(ax2 bx
cos(x .....: �ax2 bx
Sería muy fácil cometer un error de tecla en e sta ecuación. Para minimizar la posibilidad de
que ello ocurra, descomponga la ecuación en muchas piezas. Por ejemplo, primero asigne
valores para x, a, b y e:
x = 9;
a=l;
b=3;
c=S;
Luego defina un polinomio y el denominador:
pol y = a*xA2 + b*x + c;
denom = 4*pi*xA2 + cos(x - 2)*pol y;
Sección
Resolución de problemas con MATLAS
http://jurgensoft.co.cc
2.3
23
Combine estos componentes en una ecuación final:
f=(l og(pol y) - sin(pol y»jdenom
El resultado es
f =
0 . 0044
Como se mencionó, este enfoque minimiza su oportunidad de error. En lugar de teclear el
polinomio tres veces (y arriesgarse a un error cada vez), sólo necesita teclear una sola vez. Au­
menta la probabilidad de crear código MATLAB preciso y es más fácil que otros lo entiendan.
.....
Sugerencia
MATLAB no lee "espacio blanco", así que no importa si agrega espacios a sus
comandos. Es más fácil leer una expresión larga si agrega un espacio antes y
después de los signos más (+) y menos (- ), pero no antes y después de los signos
de multiplicación (*) y división (1).
Eiercicio de práctica 2.3
Prediga los resultados de las siguientes expresiones MATLAB y luego verifique sus
predicciones al teclear las expresiones en la ventana de comandos:
I.
2.
3.
6/6 + 5
2*6"2
(3+5) *2
4. 3 + 5*2
5. 4*3/2*8
6. 3-2/4+6"2
7.
2"3"4
8.
2"(3"4)
9. 3A5+2
10. 3A( 5+2)
Cree y pruebe la sintaxis MATLAB para evaluar las siguientes expresiones y luego
verifique sus respuestas con una calculadora de mano.
1I.
1 2.
13.
5 +3
9-1
23
_
2+1
5
4
4
5 +3
1
14. 4�*5�
2
3
1 5.
7
5 + 6*- - 22
3
3_
_
�*
3 3*6
Idea clave: intente
minimizar su oportunidad
de error.
24
Capítulo 2 Ambiente MATlAB
·jUMél·!'-
http://jurgensoft.co.cc
Operaciones escalares
Los túneles de viento (véase la figura 2.6) juegan un importante papel en la comprensión
del comportamiento de las aeronaves de alto rendimiento. Con la finalidad de interpretar los
datos del túnel de viento, los ingenieros requieren entender cómo se comportan los gases.
La ecuación básica que describe las propiedades de los gases es la ley del gas ideal, una
relación que se estudia con detalle en las clases de química de primer año. La ley establece
que
PV = nRT
donde
P
V
n
=
R =
T
presión en kPa,
volumen en m3,
número de kmoles de gas en la muestra,
constante de gas ideal, 8.314 kPa m3lkmol K, y
temperatura, en grados kelvin (K).
Además, se sabe que el número de kmoles de gas es igual a la masa del gas dividida por la
masa molar (también conocida como peso molecular) o
n = mlr:.fW
donde
m
MW
=
=
masa en kg y
masa molar en kglkmol.
En las ecuaciones' se pueden usar diferentes unidades si el valor de R se cambia en concor­
dancia.
Suponga ahora que usted sabe que el volumen de aire en el túnel de viento es de 1000 m3.
Antes de que el túnel de viento se encienda, la temperatura del aire es de 300 K, Y la pre­
sión es de 100 kPa. La masa molar (peso molecular) promedio del aire es aproximadamente
29 kglkmol. Encuentre la masa del aire en el túnel de viento.
Para resolver este problema, use la siguiente metodología para resolución de problemas:
l. Establezca el problema.
Cuando usted resuelve un problema, es buena idea volver a enunciarlo en sus propias
palabras: calcular la masa del aire en un túnel de viento.
•
Figura
2:6
Los túneles de viento se
usan para probar el diseño
de las aeronaves.
(Cortesía de louis Beneze/
Stone/Getty Images Ine.)
2.3
Sección
Resolución de problemas con
http://jurgensoft.co.cc
2. Describa la entrada y la salida.
Entrada
Volumen
Temperatura
Presión
Peso molecular
Constante de gas
V = l000m3
T= 300 K
p= lOOkPa
MW = 29 kglkmol
R = 8.314 kPa m3lkmol K
Salida·
Masa
3. Desarrolle un ejemplo a mano.
Trabajar el problema a mano (o con una calculadora) le permite subrayar un algoritmo,
que usted puede traducir más tarde a código MATLAB. Debe elegir datos simples que.
hagan fácil la comprobación de su trabajo. En este problema, se conocen dos ecuacio­
nes que relacionan los datos:
FV = nRT
ley del gas ideal
mlMW conversión de masa a moles
n
Resuelva la ley del gas ideal para n y sustituya los valores dados:
n =
Pv/KI'
(100 kPa X 1000 m3)/(8.314 kPa m3/kmol K) X 300K
=
40.0930 kmol
=
Convierta moles a masa al resolver la ecuación de conversión para la masa m y sustituya
los valores:
m = n X MW = 40.0930 kmol X 29 kglkmol
m = 1162.70 kg
4. Desarrolle una solución MATLAB.
Primero, limpie la pantalla y la memoria:
cl ear , el e
Ahora realice los siguientes cálculos en la ventana de comandos:
p
p
=
100
100
300
T
T
300
1000
V
V
MW
MW
R
R
=
1000
29
=
=
29
8 . 3 14
8 . 3 140
MATLAB
25
26
Capítulo 2
Ambiente MATLAB
http://jurgensoft.co.cc
n=(P*V)/(R*n
n
40 . 0930
n*MW
m
m
1 . 1 62 7e+003
Existen muchas cosas que usted debe notar acerca de esta solución MATLAB. Primero,
puesto que no se utilizaron puntos y comas para suprimir la salida, los valores de las
variables se repiten después de cada enunciado de asignación. Note también el uso de
paréntesis en el cálculo de n. Son necesarios en el denominador, pero no en el numera­
dor. Sin embargo, usar paréntesis en ambos hace al código más fácil de leer.
5. Ponga a prueba la solución .
En este caso, es suficiente comparar el resultado con el que se obtu vo a mano. Los
problemas más complicados resueltos en MATLAB deben usar una diversidad de datos
de entrada para confmnar que su solución funciona en una diversidad de casos. En la
figura 2.7 se muestra la pantalla MATLAB que se usó para resolver este problema:
Note que las variables que se definieron en la ventana de comandos se citan en la
ventana del área de trabajo. Note también que la historia de comandos lista los co­
mandos que se ejecutaron en la ventana de comandos. S i se desplaza por la ventana de
historia de comandos, verá comandos de sesiones previas de MATLAB. Todos estos
comandos están disponibles para que usted los mueva a la ventana de comandos.
100
8.314
300
1000
1162.7
40.093
•
Figura
2.7
Pantalla de MATLAS que
se usó para resolver el
problema del gas ideal.
100
» T=300
T =
300
» V=1000
V =
1000
»
MW=29
Sección
Resolución de problemas con MATlAB
http://jurgensoft.co.cc
2.3
Operaciones de arreglos
Usar MATLAB como una calculadora glorificada está b.ien, pero su verdadera fortaleza está
en las manipulaciones matriciales. Como se describió anteriormente, la forma más simple de
definir una matriz es usar una lista de números, llamada lista explfcita. El comando
x= [1 2 3 4]
regresa el vector fila
x
=
1 2 3 4
Recuerde que, al definir este vector, puede hacer la lista de valores con o sin comas. Una nueva
fila se indica mediante un punto y coma, de modo que un vector columna se especifica como
y= [ 1; 2 ; 3; 4]
y una matriz que contiene tanto filas como columnas se crearia con el enunciado
a = [ 1 2 3 4; 2 3 4 5 ; 3 4 5 6]
y regresada
a =
1 2 3 4
2 3 45
3 45 6
�
Sugerencia
Es más fácil seguir la pista de cuántas variables ingresó en una matriz si ingresa
cada fila en una línea separada:
a
[1234;
234 5;
34 56]
=
\
Aunque una matriz complicada tienc que ingresarse a mano, las matrices con intervalos regu­
lares se pueden ingresar mucho más fácilmente. El comando
b= 1:5
y el comando
b
[1:5]
=
regresan ambos una matriz fila
b =
1 2 3 45
(Los corchetes son opcionales.) El incremento por defecto es 1, pero si usted quiere usar un
incremento diferente, colóquelo entre el primero y último valores en el lado derecho del co­
mando. Por ejemplo,
c=
1:
indica que el incremento entre los valores será 2 y regresa
c
1
3
5
lista explícita: lista
que identifica cada
miembro de una matriz
27
http://jurgensoft.co.cc
28 Capítulo 2 Ambiente MAlLAB
Si usted quiere que MATLAB calcule el espaciamiento entre los elementos, puede usar el
comando linspace. Especifique el valor inicial, el valor final y cuántos valores quiere en total.
Por ejemplo,
d=l inspace(l , 10 , 3)
regresa un vector con tres valores, espaciados igualmente entre 1 y 10:
d =
1
10
55
.
Puede crear vectores espaciados logarítmicamente con el comando logspace, que también re­
quiere tres entradas. Los primeros dos valores son potencias de 10 que representan los valores
inicial y final en el arreglo. El valor final es el número de elementos en el arreglo. Por ende,
e=l ogspace(l, 3, 3)
regresa tres valores
e =
10
100
1000
Note que el primer elemento en el vector es 101 y el último elemento en el arreglo es 103
......
•
Sugerencia
Puede incluir operaciones matemáticas dentro de un enunciado de definición de
matriz. Por ejemplo, puede tener a
=
[O: pi/lO: pi].
Las matrices se pueden usar en muchos cálculos con escalares. Si a = [ l 2 3 J se puede
sumar 5 a cada valor en la matriz con la sintaxis
que regresa
b =
7
6
Idea clave: la
8
Este enfoque funciona bien para suma y resta; sin embargo, la multiplicación y la división son
multiplicación de
un poco diferentes. En matemáticas matriciales, el operador de multiplicación (*) tiene un
matrices es diferente
nificado específico. Puesto que todas las operaciones MATLAB pueden involucrar matrices,
�ente para indicar multiplicación elemento por elemento. Dicho
de la multiplicación
es necesario un opera
elemento por elemento.
operador es * (que se llama multiplicación punto). Por ejemplo,
•
a.*b
resulta en elemento 1 de la matriz a multiplicado por el elemento 1 de la matriz b,
elemento 2 de la matriz a multiplicado por el elemento 2 de la matriz b,
elemento
n de la matriz a multiplicado por el elemento n de la matriz b.
Para el caso particular de a (que es [1 2 3]) Y b (que es [678]),
a . *b
regresa
ans =
6
14
24
Sección
Resolución de problemas con
http://jurgensoft.co.cc
2.3
MArtAS
29
(Haga las operaciones para convencerse de que son las respuestas correctas.)
Sólo usar * implica una multiplicación matricial, que en este caso regresaría un mensaje
de error porque a y b no satisfacen aquí las reglas para multiplicación en álgebra matricial. La
moraleja es: tenga cuidado al usar e l operador correcto cuando quiera realizar multiplicación
elemento por elemento (también llamado arreglo).
La misma sintaxis se cumple para la división elemento por elemento (.1) y la exponen­
ciación (.A) de elementos individuales:
Como ejercicio, prediga los valores que resultan de las dos expresiones anteriores y
luego pruebe sus predicciones mediante la ejecución de los comandos en MATLAB .
Ejercicio de práctica 2.4
Conforme realice los siguientes cálculos, recuerde la diferencia entre los operadores
A
A
* y .*, así como los operadores / y.! Y entre y . :
1. Defina la matriz a
=
[2.3
5.8
9] como una variable MATLAB.
2. Encuentre el seno de a.
3. Sume 3 a cada elemento en a.
4. Defina la matriz b
[5.2
3. 14
2] como una variable MATLAB.
5. Sume cada elemento de la matriz a y la matriz b.
6. Multiplique cada elemento en a por el correspondiente elemento e n b.
7. Eleve al cuadrado cada elemento en la matriz a.
8. Cree una matriz llamada e de valores igualmente espaciados, desde O hasta
10, con un incremento de 1 .
9 . Cree una matriz llamada d de valores igualmente espaciados, desde O hasta
10, con un incremento de 2.
1 0. Use la función linspace para crear una matriz de seis valores igualmente
espaciados, desde 10 hasta 20.
1 1. Use la función logspace para crear una matriz de cinco valores
logarítmicamente espaciados entre 10 y 100.
�
La capacidad matricial de MATLAB hace fá
i zar cálculos repetitivos. Por ejem­
plo, suponga que tiene una lista de ángulos en grados que le gustaría convertir a radianes.
Primero ponga los valores en una matriz. Para ángulos de 10, 15, 70 Y 90, ingrese
degrees = [ 10 15 70 90];
Para cambiar los valores a radianes, debe multiplicar por 7T1180:
radians=degrees*pij180
Este comando regresa una matriz llamada radians, con los valores en radianes. (¡Intén­
telo!) En este caso, podría usar o el operador * o el *, porque la multiplicación involucra una
sola matriz (degrees) y dos escalares (pi y 1 80). Por lo tanto, podría haber escrito
•
radians=degrees.*pij180
Idea clave: la
capacidad matricial
de MATLAB hace
sencillo realizar cálculos
repetitivos.
30
Capítulo 2
http://jurgensoft.co.cc
Ambiente MATlAB
S u g erenc ia
En MATLAB, el valor de 7T se construye como un número punto flotante llamado
pi. Puesto que 7T es un número irracional, no se puede expresar exactamente con
una representación en punto flotante, de modo que la constante pi de MATLAB
en realidad es una aproximación. Puede ver esto cuando encuentra sin(pi). De
la trigonometría, la respuesta debería ser O. Sin embargo, MATLAB regresa un
número muy pequeño. El valor real depende de su versión del programa: la versión
profesional? regresó 1.2246e-01 6. En la mayoría de los cálculos, esto no haría una
diferencia en el resultado final.
Otro operador matricial útil es la transposición. El operador transpuesto cambia filas a
columnas y viceversa. Por ejemplo,
degrees '
regresa
ans =
10
15
70
90
�
ilita la creación de tablas. Por ejemplo, para crear una tabla que convierta gra­
dos a radianes, ingrese
tabl e = [degrees '
, rad i an s ' ]
que l e pide a MATLAB crear una matriz llamada table, e n l a que l a columna 1 e s degrees
(grados) y la columna 2 es radians (radianes):
tabl e =
10 . 0000
1 5 . 0000
70. 0000
90 . 0000
0 . 1745
0 . 2 61 8
1 . 2217
1.5708
Si traspone una matriz bidimensional, todas las filas se convierten en columnas y todas
las columnas se convierten en filas. Por ejemplo, el comando
tabl e'
resulta en
10 . 0000
0. 1745
1 5 . 0000
0 . 2 61 8
70 . 0000
1. 2 2 1 7
90. 0000
1. 5 70 8
Note que table n o es u n comando MATLAB, sino meramente u n nombre d e variable con­
veniente. Se podría haber usado cualquier nombre significativo, por dedr, conversiones o
grados_a_radianes.
http://jurgensoft.co.cc
Sección
Resolución de problemas con
2.3
MATlAB
.,,,Mé!·" ·
Cálculos matriciales con escalares
Los datos científicos, como los que se recolectan de los túneles de viento, usualmente están
en unidades SI ( Systeme International) . Sin embargo, mucha de la infraestructura fabril de
Estados Unidos se nominó en unidades inglesas (a veces llamadas Ingeniería Americana o Es­
tándar Americano) . Los ingenieros necesitan estar familiarizados con ambos sistemas y deben
ser especialmente cuidadosos cuando comparten datos con otros ingenieros. Acaso el ejemplo
más notorio de los problemas de confusión de unidades es el Mars Climate Orbiter (figura
2.8), que fue el segundo vuelo del programa Mars Surveyor. La nave espacial se quemó en la
órbita de Marte, en septiembre de 1 999, debido a una tabla de referencia incrustada en el soft­
ware de la nave. La tabla, probablemente generada a partir de las pruebas en el túnel de viento,
usaba libras fuerza (lbf) cuando el programa esperaba valores en newtons (N).
En este ejemplo, se usará MATLAB para crear una tabla de conversión de libras fuerza
a newtons. La tabla comenzará en O e irá hasta 1 000 lbf, en intervalos de 1 00 lbf. El factor de
conversión es
l lbf = 4.4482216 N
1 . Establezca el problema.
Cree una tabla que convierta libras fuerza (lbf) a newtons (N).
2 . Describa las entradas y salidas.
Entrada
O lbf
1000 lbf
100 lbf
1 lbf = 4.44822 1 6 N
Valor inicial en la tabla
Valor final en la tabla
Incremento entre valores
La conversión de lbf a N es
Salida
Tabla que presenta libras fuerza (lbf) y newtons (N)
3. Desarrolle un ejemplo a mano.
Puesto que se creará umi tabla, tiene sentido verificar algunos valores diferentes. Al
elegir números para los que la matemática sea sencilla hace que el ejemplo a mano sea
simple para completar, pero todavía valioso como comprobación:
O
100
1000
*
*
*
4.4482216
4.4482216
4.4482216
31
==
=
O
444.82216
4448.2216
Figura
2.8
Mars Climate Orbiter.
(Cortesía de NASA/Jet
Propulsion Laboratory.)
32
Capítulo 2
Ambiente MATLAB
http://jurgensoft.co.cc
4. Desarrolle una solución en MATLAB .
el ear , el e
l bf = [0 : 100 : 1000] ;
N = l bf * 4 . 4482 2 ;
[l bf ' , N ' ]
ans = .
1 . 0e+003 *
o
O
0 . 1000
0 . 4448
0 . 2000
0 . 8896
1. 3 34 5
0 . 3000
0 . 4000
1. 7 793
0 . 5000
2 . 2241
0 . 6000
2 . 6689
3 . 1138
0 . 7000
0 . 8000
3 . 5 5 86
0 . 9000
� . 0034
4 . 4482
1 . 0000
S iempre es una buena idea limpiar tanto el área de trabajo como la ventana de coman­
dos antes de comenzar un nuevo problema. Note en la ventana del área de trabajo (figu­
ra 2.9) que lbf y N son matrices de 1 X 1 1 Y que ans (que es donde se almacena la tabla
creada) es una matriz de 11 X
2. La salida de los primeros dos comandos se suprimió al
agregar un punto y coma al final de cada línea. Sería muy fácil crear una tabla con más
entradas al cambiar el incremento a 10 o incluso a 1. Note también que necesitará mul­
tiplicar los resultados que se muestran en la tabla por 1 000 para obtener las respuestas
correctas. MATLAB le dice que esto es necesario directamente arriba de la tabla, donde
se muestra el factor de escala común.
< 1 1 x2 dou . . .
< 1 x1 1 dou . . . 1 x. . .
1 76 double
8 8 double
o
0 . 2000
0 . 3000
0 . 4000
0 . 5000
0 . 6000
2.9
La ventana ·del área de
trabajo MATLAB muestra
las variables conforme se
crea n .
»
0 . 8996
1 . 3345
1 . 7 7 93
2 . 22 4 1
2 . 6689
0 . 7000
3 . 1 138
0 . 9000
4 . 0034
0 . 8000
Figura
0 . 4448
1 . 0000
3 . 5586
4 . 44 8 2
2.3
Sección
Resolución de problemas con MAlLAB
http://jurgensoft.co.cc
33
5 . Ponga a prueba la solución.
La comparación de los resultados de la solución MATLAB con la solución a mano
muestra que son iguales. Una vez verificado que la solución funciona, es fácil usar el
mismo algoritmo para crear otras tablas de conversión. Por ejemplo, modifique este
ejemplo para crear una tabla que convierta newtons (N) a libras fuerza (lbf), con un
incremento de 10 N, desde O N hasta 1000 N.
-¡"MUi·n-
Cálculo del arrastre
Una característica de rendimiento que se puede determinar en un túnel de viento es el arrastre
(drag). La fricción relacionada con el arrastre en el Mars Climate Observer (producida por
la atmósfera de Marte) resultó en el incendio de la nave espacial durante las correcciones de
curso. El arrastre también es extremadamente importante en el diseño de aeronaves terrestres.
(Véase la figura 2.10.)
El arrastre es la fuerza que se genera conforme un objeto, como un avión, se mueven a
través de un fluido. Desde luego, en el caso de un túnel de viento, el aire pasa sobre un mo­
delo estacionario, pero las ecuaciones son las mismas. El arrastre es una fuerza complicada
que depende de muchos factores. Un factor es la fricción de piel, que es una función de las
propiedades de la superficie de la aeronave, las propiedades del fluido en movimiento (aire en
este caso) y de los patrones de flujo provocados por la forma de la aeronave (o, en el caso del
Mars Climate Observer, por la nave espacial). El arrastre se puede calcular con la ecuación
de arrastre
Sustentación
Peso
Figura 2. 1 0
El a rrastre es una fuerza
mecánica generada por un
objeto sólido que se mueve
a t ravés de un fluido .
34
Capítulo 2
http://jurgensoft.co.cc
Ambiente MATLAB
donde
Cd
=
p
=
V
A
coeficiente de arrastre (drag), que se determina experimentalmente, por l o
general en u n túnel d e viento,
densidad del aire,
velocidad de la aeronave,
área de referencia (el área superficial sobre la que fluye el aire).
Aunque el coeficiente de arrastre no es una constante, se puede considerar como cons­
tante a rapideces bajas (menores a 200 mph). Suponga que los siguientes datos se midieron en
un túnel de viento:
arrastre (drag)
p
V
A
20,000 N
1 X 1 0-6 kg/m3
1 00 mph (necesitará convertir esto a metros por segundo)
1 m2
Calcule el coeficiente de arrastre. Finalmente, use este coeficiente de arrastre determi­
nado experimentalmente para predecir cuánto arrastre se ejercerá sobre la aeronave a rapide­
ces desde O mph hasta 200 mph.
l . Establezca el problema.
Calcule el coeficiente de arrastre sobre la base de los datos recopilados en un túnel de
viento. Use el coeficiente de arrastre para determinar el arrastre a varias rapideces.
2. Describa las entradas y salidas.
Entrada
Arrastre (drag)
Densidad del aire p
Rapidez V
Área de la superficie A
20,000 N
1 X 1 0-6 kg/m3
1 00 mph
1 m2
Salida
Coeficiente de arrastre
Arrastre a rapideces de O a 200 mph
3 . Desarrolle un ejemplo a mano.
Primero encuentre el coeficiente de arrastre a partir de los datos experimentales. Note
que la rapidez está en millas/h y se debe cambiar a unidades consistentes con el resto
de los datos (mis). ¡Jamás se enfatizará demasiado la importancia de acarrear unidades
en los cálculos de ingeniería!
Cd
=
arrastre X 2/(p X V2 X
A)
( 20,000 N X 2 )
1 X 1 O-{i kg/m 3 X
=
(
.
100 millas/h X 0.4470
mls
millas/h
)
2
X 1 m2
2.00 1 9 X 1 07
Dado que un newton es igual a un kg mls2, el coeficiente de arrastre es adimensional.
Ahora use el coeficiente de arrastre para encontrar el arrastre a diferentes rapideces:
arrastre
=
C X P X V2 X AI2
d
Sección
Resolución de problemas con MAlLAB
http://jurgensoft.co.cc
2.3
Con una calculadora, encuentre el valor del arrastre con V =
.
200 mph:
(
2.0019 X 1 07 X 1 X 10-6 kglm3 X 200 millaslh X 0.4470
mls
.
millaslh
)
2
X
1
2
m
arrastre
-'-.,...
.-'-= -
arrastre
=
2
80,000 N
}
4. Desarrolle una solución MATLAB .
drag = 20000 ;
r
0 . 000001 ;
V = 100*0 . 4470 ;
A = 1;
cd = drag*2/(r*VA2*A)
cd =
2 . 001ge+007
V = O : 2 0 : 200 ;
V = V*O . 4 7 j
d rag
cd ft r ftV . A2 * A/2 ..
tabl e
[V ' . drag ' ]
tabl e =
1 . 0e+004 *
o
O
0 . 0800
0 . 0009
0 . 00 18
0 . 3 2 00
0 . 7200
0 . 00 2 7
1 . 2 800
0 . 0036
2 . 0000
0 . 0045
0 . 0054
2 . 8800
3 . 9200
0 . 0063
5 . 1200
0 . 0072
0 . 0080
6 . 4800
0 . 0089
8 . 0000
��
=
}
Define las variables y cambia V a unidades SI.
Aquí se usó
r
en lugar de p para la densidad.
Calcula el coeficiente de arrastre.
Redefine V como matriz.
La cambia a unidades SI y calcula
el arrastre.
=
Note que la ecuación para el arrastre, o
d rag = cd * r * V . A2 * A/2 ;
usa el operador . " , porque se pretende que cada valor en la matriz V sea al cuadrado,
no que toda la matriz V se multiplique por sí misma. Usar sólo el operador exponencia­
ción (") resultaría en un mensaje de error. Desafortunadamente, es posible componer
problemas en los que el uso del operador erróneo no proporciona un mensaje de error,
sino que da una respuesta equivocada. Esto hace especialmente importante el paso 5 de
la metodología para resolver problemas .
5. Ponga a prueba la solución.
Al comparar la solución a mano con la solución MATLAB (figura
2 . l 1),
se ve que
ambas dan el mismo resultado. Una vez que se confirma que el algoritmo funciona con
los datos de muestra, se pueden sustituir nuevos datos y tener la seguridad de que los
resultados serán correctos. De manera ideal, los resultados también se deben comparar
con los datos experimentales, para confirmar que las ecuaciones que se utilizan de ma­
nera precisa modelan el proceso físico real .
35
36 Capítulo 2 Ambiente MATlAB
http://jurgensoft.co.cc
V=1 0 0 *0 . 44 7 0 ;
<1x1 1 dou . .
A=l ;
2.001 ge+...
cd=drag*2 / (r*VA2 *A)
< 1 x1 1 dou . .
cd =
< 1 1 )(2 dou . .
»
1 e-008
2 . 0 019e+007
V=0 : 20 : 2 0 0 :
V=V"'0 . 44 7 0 ;
1
drag=cd*r*V . A 2 "'A/2 ;
table= [ V ' , drag ' l
1 . 0e+004 '"
o
O
0 . 00 0 9
0 . 08 0 0
0 . 0018
0 .3200
0 . 0027
0 . 72 0 0
0 . 0036
1 . 2800
0 . 0045
2 . 0000
0 . 00 5 4
2 . 88 0 0
0 . 0 0 63
3 . 9200
0 . 0 0 72
5 . 12 0 0
6 . 48 0 0
2.3.3 Despliegue de números
notación científica:
número que se representa
como un valor entre uno
Notación científica
Aunque es posible ingresar cualquier número en notación decimal, no siempre es la mejor
forma de representar números o muy grandes o muy pequeños. Por ejemplo, un número que
y diez por diez a una
se usa frecuentemente en química es la constante de Avogadro, cuyo valor, a cuatro cifras
potencia apropiada
significativas, es 602,200,000,000,000,000,000,000. De igual modo, el diámetro de un átomo
de hierro es aproximadamente 140 picómetros, que es .000000000140 metros. La notación
científica expresa un valor como un número entre 1 y 10, multiplicado por una potencia de 1 0
(el exponente). En notación científica, e l número de Avogadro se convierte en 6.022 X 1 023, Y
el diámetro de un átomo de hierro se vuelve lA X 10-10 metros. En MATLAB, los valores en
notación científica se designan con una e entre el número decimal y el exponente. (Probable­
mente su calculadora usa notación similar.) Por ejemplo, usted puede tener
Avogadros_constant = 6 . 02 2e2 3
Iron_di ameter = 140e- 12; o
Iron_di ameter = 1 . 4e- lO;
Es importante omitir los espacios en blanco entre el número decimal y el exponente. Por
ejemplo, MATLAB interpretará
6 . 02 2
e23
como dos valores (6.022 y 1 023).
Sección
Resolución de problemas con MATLAB
http://jurgensoft.co.cc
2.3
,...
37
Sugerencia
Aunque es una convención común usar e para identificar una potencia de 1 0, los
estudiantes (y el profesor) a veces confunden esta nomenclatura con la constante
matemática
e,
exp.
que es igual a 2.7 1 83. Para elevar
e
a una potencia, use la función
Formato de despliegue
En MATLAB están disponibles algunos formatos de despliegue. No importa cuál formato de
despliegue elija, MATLAB usa en sus cálculos números punto flotante de doble precisión.
Exactamente cuántos dígitos se usan depende de su cálculo. Sin embargo, cambiar el formato
de despliegue no cambia la precisión de sus resultados. A diferencia de algunos otros progra­
mas, MATLAB maneja los números enteros y decimales como números de punto flotante.
Cuando los elementos de una matriz se despliegan en MATLAB, los enteros siempre se
imprimen sin punto decimal. No obstante, los valores con fracciones decimales se imprimen
Idea clave: MATLAB
no diferencia entre
números enteros y
de punto flotante, a
menos que se invoquen
funciones especiales.
en el formato corto por defecto que muestra cuatro dígitos decimales. Por ende,
A
=
5
regresa
A
5
\
pero
5 .1
A
regresa
Idea clave: no
importa cuál formato de
despliegue se seleccione,
A
5 . 1000
los cálculos se realizan
usando números de
punto flotante con doble
y
precisión.
A
=
51 . 1
regresa
A
51 . 1000
MATLAB l e permite especificar otros formatos que muestren dígitos significativos adi­
cionales. Por ejemplo, para especificar que usted quiere que los valores se desplieguen en un
formato decimal con 14 dígitos decimales, use el comando
format l ong
que cambia todos los despliegues subsecuentes. Por ende, con especificación format long,
A
ahora regresa
A
=
51 . 10000000000000
http://jurgensoft.co.cc
38 Capítulo 2 Ambiente MATLAB
Cuando el fonnato se especifica como format bank (fonnato banco), se despliegan dos dígi­
tos decimales :
A
=
51 . 10
Usted puede regresar el fonnato a cuatro dígitos decimales con el comando
format short
Para verificar los resultados, usted puede recordar el valor de A :
A
A
=
51 . 1000
Cuando los números se vuelven demasiado largos o demasiado pequeños para que MATLAB
los despliegue en el fonnato por defecto, automáticamente los expresa en notación científica.
Por ejemplo, si usted ingresa la constante de Avogadro en MATLAB en notación decimal
como
a=602000000000000000000000
el programa regresa
a
=
6 . 0200e+02 3
Usted puede forzar a MATLAB a desplegar
todos los números e n notación científica
con format sbort e (con cuatro dígitos decimales) o format long e (con 14 dígitos decimales.
Por ejemplo,
format short e
10 . 356789
x =
regresa
x
=
1 . 035 7e+OOl
Con los fonnatos largo y corto se aplica un factor de escala común a toda la matriz, si los
elementos se vuelven muy largos o muy cortos. Este factor de escala se imprime junto con
los valores escalados. Por ejemplo, cuando la ventana de comando regresa a
format short
los resultados del ejemplo 2.3 se despliegan como
Factor de escala común
tabl e =
1 . 0e+005 *
o
o
0 . 0002
0 . 0004
0 . 0006
0 . 0008
0 . 0400
0 . 1602
0 . 3603
0 . 6406
etc
...
Otro par de fonnatos quc ocasionalmente pueden ser útiles son format + y format rato
Cuando una matriz se despliega en format +, los únicos caracteres que se imprimen son los
http://jurgensoft.co.ccSección
2,4
Cómo guardar el frabojo 39
Tabla 2.2 Formatos de despliegue numérico
format short
4 dígitos decimales
3 . 1416
format l ong
1 4 dígitos decimales
3 . 1415926 5 3 58979
format short e
.4 dígitos decimales
3 . 1416e+OOO
format l ong e
1 4 dígitos decimales
3 . 141592653589793e+OOO
format bafik
2 dígitos decimales
3 . 14
format
+,
+
espacio en blanco
+
3 5 5/1 1 3
forma fraccional
format rat
signos más y menos. S i un valor e s positivo, se desplegará un signo más; s i u n valor e s nega­
tivo, se desplegará un signo menos. Si un valor es cero, no se desplegará nada. Este formato
pennite visualizar una matriz grande en ténninos de sus signos:
format +
B
[1 . - S , O , 12 ; 10005 , 2 4 , - 10 , 4]
B
=
=
+- +
++-+
El comando format rat despliega números como números racionales (es decir: como
representar como una
format rat
x
0:0. 1:0.5
fracción
=
regresa
x
=
o
1/10
l/S
3/10
2/5
1/2
El comando format también le pennite controlar cuán apretadamente se espacia la in­
formación en la ventana de comando. Por defecto (format loose) se inserta un salto de línea
entre las expresiones proporcionadas por el usuario y los resultados que regresa la compu­
tadora, El comando format compact remueve dichos saltos de línea. Los ejemplos en este
texto usan el formato compacto para ahorrar espacio. La tabla 2.2 muestra cómo se despliega
el valor de
'1T
en cada formato.
Si ninguno de estos formatos de despliegue numérico predefinidos son adecuados para
usted, puede controlar líneas individuales de salida con la función fprintf.
2 .4
CÓMO G UARDAR EL TRABAJO
Trabajar en la ventana de comandos es similar a realizar cálculos en su calculadora científica.
Cuando apaga la calculadora o cuando sale del programa, su trabajo desaparece, Es posible
guardar los
número racional:
número que se puede
fracciones). En consecuencia,
valores de las variables que definió en la ventana de comando y que se enlisten en
la ventana del área de trabajo, pero aunque hacerlo es útil, es más probable que usted quiera
guardar la lista de comandos que generaron sus resultados. En esta sección, primero se mos­
trará cómo guardar y recuperar variables (los resultados de las asignaciones que hizo y los
cálculos que realizó) a archivos MAT o a archivos DAT. Luego se introducirán los archivos-m
script, que se crean en la ventana de edición. Los archivos-m script le permiten guardar una
http://jurgensoft.co.cc
40 Capítulo 2 Ambiente MATlAB
lista de comandos y ejecutarlos más tarde. Descubrirá que los archivos-m script son especial­
mente útiles para resolver problemas de tarea en casa.
2.4.1
Cómo guardar variables
Para preservar las variables que creó en la ventana de comandos (verifique la lista de varia­
bles en l a ventana de área de trabajo en el lado izquierdo de la pantalla de MATLAB) entre
sesiones, debe guardar los contenidos de la ventana de área de trabajo a un archivo . El for­
mato por defecto es un archivo binario llamado archivo MAT. Para guardar el área de trabajo
(recuerde, éstas son sólo las variables, no la lista �ándos en la ventana de comandos) a
un archivo, escriba
save
<
fil e_name
>
en el prompt. Aunque save es un comando MATLAB, file_name es un nombre de archivo
definido por el usuario. En este texto, los nombres definidos por el usuario se indicarán co­
locándolos dentro de paréntesis angulares
«
» . El nombre del archivo puede ser cualquier
nombre que elija, en tanto esté en conformidad con las convenciones de nomenclatura para
las variables en MATLAB . De hecho, incluso ni siquiera necesita proporcionar un nombre de
archivo. Si no lo hace, MATLAB nombra al archivo matlab.mat. También podría elegir
Fil e ....,. Save Workspaee As
de la barra de menú, que luego lo conminará a ingresar un nombre de archivo para sus datos.
Para restaurar un área de trabaj o, escriba
l oad
<
fil e_name
>
De nuevo, load es un comando MATLAB, pero file_name es el nombre de archivo definido
por el usuario. Si sólo escribe load, MATLAB buscará el archivo matlab.mat por defecto.
El archivo que guarde se almacenará en el directorio actual.
Por ejemplo, escriba
el ear , el e
Este comando limpiará tanto el área de trabaj o como al ventana de comandos. Verifique que
el área de trabajo esté vacía mediante la comprobación de la ventana del área de trabajo o al
escribir
whos
Ahora defma varias variables, por ejemplo
a
b
e
=
=
Sj
[1 , 2 , 3] ;
[ 1 , 2; 3 , 4] ;
Compruebe de nuevo l a ventana del área de trabajo, para conflrmar que las variables se alma­
cenaron . Ahora, guarde el área de trabajo a un archivo llamado my_example_file:
save my_exampl e_fil e
?H
�
C nfirme que en el
ectori actual se almacenó un nuevo archivo.
�
Si pr fiere guardar el ar­
�
.
ChIVO a otro duecto
no (por ejemplo, a un disco extraíble), use el
botón de navegador (véase la
fi u�a 2.2) para navegar haci el directorio
de su elección. Recuerde que, en una compu
�
�
tadora
publIca, probablemente el dIrectorio actual
se purgue después de que cada usuario
.
sale del
SIstema.
Ahora, limpie el área de trabajo y la
ventana de comandos escribiendo
cl ear , el e
http://jurgensoft.co.ccSección
2.4
Cómo guardar el trobajo 4 1
La ventana de área de trabajo debe estar vacía. Puede recuperar las variables perdidas y
sus valores al cargar cl archivo (my_cxample_file.mat) de nuevo en el área de trabajo:
Recuerde: el archivo que quiera cargar debe estar en el directorio actual, o de otro modo
MATLAB no podrá encontrarlo. Escriba en la ventana de comandos
a
-�-
que regresa
a
=
S
De igual modo,
b
regresa
b
1
2
3
Y al escribir
e
regresa
e
1
2
3
4
MATLAB también puede almacenar matrices individuales o listas de matrices en el directorio
actual con el comando
donde file_name es el nombre de archivo definido por el usuario que designa la ubicación en
memoria en la que desea almacenar la información, y donde variable_list es la lista de varia­
bles a almacenar en el archivo. Por ejemplo,
guardaría sólo las variables a y b en my_new_file-mato
Si los datos que guardó los usará un programa distinto a MATLAB (como C o C++),
el formato .mat no es apropiado porque los archivos .mat son exclusivos de MATLAB. El
formato A SCII es estándar entre plataformas de computadoras y es más apropiado si necesita
compartir archivos. MATLAB le permite guardar archivos como archivos ASCn al modificar
el comando save a
save <fi le_name>
<vari able_list>
-aseii
El comando -ascü le dice a MATLAB que almacene los datos en un formato de texto
estándar de ocho dígítos. Los archivos A SCII se guardarán en un archivo .dat en lugar de en un
archivo .mat; sólo asegúrese de agregar .dat a su nombre de archivo:
save my_new_fi le . dat a b -ase ; ;
Si no agrega .dat, MATLAB l e pondrá por defecto .mat.
ase;;: formato de
almacenamiento de datos
binarios
http://jurgensoft.co.cc
42 Capitulo 2 Ambiente MATlAB
Idea clave: cuando
guarda el área de trabajo,
usted sólo guarda las
variables y sus valores;
no guarda los comandos
que ejecutó.
Si necesita más precisión, los datos se pueden almacenar en un formato de texto de 16 dígitos:
save fil e_name
variabl e_l ist
-asei;
-doubl e
También es posible delimitar los elementos (números) con tabuladores:
save <fil e_name>
<variabl e_l ; st>
-aseii
-doubl e
- tabs
Puede recuperar los datos del directorio actual con el comando load:
/
l oad <fil e_name>
Por ejemplo, para crear la matriz z y guardarla al archivo data_2.dat en formato de texto de
ocho dígitos, use los comandos siguientes:
z
= [5 3 5 j 6 2 3] ;
save data_2.dat z -asei;
En conjunto, dichos comandos hacen que cada fila de la matriz z se escriba a una línea
separada en el archivo de datos. Usted puede ver el archivo data_2.dat al hacer doble dic en el
nombre del archivo en la ventana de directorio actual. (Véase la figura 2. 12.) Acaso la forma
más sencilla de recuperar datos de un archivo ASCII .dat sea ingresar el comando load segui­
do por el nombre del archivo. Esto hace que la información se lea en una matriz con el mismo
nombre que el archivo de datos. Sin embargo, también es muy fácil usar el Import Wizard
(asistente de importación) interactivo de MATLAB para cargar los datos. Cuando hace doble
dic en el nombre del archivo de datos en el directorio actual para ver el contenido del archivo,
el Import Wizard se lanzará automáticamente. Sólo siga las instrucciones para cargar los datos
en el área de trabajo con el mismo nombre que el archivo de datos. Puede usar esta misma
técnica para importar datos de otros programas, incluso hojas de cálculo Excel, o puede selec­
cionar File -* Import data... de la barra de menú.
2.4.2 Archivos-m script
Además de proporcionar un ambiente computacional interactivo (al usar la ventana de co­
mandos como una memoria de trabajo auxiliar), MATLAB contiene un poderoso lenguaj e
de programación. Como programador, puede crear y guardar código e n archivos llamados ar­
chivos-m. Un archivo-m es un archivo de texto ASCII similar a los archivos de código fuente
de e o FORTRAN. Se puede crear y editar con el editor/debugger (depurador) de archivo-m de
MATLAB (la ventana de edición que se analizó en la sección 2.2.7), o puede usar otro editor
de texto de su elección. Para abrir la ventana de edición, seleccione
Fil e
-+
New
-+
M- fil e
de la barra de menú de MATLAR En la figura 2.13 se mue�tra la ventana de edición de MAlLAB.
Figura 2. 1 2
Hacer doble dic e n el
nombre de archivo en
el directorio de comandos
lanza el 1m por! Wizard.
http://jurgensoft.co.ccSección 2.4
Cómo guardar el trabajo 43
en e l editor!debugger
% I ngre s e su código Matlab
x=31
Figura 2. 1 3
Ventan a de edición de
MATLAB, también llamado
edi tor!debugger.
S i usted elige un editor de texto diferente, asegúrese de que los archivos que guarde
sean archivos ASCn. Notepad es un ejemplo de editor de texto que por defecto origina una es­
tructura de archivo ASCn. Otros procesadores de palabra, como WordPerfect o Word, reque­
rirán que usted especifique la estructura ASCII cuando guarde el archivo. Esos programas dan
por defecto estructuras de archivo propietario que no se someten a ASCII, y pueden producir
algunos resultados inesperados si intenta usar código escrito en ellos si no e.specifica que los
areh;vo�m: lista de
archivos se guarden en formato ASCII.
Cuando se guarda un archivo-m, éste se almacena en el directorio actual. Será necesario
que nombre su archivo con un nombre variable MATLAB válido, esto es, un nombre que co­
mience con una letra y contenga sólo letras, números y el guión b ajo
C).
No se permiten los
comandos MATLAB
almacenados en un
archivo separado
espacios. (Véase la sección 2.3 . 1 .)
Existen dos tipos de archivos-m, llamados scripts y funciones. Un archivo-m script es
Idea dave: los dos
simplemente una lista de enunciados MATLAB que se guardan en un archivo (por lo general,
tipos de archivos-m son
con una extensión de archivo .m). El script puede usar cualesquiera variables que se hayan
scripts y funciones.
definido en el área de.trabajo, y cualesquiera variables que se creen en el script se agregarán al
área de trabajo cuando el script termine. Puede ejecutar un script creado en la ventana de edi­
ción MATLAB al seleccionar el icono Save and_Run (guardar y correr) de la barra de menú,
como se muestra en la figura 2.13. De manera alternativa, puede ejecutar un script al escribir
un nombre de archivo o al usar el comando run de la ventana de comandos.
Suponga que creó un archivo script llamado myscript.m. Puede correr el script desde la
ventana de edición o usar una de tres formas de ej ecutar el script desde la ventana de coman­
dos. (Véase la tabla
2.3.) Las tres técnicas son equivalentes. Usted elige
cuál úsar.
Puede descubrir cuáles son los archivos-m y MAT en el directorio actual al escribir
what
en la ventana de comandos. También puede navegar en el directorio actual al buscar en la
ventana de directorio actual.
Tabla 2.3
Enfoques para ejecutar un archivo-m script desde la ventana
de comandos
myscript
run myscript
run ( ' myscript ' )
Escriba el n ombre d e a rchivo. Se supon e la
exten sión de a rchivo .m
Use el coman do run con el n ombre de a rchivo.
Use la formo funci on a l del comando run
44
Capítulo 2
http://jurgensoft.co.cc
Ambiente MATlAB
Usar archivos-m script le permite trabajar en un proyecto y guardar la lista de comandos
para uso futuro. Puesto que más adelante usará estos archivos, es buena idea salpicarlos libremen­
te con comentarios. El operador comentario en MATLAB es el signo de porcentaje, como en
%
Esto es un comenta r i o
MATLAB n o ejecutará código alguno e n una línea comentada.
También puede agregar comentarios después de un comando, pero en la misma línea:
a
%La vari abl e a se defi ne como 5
5
=
El código MATLAB que se podría ingresar en un archivo-m y utilizarse para resolver el ejem­
plo 2.3 es como sigue:
cl ear , cl c
% Arch i vo-m scri pt para encontrar drag (arrast re)
% Pri mero defi na l as vari abl es
%Defi na drag en newtons
20000 ;
drag
%Defi na densi dad del ai re en kg/mA3
r
0 . 000001 ;
V
100*0 . 4470 ;
%Defi na rapi dez en mIs
A
1;
%Defi na área en mA2
% Cal cul a coefi ci ente de a r rast re
drag * 2/ ( r*VA2 "'A)
cd
% Encuentra el a r rast re para var i as rapi deces
%Redefi ne rapi dez
V
0 : 20 : 200 ;
%Camb i a rapi dez a mIs
V
V'" . 4470
%Cal cul a arrastre
d rag
cd'� r*V . A2"'A/2 ;
%Crea una tabl a de resul tados
[V ' , drag ' ]
tabl e
=
=
=
=
=
=
=
=
Este código se podría correr o desde el archivo-m o desde la ventana de comandos . En cual­
quier caso, los resultados aparecerán en la ventana de comandos, y las variables se almacena­
rán en el área de trabajo.
�
Sugerencia
Puede ejecutar una porción de un archivo-m al resaltar una sección y luego hacer
dic derecho y seleccionar Evaluate Section (evaluar sección). También desde este
menú puede comentar o "descomentar" secciones completas de código; hacerlo así
es útil cuando crea programas mientras todavía depura su trabajo.
El ejemplo final de este capítulo usa un archivo-m script para encontrar la rapidez y acelera­
ción que puede alcanzar una nave espacial al salir del sistema solar.
•JUMé!-" -
Creación de un archivo-m para calcular la aceleración de una nave
espacial
En ausencia de arrastre (drag), los requisitos de potencia de propulsión para una nave espacial
se determinan de manera bastante simple. Recuerde de la física básica que
F = ma
http://jurgensoft.co.ccSección
: En otras palabras, fuerza (E) es igual a masa (m) por aceleración
2.4
Cómo guardar el trabajo
4S
(a), El trabajo ( W) es fuerza
por dist<tncia (d), y dado que la potencia (P) es trabajo por unídad de tiempo, la potencia se
convierte en fuerza por velocidad
(v):
W = Fd
.
W
d
P = - = F x - = F X v = m X a X v
t
t
Esto significa que los requerimientos de potencia para la nave espacial dependen de
su masa, de qué tan rápido marche y de qué tan rápidamente necesite acelerar o frenar. Si
no se aplica potencia, la nave espacial simplemente sigue viaj ando a su velocidad actual. En
tanto no se quiera hacer algo rápidamente, las correcciones de curso se pueden realizar con
. muy poca potencia. Desde luego, la mayona de los requerimientos de potencia para la nave
espacial no se relacionan con la navegación. La potencia se requiere para comunicación, para
mantenimiento y para experimentos y observaciones científicos.
Las naves espaciales Voyager 1 y
2
exploraron el sistema solar exterior durante el
último cuarto del siglo xx. (Véase la figura 2 . 14.) El Voyager 1 se encontró con Júpiter y
Sáturno; el Voyager
2
no sólo encontró a Júpiter y Saturno sino que continuó hacia Urano
y Neptuno . El programa Voyager fue enormemente exitoso y la nave espacial Voygec conti­
núa recopilando información conforme se aleja del sistema solar. Se espera que los genera­
dores de potencia (reactores nucleares de baj o nivel) en cada nave espacial funcionen hasta al
menos el año 2020. La fuente de poder es una muestra de plutonio 238 que, confonne decae,
genera calor que se usa para producir electricidad. Durante el lanzamiento de cada nave espa­
cíal, su generador produjo alrededor de 470 watts de potencia. Puesto que el plutonio decae,
la producción de potencia disminuyó a aproximadamente 335 watts en 1 997, casi 20 años
después del lanzamiento. Esta potencia se usa para operar el paquete científico, pero si se
dirigiese a propulsión, ¿cuánta aceleración produciría en la nave espacial? En la actualidad,
el Voyager 1 viaja con una rapidez de 3 .50 AU/año (AU es unidad astronómica), y el Voyager .
!
2 viaja a 3 . 1 5 AU/año.
Cada nave e spacial pesa 7 2 1 .9 kg.
.
Figura 2. 1 4
las naves espaciales
Voyager 1 y Voyager 2
se lanzaron en 1 977 Y ya
abandonaron el sistema
solar. (Cortesía d e NASAl
Jet Propulsion laboratory.)
46
Capítulo 2
Ambiente MAnAB
http://jurgensoft.co.cc
l . Establez;ca el problema.
Encontrar la aceleración que es posible con la salida de potencia de los generadores de
potencia de la nave espacial.
2. Describa las entradas y salidas.
Entrada
Masa
=
72 1 .9 kg
Potencia = 335 watts = 335 J/s
Rapidez
' =
Rapidez
=
3 .50 AU/año
3 . 1 5 AU/año
,
( Voyager 1 )
( Voyager 2)
Salida
Aceleración de cada nave espacial, en mls/s
3 . Desarrolle un ej emplo a mano.
Se sabe que
P=m X a X v
que se puede reordenar para obtener
a
=
P!(m X v)
La parte más difícil de este cálculo será conservar las unidades correctas. Primero, cam- ,
bie 1<1 rapidez a mI�. Para el Voyager 1 ,
v =
3.50
AU
año
X
150
X
109 m
AU
X
año
36 5 días
X
24
día
horas
X
hora
3600 s
=
m
1 6,650 -;-
Luego se calcula la aceleración:
a
335 -J
=
X
1
kg X
2
m2
__s____
s J-,-_
721.9 kg
X
m
1 6,650-
=
2.7 X
10-5
m
82
s
4. Desarrolle una solución MATLAB . '
cl ear , cl c
%Ejempl,o 2 . 4
%Encuentre l a pos i bl e acel erac i ón de l as naves ' espaci al es
%Voyager 1 y Voyager 2 usando el ' generador de potenci a
%a bordo
format short
%masa e n kg
m=72 1 . 9 ;
p=l3 5 ;
% poten c i a e n watts
v= [3 . 5 3 . 1 5] ; % rapi dez en AU/año
%Cambi a l a rapi dez a mIs
v=v* 1 50e9/365/24/3600
%Cal cul a l a acel erac i ón
a=p . / ( m . *v)
Los resultados se imprimen en la ventana de comandos, como se muestra en la figura 2. 1 5.
http://jurgensoft.co.cc
1 . 0e+0 0 4
47
"*
1 . 4983
1 . 6648
Figura 2. 1 S .
1 . 0 e - 0 0 4 "*
0 . 3097
0 . 2788
5.
Resumen
Los resultados de la
ejecución de un archivo-m
se i mprimen en la ventana
de comandos. Las variables
que se crearon se reflejan
en el área de trabajo y
el archivo-m se c ita en
la ventana de directorio
actual. Los comandos
emitidos en el archivo-m n o
s e reflejan en l a historia de
comandos.
Ponga a prueba la solución.
Compare los resultados MATLAB con los resultados del ejemplo a mano. Note que
la rapidez y la aceleración calculadas en el ejemplo a mano coinciden con la solución
MATLAB para el Voyager l. La aceleración parece muy pequeña, pero al aplicarse
sobre periodos de semanas o meses, tal aceleración puede lograr cambios de velocidad
significativos. Por ejemplo, una aceleración constante de 2 . 8 X 10-5 mJs2 resulta en un
cambio de velocidad de aproximadamente 72 mJs durante un mes:
2.8 X 10-5 mJs2 X 3600 s/hora
X 24 horas/día X 30 días/mes
=
72.3 mJs
Ahora que tiene un programa MATLAB que funciona, puede usarlo como el
punto de partida para otros cálculos más complicados.
-------1l11iji" '�'i:�
En este capítulo se introdujo la estructura MATLAB básica. El ambiente MATLAB incluye
múltiples ventanas, cuatro de las cuales se abren en la vista por defecto:
•
•
•
•
Ventana de comandos (command window).
Ventana de historia de comandos (command history).
Ventana de área de trabajo (workspace).
Ventana de directorio actual (current directory).
48 Capítulo 2 Ambiente MATLAB
http://jurgensoft.co.cc
Además, las ventanas
•
de documentos.
•
de gráficas.
•
de edición.
se abren conforme se requieran durante una sesión MATLAB .
Las variables que se definen en M ATLAB siguen las convenciones de nomenclatura
computacional comunes:
•
Los nombres deben comenzar con una letra.
•
Letras, nlÍmeros y guión bajo son los únicos caracteres permitidos.
•
Los nombres son sensibles a mayúsculas y minúsculas.
•
Los nombres pueden tener cualquier longitud, aunque MATLAB sólo usa los primeros 63
.
caracteres.
•
Algunas palabras clave se reservan para MATLAB y no se pueden usar como nombres de
variables.
•
MATLAB permite al usuario reasignar nombres de función como nombres de variable,
aunque no es aconsejable hacerlo.
La unidad computacional básica en MATLAB es la matriz. Las matrices pueden ser.
X I ).
•
Escalares (matriz 1
•
Vectores (matrices 1 X n o n
•
Arreglos bidimensionales (m
•
Arreglos multidimensionales.
X l , o una fila o una columna).
X n o n X m).
Con frecuencia, las matrices almacenan información numérica, aunque también pueden alma­
cenar otro tipo de información. Los datos se pueden ingresar en una matriz de forma manual
o se pueden recuperar de archivos de datos almacenados. Cuando se ingresa manualmente,
una matriz se encierra en corchetes, los elementos en una fila se separan mediante comas o
espacios, y una nueva fila se indica con un punto y coma:
[1 2 3 4 ; 5 6 7 8]
a
Las matrices igualmente espaciadas se pueden generan con el operador dos puntos. Por ende,
el comando
b
=
0 : 2 : 10
crea una matriz que comienza en
0, termina en 10
y tiene un incremento de 2. Las funciones
Iinspace y logspace se pueden usar para generar una matriz de longitud especificada a partir
de valores de inicio y fin dados, espaciados lineal o logarítmicamente. La función help o el
menú Help MATLAB se pueden usar para determinar la sintaxis apropiada para estas y otras
-
funciones.
MATLAB sigue el orden algebraico estándar de las operaciones. Los operadores que
soporta M ATLAB se mencionan en la sección "Resumen MATLAB" de este capítulo.
MATLAB soporta notación estándar (decimal) y científica. También soporta algunas di­
ferentes opciones de despliegue, que también se describen en la sección "Resumen MATLAB".
Sin importar cómo se desplieguen los valores, se almacenan como números de punto flotante
de doble precisión.
Las colecciones de comandos MATLAB se pueden guardar en archivos-m script. Las
variables MATLAB se pueden guardar o importar de archivos . MAT o .DAT. El formato .MAT
es propio de MATLAB y se usa porque almacena datos de manera más eficiente que otros
formatos de archivo. El form ato .DAT emplea el formato ASCII estándar y se usa cuando los
datos creados en MATLAB se compartirán con otros programas.
http://jurgensoft.co.cc
El siguiente resumen MATLAB cita todos los caracteres especiales, comandos y funciones
Resumen MArLAB
49
RESU M E N MATLAB
que se definieron en este capítulo;
[ ]
( )
forma matrices
se usa en enunciados para agrupar operaciones
se usa con un nombre de matriz para identificar elementos específicos
separa subíndices o elementos de matriz
separa filas en una definición de matriz
suprime salida cuando se usa en comandos
se usa para generar matrices
indica todas las filas o todas las columnas
operador asignación: asigna un valor a una ubicación de memoria;
no es lo mismo que una igualdad
indica un comentario en un archivo-m
suma escalar y de arreglo
+
resta escalar y de arreglo
multiplicación escalar y multiplicación en álgebra matricial
*
/
./
A
.A
multiplicación de arreglo (multiplicación punto o punto estrella)
división escalar y división en álgebra matricial
división de arreglo (división punto o punto diagonal)
exponenciación escalar y exponenciación de matriz en álgebra matricial
exponenciación de arreglo (potencia punto o punto caret)
Comandos y flmeioDes
ans
nombre de variable por defecto para resultados de cálculos MATLAB
asc i i
indica que los datos se deben gnardar e n formato ASCII estándar
el e
limpia la ventana de comandos
el ear
limpia el área de trabaj o
termina MA TLAB
exi t
format
+
establece formato sólo a signos más y menos
format compact
establece formato a forma compaeta
format l ong
establece formato a 14 lugares decimales
format l ong e
establece formato a notación científica con 14 lugares decimales
format l oose
establece formato a la forma no compacta por defecto
format short
establece formato al defecto, 4 lugares decimales
format short e
establece formato a notación científica con
format rat
establece formato a despliegue racional (fraccional)
hel p
invoca la utilidad de ayuda
l i nspaee
función vector linealmente espaciado
l oad
carga matrices desde un archivo
l ogspaee
función vector logarítmicamente espaciado
pi
aproximación numérica del valor de
qui t
termina MA1LAB
save
guarda variables en un archivo
who
lista variables en memoria
whos
lista variables y sus tamaños
4 lugares decimales
'TT
archivo-m
editor de arreglo
script
área de trabajo
escalar
transponer
argumentos
función
vector
arreglo
historia dc comandos
ventana de comandos
ASCII
matriz
ventana de documentos
asignación
notación científica
ventana de edición
botón de inicio
operador
ventana de gráficas
directorio actual
prompt (incitador)
TÉRMINOS CLAVE
50
Capítulo 2
Ambiente MATlAS
http://jurgensoft.co.cc
Inicio
2.1
Prediga el resultado de los siguientes cálculos MATLAB :
1 + 3/4
5 * 6 * 4/2
5/2 * 6 * 4
5'\2 * 3
51\(2 * 3)
1 + 3 + 5/5 + 3 + 1
( 1 + 3 + 5)/(5 + 3 + 1)
Verifique sus resultados al ingresar los cálculos en la ventana de comandos.
Uso de variables
2.2
Identifique cuál de cada uno de los siguientes pares es un nombre de variable MATLAB
legítimo:
fred
fred !
book_l
2ndplace
#1
veC5
tan
book- I
Second_Place
No_l
ve1.5
while
Pruebe sus respuestas con el uso de isvarname; por ejemplo,
isvarname fred
Recuerde: isvarname regresa un 1 si el nombre es válido y O si no lo es. Aunque es
posible reasignar un nombre de función como nombre de variable, hacerlo no es una
buena idea. Use which para verificar si los nombres precedentes son nombres de fun­
ciones; por ej emplo,
which sin
¿En qué caso MATLAB le diría que sin es un nombre de variable, no un nombre de
función?
Operaciones escalares y orden de operaciones
2.3
Cree código MATLAB para realizar los cálculos siguientes:
(Sugerencia: una raíz cuadrada cs lo mismo que una potencia Vz.)
9-�
12
+ 7 · 3+2
5
1 + 5 · 3/62 + 22-4 • 1/5.5
Problem as 51
http://jurgensoft.co.cc
Compruebe su código al ingresarlo en MATLAB y mediante la realización de los cálcu­
los en su calculadora científica.
2.4
2.5
El área de un círculo es 1Tr2. Defina r como 5 y luego encuentre en MATLAB el
área de un círculo.
(b) El área superficial de una esfera es 4m2• Encuentre el área superficial de una
esfera con un radio de 10 pies.
(e) El volumen de una esfera es 4/3 1Tr. Encuentre el volumen de una esfera con un
radio de 2 pies.
(a) El área de un cuadrado es la longitud de arista al cuadrado. (A arista2.) Defina la
longitud de arista como 5 y l uego encuentre en MATLAB el área de un cuadrado.
(b) El área s uperficial de un cubo es 6 veces la longitud de arista al cuadrado. (AS
6 X arista2.) Encuentre el área superficial de un cubo con longitud de arista 1 0.
(e) El volumen de un cubo es la longitud de arista al cubo. (V = arista3.) Eneuentre el
volumen de un cubo con longitud de arista 1 2.
(a)
G
Figura P2.4(a)
=
T
=
e
Operaciones de arreglos
2.6
(a )
El volumen de un cilindro es 1Tr2h. Defina r como 3 y h como la matriz
h
=
[1 , 5 , 12]
Encuentre el volumen de los cilindros.
(b) El área de un triángulo es Yz la longitud de la base del triángulo, por la altura del
triángulo. Defina la base como la matriz
b
=
[ 2 , 4 , 6]
y la altura h como
(e)
Figura P2.5(a-c)
12, y encuentre el área de los triángulos.
El volumen de cualquier prisma recto es el área de la base del prisma, por la di­
mensión vertical del prisma. La base del prisma puede ser cualquier forma, por
ejemplo,
EJi
Figura P2.6(a)
Base es
un círculo
Base es
un rectángulo
Base es
un triángulo
Figura P2.6(c)
2.7
(a)
(b)
(e)
Encuentre el volumen de los prismas creados a partir de los triángulos de la parte
(b). Suponga que la dimensión vertical de estos prismas es 6.
Cree un vector igualmente espaciado de valores desde 1 hasta 20 en incrementos
de 1 .
Cree u n vector con valores desde cero hasta 2 1T e n incrementos d e 1T/1 O. .
Cree un vector que contenga 1 5 valores, igualmente espaciados entre 4 y 20. (Su­
gerencia: use el comando linspaee. Si no puede recordar la sintaxis, escriba help
linspace.)
2.8
(d) Cree un vector que contenga 10 valores logarítmicamente espaciados entre 10 y
1000. (Sugerencia: use el comando logspaee . )
(a) Cree una tabla de conversión de pies a metros. Comience la columna pies en O,
incremente en 1 y termine en 10 píes. (Busque el factor de conversión en un ma­
nual o en línea.)
DJ
b
Figura P2.6(b)
S2
Capítulo 2 Ambiente MATIAB
http://jurgensoft.co.cc
(b)
Cree una tabla de conversiones de radianes a grados. Comience la columna ra­
dianes en O e incremente por O . l7T radián, hasta 7T radianes. (Busque el factor de
conversión en un manual o en línea.)
(e)
Cree una tabla de conversiones de miIh a pies/s. Comience la columna mi/h en
O y termine en 1 00 miIh. Imprima 15 valores en su tabla. (Busque el factor de
conversión en un manual o en línea.)
( d)
La acidez de las soluciones, por lo general, se mide en términos de pH. El pH de
una solución se define como
de l a concentración de iones hidruro. Cree una
tabla de conversiones de concentración de ión hidruro a pH, logarítmicamente
espaciada, de .001 a . 1 molllitro con 1 0 valores. Si supone que la concentración
de iones hidruro se nombra
H_conc, la sintaxis para calcular el logaritmo de la
concentración es
l oglO (H_conc)
2.9
La ecuación general para la distancia que recorre un cuerpo en caída libre (ignorando
la fricción del aire) es
Suponga que g
=
9.8 rnls2• Genere una tabla de tiempo contra distancia recorrida para
valores de tiempo de O a
tiempo.
(Sugerencia:
100 segundos. Elija un incremento adecuado para su variable
tenga cuidado de usar los operadores correctos; ¡ t2 es una opera­
ción arreglo ! )
2.10
La ley de Newton de la gravitación universal dice que la fuerza ejercida por una par­
tícula sobre otra es
F
donde la constante de gravitación universal G tiene el valor experimental de
La masa de cada partícula es
m¡
y
m2,
respectivamente, y
r es la distancia entre las dos
partículas. Use la ley de Newton de gravitación universal para encontrar la fuerza que
ejerce la Tierra sobre la Luna, si supone que
6 X 1 024 kg,
7.4 X 1 022 kg, Y
la masa de la Tierra es aproximadamente
la masa de la Luna es aproximadamente
la Tierra y la Luna están separadas una distancia promedio de 3.9
2.11
X
1 08 m.
S e sabe que la Tierra y la Luna no siempre están separadas la misma distancia. En­
cuentre la fuerza que la Luna ejerce sobre la Tierra para
108 m y
10
distancias entre 3.8
X
4.0 X 108 m.
Despliegue de números
2.12
Cree una matriz
a
igual a [-1/3, O, 1/3, 2/3] Y use cada una de las opciones de formato
interno para desplegar los resultados:
formato corto (que es por defecto)
formato largo
formato bank
formato corto e
formato largo e
formato +
formato raí
http://jurgensoft.co.cc
Cómo guardar trabajo en archivos
2.13
•
Cree una matriz llamada G_a_R compuesta de dos columnas, una que represente
grados y la otra que represente el valor correspondiente en radianes. Para este ejer­
cicio es válido cualquier conjunto de valores .
•
Guarde l a matriz a u n archivo llamado degrees.dat.
•
Una vez guardado el archivo, limpie su área de trabaj o y luego cargue los datos del
archivo de vuelta a MATLAB.
2.14
Cree un archivo-m script y úselo para hacer los problemas de tarea en este capítulo. Su
archivo debe incluir comentarios adecuados para identificar cada problema y describir
su proeeso de cálculo. No olvide incluir su nombre, la fecha y cualquier otra informa­
cÍón que solicite su profesor.
Problemas
53
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Funciones internas
deMATLAB
INTRODUCCiÓN
La gran mayoría de los cálculos de ingeniería requieren funciones matemáticas muy
complicadas, incluidos logaritmos, funciones trigonométricas y funciones de análisis
estadístico. MATLAB tiene una extensa librería de funciones internas que le permiten
realizar díchos cálculos.
3.1
USO DE FUNCIONES INTERNAS
Muchos de los nombres de las funciones internas de MATLAB son los mismos que los
definidos no sólo en el lenguaj e de programación e, sino también en FORTRAN. Por
ejemplo, para sacar la raíz cuadrada de las variable
b
=
x,
se escribe
sqrt(x);
Una de las grandes ventajas de MATLAB es que los argumentos de la función, por lo
general, pueden ser escalares o matrices. En el ejemplo, si
un
x
es un escalar, se regresa
resultado escalar. Por tanto, el enunciado
x
=
b
9;
sqrt(x)
regresa un escalar:
3
Sin embargo, la función raíz cuadrada,
s'qrt,
también puede aceptar matrices
como entrada. En este caso, se calcula la raíz euadrada de cada elemento, de modo que
x
=
b
=
b
=
[4, 9, 16];
sqrt(x)
regresa
2
3
4
56
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MAlLAB
Idea clave: la
mayoría de los nombres
de función MATLAB son
las mismas que las usadas
en otros programas de
cómputo.
argumento: entrada a
Se puede considerar que todas las funciones tienen tres componentes: nombre, entrada
y salida. En el ejemplo precedente, el nombre de la función es sqrt, la entrada requerida (tam­
bién llamada argumento) va dentro de los paréntesis y puede ser un escalar o una matriz, y la
salida es un valor o valores calculados. En este ejemplo, a la salida se le asignó el nombre de
variable b .
Algunas funciones requieren múltiples entradas. Por ejemplo, l a función residuo (re­
mainder), rem, requiere dos entradas: un dividendo y un divisor. Esto se representa como
rem(x,y), de modo que
una función
rem( l0,3)
calcula el residuo de 1 0 dividido entre 3:
ans =
1
La función size es un ejemplo de una función que regresa dos salidas. Determina el
número de filas y columnas en una matriz. Por tanto,
d
f
[1, 2, 3 ; 4, 5, 6] ;
s i ze (d)
regresa la matriz resultante 1 X 2
f =
2
3
También puede asignar nombres de variable a cada una de las respuestas al representar
el lado izquierdo del enunciado de asignación como una matriz. Por ejemplo,
[x,y] = s i ze (d)
produce
x
2
y
3
anidado: uso de una
función como la entrada
a otra
También puede crear expresiones complicadas mediante funciones anidadas (nesting).
Por ejemplo,
9 = sqrt(si n (x) )
encuentra la raíz cuadrada del seno de cualesquier valores almacenados en la matriz llamada x.
Dado que, anteriormente en esta sección, a x se le asignó un valor de 2, el resultado es
9 =
0 . 9 5 36
Las funciones anidadas pueden resultar en código MATLAB algo complícado. Asegúrese de
incluir los argumentos para cada función dentro de su propio conjunto de paréntesis. Desde
luego, su código será más sencillo de leer si descompone las expresiones anidadas en dos
enunciados separados. Por tanto,
a
9
s i n (x) ;
sqrt (a)
da el mismo resultado que g = sqrt(sin(x)) y es más fácil de seguir.
http://jurgensoft.co.cc
...
3.2
, Sección 3.2
Uso de la ayuda
Sugerencia
Probablemente pueda suponer el nombre y sintaxis para muehas funciones
MATLAB . Sin embargo, verifique para estar seguro de que la función en la que
está interesado funciona de la forma en que supone antes de realizar cálculos
importantes.
USO DE LA AYUDA
MATLAB incluye extensas herramientas de ayuda, lo que es espeeialmente útil para entender
cómo usar las funciones. Existen dos formas de obtener ayuda desde el interior de MATLAB: una
función de ayuda de línea de comando (belp) y un conjunto de documentos H1ML disponibles al
seleccionar Help de la barra de menú o al usar la tecla de función PI, que, por lo general, se ubica
en la parte superior de su teclado (o que se encuentra al escribir belpwin en la ventana de coman­
dos). También existe un conjunto de documentos de ayuda en línea, disponibles a través del botón
Start o el icono Help en la barra de menú. Debe usar ambas opciones de ayuda, pues ellas ofrecen
diferente información y pistas acerca de cómo usar una función específica.
Para usar la función de ayuda de línea de comando, escriba belp en la ventana de co­
mandos:
help
Aparecerá una lista de temas de ayuda:
Temas HELP:
MATLAB\general
MATLAB\ops
MATLAB\lang
MATLAB\elmat
MATLAB\elfun
MATLAB\specfun
Etc . , etc .
Comandos de propósi to general
Caracteres y operadores
espec i al es
Constructos de lenguaje
de programaci ón
- Matri ces el ementales y
man i pul ación de matri ce s
- Funciones matemáticas elementales
- Funciones matemáti cas especiali zadas
Para obtener ayuda acerca de un tema particular, escriba belp <topic>. (Recuerde que
los paréntesis angulados, < y >, identifican dónde debe escribir su entrada; no se incluyen en
el enunciado MATLAB real.)
Por ejemplo, para obtener ayuda acerca de la función tangent, escriba
help tan
Se debe mostrar lo siguiente:
TAN
Tangent .
TAN (X) i s the tangent of the elements of X .
See al so ATAN, ATAN2 .
Para usar la pantalla de ayuda en ventana, seleccione Help � MATLAB Help de la
barra de menú. Aparecerá una versión en ventana de la lista de ayuda. (Véase l a figura 3 . 1 .)
Esta función de ayuda incluye un tutorial MATLAB que encontrará extremadamente útil.
La lista en la ventana izquierda es una tabla de contenidos. Note que la tabla de contenidos incluye
una liga a una lista de funciones, organizada tanto por categoría como alfabéticamente por nom-
Idea clave: use
la función help para
ayudarse a usar las
funciones internas de
MATLAB .
51
58
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAB
$tartad
�;-íf E"""", .,
� Iib Declctop Tonls am; �lo:pment
$ -� Malf:rematics
$' lfh Prog:amming:
8:: ij¡ Graphics
;�"-!i'lJ 3·0 Ví:suah:talll;¡n
$-11: Cr!:labóg C:7:'aphlC;¡¡ l USar
i: !!t Functlí}(\$ � CateglJ;1c�1
Funet!ons:
.�
1( In Alpha!!�t'af Orde-f
-------------
Doeumentation Set
; I ����\��.;��::�:��
ie -11 Exlílma! Interfaces
!!l .. Externa! lrd.erfaces Referem:e
lb el Rele-ase Notes
, e Pnmable Oowmen1ahOI'I (pOF)
,
-e PrQÓuct Pag-e (Web)
, aH. S)'mbclic Mall'! Tcoibo:::
ill--.S;muliok
s·. State1low
, • Suwoo and Wi1b SeM¡;es
•
bample$ in D'Owmentatiofl
U$1s ma)or Hilmples.1') 1l'U;t MA.Ti..AS aoc<Jmerrta!lCD
Product Demos
•
MA1lAB Demos
Presefits 8 co!leclict\ (Ir d�m;)s 11:&1 you can flJn from 1he He!p bl'éWSM ti) help yOIJ leam tbe pfodl.>Cl
What'sNew
Figura 3.1
El ambiente de ayuda
MATLAB.
breo Puede usar esta liga para encontrar qué funciones MAlLAB están disponibles para resolver
muchos problemas. Por ejemplo, es posible que quiera redondear un número que calculó. Use la
ventana de ayuda MATLAB para detennllar si está disponible una función MATLAB adecuada.
Seleccione la liga MATLAB
F unctions L isted by Category (funciones MATLAB lis­
tadas por categoría) (véase la figura 3.1) y luego la liga Mathematics (véase la figura 3.2).
Casi a la mitad de la página está la categoría Elementary Math, que menciona rounding
(redondeo) como un tema. Siga la liga y encontrará toda una categoría dedicada a las funcio­
nes de redondeo. Por ejemplo,
round redondea al entero más cercano.
También podría haber encontrado la sintaxis para la función round al seleccionar F unc­
tions-Alpbabetical List.
....
Sugerencia
Puede solicitar la característica de ayuda en ventana al usar el comando
en
doc, como
doc round.
Ejercicio de práctica 3.1
1. Use el comando he1p en la ventana de eomandos para encontrar l a sintaxis
adecuada para las siguientes funciones:
a cos
b. sqrt
.
c.exp
2. Use la función de ayuda en ventana de la barra de menú para aprender acerca
de las funciones en el problema l .
3. Vaya a l a función de ayuda en línea en www.mathw orks.com para aprender
acerca de las funciones en el problema 1.
http://jurgensoft.co.cc
Sección
3.3
Funciones matemáticas elementales
59
Stal1up, Command WmolJ'H, helJ.l, etWml) and debuggmg. lUI1I09, otn-af gemual
functmns
hr$Y$ ano mátncas, lmear álgebra. dal'3
anatyst$, oth$r a�a$
of r:1álMtnaírcs
Functwnle:>:prSS51an eV3luaj¡on, progmn contttlt. functwfl hand!es, ooJect
Onented prngramrnmg. É(f¡)' handling, Dperators, dida types,
!lm€fS
dat&$: &nli times,
Genera! aM Jm¡,..leve! uta 110, pluS specmc file. formats. ¡!ke audio,
spreadsneel, HDF, lmages
lIne plols, al'l!i\.ltatlng grS¡ihS,
specmltztld plots,
tma!J1i!.s, Ilflr>bng. Hao!Ue
Gtaphtcs
}D Vrsjla!!Zatum
Surm:e and mesh plG1s, 'o1ew ermiml, lightmg
antl trnnsparency. 'ItlhIDll.l
'\'Isuél¡zallon
GIJlt)E, programrrllng gratlnlcal use, mlerfaces
ErtW?! lntelfaces
Jaon. COMo Se::13:1 Port furtctIOOS.
Figura 3.2
o liJ94.� The MathW.rk$.lnt
Ventana de ayuda para
funciones matemáticas.
3.3
FU NCIONES MATEMÁTICAS ELEMENTALES
Las funciones matemáticas elementales incluyen logaritmos, exponenciales, valor absoluto,
Idee clave: la mayoría
funciones de redondeo y funciones que se usan en matemáticas discretas.
de las funciones aceptan
3.3.1
vectores o matrices.
como entrada escalares,
Cálculos comunes
Las funciones't]ue se mencionan en la tabla 3.1 aceptan un escalar o una matriz de
�
x
valores.
Sugerencia
Como regla, la función log en todos los lenguajes de cómputo significa el logaritmo
natural. Aunque no es el estándar en los textos de matemáticas, es el estándar en
la programación de computadoras. No conocer esta distinción es una fuente de
error común, en especial para nuevos usuarios. Si quiere logaritmos a la base 10,
necesitará usar la función
loglO. En MATLAB también se incluye una función log2,
pero los logaritmos a cualquiera otra base necesitan calcularse; no hay una función
logaritmo general que permita al usuario ingresar la base.
Eiercicio de práctica 3.2
1. Cree un vector
x
de
-2 a +2 con un incremento de
1. Su vector debe ser
x == [- 2 , - 1, O, 1, 2 ]
a . Encuentre el valor absoluto de cada miembro del vector.
b. Encuentre la raíz cuadrada de cada miembro del vector.
60
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAS
2.
3.
Encuentre la raíz cuadrada de
a.
b.
Use la función sqrt.
c.
Eleve
-
3
Y +3
3 Y
+3.
nthroot.
a la potencia Y2.
¿Cómo varía el resultado?
Cree un vector x de -10 a 11 con un incremento de
a.
4.
Use la función
-
b.
Encuentre el resultado de x dividido entre
Encuentre el residuo de x dividido entre
Use el vector del problema
5. Use el vector del problema
a.
b.
3y
3.
2.
3.
2.
encuentre eX.
Encuentre ln(x) (el logaritrno natural de x).
Encuentre 10glO(X) (ellogaritrno común de x).
Explique sus resultados.
6. Use la función
sign para
determinar cuáles de los elementos en el vector x son
positivos.
7. Cambie el
Tabla 3.1
format a rat y muestre el
valor del vector x dividido entre
2.
Funciones matemáticas comunes
abs(x)
Encuentra el volor obsoluto de x
abs(-3)
ans
3
=
sqrt(x)
Encuentra la roíz cuadrada de x
sqrt(85)
9.2 U5
ans
=
nthroot(x,n)
Encuentra la n-ésima raíz real de x. Esta
función no regresará resultados complejos.
Por tanto,
(··2)A(1/3)
no regresa el mismo resultado, aunque
ambas respuestas son legítimas raíces
cúbicas de 2
-
nthroot( - 2 ,3 )
ans
-1.2 599
=
( - 2 ) A(l/3)
ans
0.6300 + 1.0911;
=
Regresa un valor de 1 si x es menor
que cero, un valor de O si x es igual a cero
y un valor de + 1 si x es mayor que cero
signe -8)
ans
-1
rem (x,y)
Calcula el residuo de x/y
rem(2 5 , 4)
1
ans
exp(x)
Calcula el valor de e , donde e
es la base para logaritmos naturales,
o aproximadamente 2.7183
exp(10)
ans
2 .2026e+004
Calcula In(x}, el logaritmo natural
de x (a lo base el
10g(10)
ans
2 .3026
Calcula loglO(x), el logaritmo común
de x (a la base 10)
10g10 ( 10)
ans
1
s;gn (x)
=
=
log(x)
10g10(x)
'
=
=
=
Sección
http://jurgensoft.co.cc
3.3
�
Funciones matemáticas elementales
61
Su geren c ia
La notación matemática y la sintaxis MATLAB para elevar
son iguales. Para elevar
e
e
a una potencia no
a la tercera potencia, la notación matemática sería e3•
Sin embargo, la sintaxis MATLAB es
exp(3). A veces los estudiantes también
confunden la sintaxis de la notación científica con los exponenciales. El número 5e3
se debe interpretar como 5 X 103.
-¡"MUi·" -
Uso de la ecuación Clausius-Clapeyron
Los meteorólogos estudian la atmósfera con la intención de comprender y a final de cuentas
predecir el clima. (Véase la figura 3.3.) La predicción del clima es un proceso complicado,
incluso con los mejores datos. Los meteorólogos estudian química, física, termodinámica y
geografía, además de cursos especializados acerca de la atmósfera.
Una ecuación que usan los meteorólogos es la ecuación Clausius-Clapeyron, que, por
lo general, se introduce en las clases de química y se examina con más detalle en clases de
termodinámica avanzada.
En meteorología, la ecuación Clausius-Clapeyron se emplea para determinar la relación
entre presión de vapor de agua de saturación y la temperatura atmosférica. La presión de
vapor de agua de saturación se puede usar para calcular la humedad relativa, un componente
importante de la predicción del clima, cuando se conoce la verdadera presión parcial del agua
en el aire.
La ecuación Clausius-Clapeyron es
donde
po
I1Hv
R.
alr
T
=
=
presión de vapor de saturación para el agua, en mbar, a temperatura T,
calor latente de vaporización para el agua, 2.453 X 106 J/kg,
constante de gas para el aire húmedo, 461 J/kg, Y
temperatura en grados kelvin
(K).
Es raro que las temperaturas en la superficie de la Tierra sean menores que -60°F o
mayores que 120 0F. Use la ecuación Clausius-Clapeyron para encontrar la presión de vapor
de saturación para temperaturas en este rango. Presente sus resultados como una tabla de tem­
peraturas Fabrenheit y presiones de vapor de saturación.
Figura 3.3
Vista del clima de la Tierra
desde el espacio. (Cortesía
de NASA/Jet Propulsion
Laboratory.)
62
Capítulo 3
http://jurgensoft.co.cc
Funciones i nternas de MATLAB
1. Establezca el problema.
Encontrar la presión de vapor de saturación a temperaturas de -60°F a 120°F, con la
ecuación Clausius-Clapeyron.
2. D escriba las entradas y salidas.
Entrada
= 2.453 X 1
!1Hv
06 J/kg
461
= -60°F a 120°F
Rair
J/kg
=
T
Dado que no se especificó el número de valores de temperatura, se elegirá recalcular
cada 10 0F.
Salida
Presiones de vapor de saturación
3. Desarrolle un ejemplo a mano.
La ecuación Clausius-Clapeyron requiere que todas las variables tengan unidades con­
sistentes. Esto significa que la temperatura (T) necesita estar en grados kelvin. Para
cambiar grados Fahrenheit a kelvin, se usa la ecuación de conversión
.
Tk
459.6)
1.8
(TI +
=
(Existen muchos lugares donde encontrar conversiones de unidades. Internet es una
fuente, como los libros de ciencia e ingeniería.)
Ahora se requiere resolver la ecuación Clausius-Clapeyron para la presión de
vapor de saturación PO. Se tiene
ln(6�O
l = (�) (2�3 - t)
_1 �T ))
(( ) (273
= 6.11
X
po
X exp
!1H
v
Rair
X
_
A continuación, se resuelve para una temperatura (por ejemplo, T =
T
=
(O
459.6)
1.8 255.3333
+
O°F) para obtener
=
Finalmente, se sustituyen valores para obtener
o
P
=
6.11
X exp
1))
((2.453461 1 ) (2731 - 255.3333
X
06
X
=
1.5836 mbar
4. Desarrolle.una solución MATLAB.
Cree la solución MATLAB en un archivo-m y luego córralo en el ambiente de comandos:
%Ejempl o 3 . 1
%Con l a ecuación Cl aus i us-Cl apeyron, encontrar l a
%pres ión de vapor de satu raci ón para agua a d i ferentes
%temperaturas
Sección
http://jurgensoft.co.cc
3.3
Funciones matemáticas elementales
%
TF=[-60 : 10 : 120] ;
%Defi ne l a matri z temp en F
TK=(TF + 459 . 6)/1 . 8 ; %Convi erte temp a K
Del ta_H=2 . 45e6 ;
%Defi ne cal or l atente de vapori zación
R_a i r = 461 ;
%Defi ne constante de gas i deal para a i re
%
%Cal cul a l as presi ones de vapor
Vapor_Press u re = 6 . 11*exp«Del ta_H/R_a i r) *(1/2 73 - 1.fTK) ) ;
%Muestra l os resul tados en una tabl a
my_resul ts = [TF ' ,Vapor_Pressure ' ]
. Cuando usted crea un programa MATLAB, es buena idea comentar libremente ( líneas
que comienzan con %). Esto hace que su programa sea más comprensible para otros y
puede hacer que usted lo "depure" más fácilmente. Note que la mayoría de las líneas
de código terminan con un punto y coma, lo que suprime la salida. En consecuencia, la
única información que se despliega en l a ventana de comandos es l a tabla
myJesults:
my_resul ts
-60 . 0000
0 . 0698
- 5 0 . 0000
0 . 1252
-40 . 0000
0.2184
- 30 . 0000
0 . 3 7 14
- 2 0 . 0000
0 . 6163
- 10 . 0000
1 . 0000
O
10 . 0000
2 . 4749
20 . 0000
3 . 7847
1 . 5888
30 . 0000
5 . 6880
40 . 0000
8 . 4102
50 . 0000
12 . 2458
60 . 0000
1 7 . 5 747
70 . 0000
24 . 8807
80 . 0000
34 . 7 729
90 . 0000
48 . 0098
100 . 0000
65 . 5257
1 10 . 0000
120 . 0000
88 . 4608
1 18 . 193 1
5 . Ponga a prueba la solución.
Compare la solución MATLAB con T =
po
Solución MATLAB: po
Solución a mano:
=
=
O °F con la solución a mano:
1 .5888 mbar
1 .5888 mbar
La ecuación Clausius-Clapeyron se puede usar para más que sólo problemas de hume­
dad. Al cambiar los valores de 6.H y R podrá generalizar el programa para tratar con
cualquier vapor de condensación.
3.3.2 Funciones de redondeo
MATLAB contiene funciones para algunas diferentes técnicas de redondeo (tabla 3.2). Proba­
blemente usted esté más familiarizado con el entero más cercano; sin embargo, tal vez quiera
63
64
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MAnAS
Tabla 3.2
Funciones de redondeo
round(x)
Redondea x al entero más cercano
fix(x)
Redondea (o trunca) x al entero más
cercano hacia cero. Note que con esta
función 8.6 se trunca o 8, no a 9
Redondea x 01 entero mós cercano
hacia infinito negativo
Redondea x al entero más cercano
hacia infinito positivo
fl oor(x)
ceil (x)
round (8 . 6)
ans = 9
fix (8 . 6)
ans = 8
fi x (-8.6)
ans = -8
fl oor( -8 . 6)
ans = -9
cei l (-8 . 6)
ans = - 8
redondear arriba o abajo, dependiendo de l a situación. Por ejemplo, suponga que quiere com­
prar manzanas en la tienda. Las manzanas cuestan $0.52 la pieza. Usted tiene $5.00. ¿Cuántas
manzanas puede comprar? Matemáticamente,
$5.00
$0.52/manzana
9.6154 manzanas
Pero, obviamente, usted no puede comprar parte de una manzana, y la tienda no le permitirá
redondear al número más cercano de manzanas. En vez de ello, requiere redondear hacia
abajo. La función MATLAB que logra esto es fix. Por tanto,
fi x (5/0 . 52 )
regresa el número máximo de manzanas que puede comprar:
ans
=
9
3.3.3
Matemáticas discretas
MATLAB incluyé funciones para factorizar números, encontrar denominadores y múltiplos
comunes, calcular factoriales y explorar números primos (tabla 3.3). Todas estas funciones
requieren escalares enteros como entrada. Además, MATLAB incluye la función
rats,
que
expresa un número punto flotante como un número racional, esto es, una fracción. Las mate­
máticas discretas son las matemáticas de números enteros.
Ejercicio de práctica 3. 3
1.
Factorice el número 322.
2. Encuentre el máximo común denominador de 322 y
6.
3. ¿322 es número primo?
4. ¿Cuántos primos existen entre
5. Aproxime
7T
{} y 322?
como número racional.
6. Encuentre lO! (lO factorial).
3.4
FUNCIONES TRIGONOMÉTRICAS
MATLAB incluye un conjunto completo de las funciones trigonométricas estándar y las fun­
ciones trigonométricas hiperbólicas. La mayoría de estas funciones suponen que los ángulos
http://jurgensoft.co.ccSección
Tabla 3 . 3
3.4
Funciones trigonométricas 6S
Funciones que s e usan en matemáticas discretas
factor (x)
Encuentra los factores primos dex
gcd(x,y)
Encuentra el máximo común denominador
dexyy
l cm(x, y)
Encuentra el mínimo común múltiplo
dexyy
rats(x )
Represento x como fracción
factor(12)
ans =
2
2
gcd(10, 1 5 )
ans =
5
l cm(2 , 5 )
ans =
10
l c m(2, lO )
ans =
10
rats (l . 5 )
ans =
3/2
factorial (6)
ans =
720
factorial (x) Encuentra el valor dex factorial (x!). Un
factorial es el producto de todos los
enteros menores que x. Por ejemplo,
6! = 6 X 5 x 4 x 3 X 2 x 1 = 720
Encuentra todos los números primos
menores quex
pri mes (x)
primes (IO)
ans =
5
2
3
isprime(7)
ans =
l
isprime(lO)
ans =
O
Verifica para ver six es un número
primo. Si lo es, la función regresa 1;
si no lo es, regresa O
isprime (x)
3
7
se expresan en radianes. Para convertir radianes a grados o grados a radianes, se necesita sacar
ventaja del hecho de que
grados
=
1T
radianes es igual a 180 grados:
radianes
( 1!O)
y
radianes
=
grados
(1;0)
El código MATLAB que realiza estas conversiones es
degrees
radians
Idea clave: la
mayoría de las funciones
radians '*180/pi;
degrees '* pi/180;
Para realizar estos cálculos, es necesario el valor de
trigonométricas requieren
entrada en radianes.
1T,
de modo que una constante,
pi,
es interna a MATLAB. Sin embargo, dado que 1T no se puede expresar como número en punto
flotante, la constante
pi en MATLAB
sólo es una aproximación de la cantidad matemática
1T.
Usualmente esto no es importante; sin embargo, puede notar algunos resultados sorprenden­
tes. Por ejemplo, para
s in (pi)
ans
=
1 . 2246e-016
cuando usted espera una respuesta de cero.
/
Puede acceder a la función help desde la barra de menú para obtener una lista completa
de funciones trigonométricas disponibles en MATLAB. La tabla 3.4 muestra algunas de las
más comunes.
66
Capitulo 3
Funciones internas de MATLAS
http://jurgensoft.co.cc
Tabla 3.4
Funciones trigonométricas
Encuentra el seno de x cuando x se expresa en radianes
s i n (x)
s;n(O)
O
ans
=
Encuentra el coseno de x cuando x se expresa en radianes
cos(x)
cos (pi )
ans = 1
-
tan (x)
Encuentra la tangente de x cuando x se expresa
en radianes
tan (pi)
ans =
- 1 . 2246e-016
a s i n (x)
Encuentra el arcoseno, o seno inverso, de x, donde x
debe estar entre -1 y 1. La función regresa un ángulo
en radianes entre 1T/2 y-rr/ 2
a si n ( -1)
ans
- 1 . 5 708
Encuentra el seno hiperbólico de x cuando x se expresa
en radianes
s i nh (p i )
ans
1 1 . 5487
Encuentra el seno hiperbólico inverso de x
asinh(l)
ans
0 8814
s i nh(x)
asi nh (x)
=
=
=
.
Encuentra el seno de x cuando x se expreso en grados
s i nd (x)
s i nd (90)
ans
1
=
as i nd (x)
�
Encuentra el seno inverso de x y reporto el resultado
en grados
a si nd (90)
ans =
1
Sugerencia
Con frecuencia, los textos de matemáticas usan la notación sen
¡(x)
para indicar
una función seno inverso, también llamada arcoseno. Usualmente, los estudiantes
se confunden con esta notación e intcntan crear código MATLAB paralelo. Sin
embargo, note que
a
sin"-l(x)
no es un enunciado MATLAB válido, pero, en vez de ello, debe ser
a = asin(x)
Eiercicio de práctica 3.4
Calcule lo siguiente (recuerde que la notación matemática no necesariamente es la
misma que la notación MATLAB):
1. sen(20) para 0= 3r..
2. cos(O) para O
O
2r.; sea O que cambia en pasos de 0.2r..
3. sen-I( l).
4. cos1(x) para
x:S; 1; sea
/
x que cJfubia en pasos de 0.2.
5. Encuentre el coseno de 45°.
a. Convierta el ángulo de grados a radianes y luego use la función coso
b. Use la función cosd.
6. Encuentre el ángulo cuyo seno es 0.5. ¿Su respuesta está en grados o radiancs?
7.
Encuentre la cosecante de 60 grados. Es posible que tenga que usar la función
help para encontrar la sintaxis adecuada.
http://jurgensoft.co.ccSección
3.4
Funciones trigonométricas
.,,,MOI·'.
Uso de las funciones trigonométricas
Gravedad
Uno de los cálculos básicos en ingeniería es encontrar la fuerza resultante sobre un objeto que
1
se empuja o jala en múltiples direcciones. Sumar fuerzas es el cálculo principal que se realiza
en clases de estática y dinámica. Considere un globo sobre el que actúan las fuerzas que se
muestran en la figura 3 . 4 .
Para encontrar la fuerza neta que actúa sobre el globo, se necesita sumar la fuerza debi­
da a la gravedad, la fuerza debida a la flotabilidad y la fuerza debida al viento. Un enfoque es
encontrar la fuerza en la dirección
x
y la fuerza en la dirección y para cada fuerza individual y
luego recombinarlas en un resultado final.
La fuerza en las direcciones x y y se pueden encontrar a partir de trigonometría:
F = fuerza total
F fuerza en la dirección x
Fy = fuerza en la dirección y
x
67
/,1
Viento
Flotabilidad
=
A partir de la trigonometría se sabe que el seno es el lado opuesto sobre la hipotenusa,
de modo que
sen(e)
Figura 3.4
E q uilibrio de fuerzas sobre
un globo.
= F/F
y, por tanto,
I
I
I
I
IFy
I
F
F, = F sen(e)
----6
De igual modo, dado que el coseno es el lado adyacente sobre la hipotenusa,
Fx
I
I
I
-'
F, F cos(e)
=
¡
Se pueden sumar todas las fuerzas en la dirección x y todas las fuerzas en la dirección y y usar
estos totales para encontrar la fuerza resultante:
Fx total
="2..F.
Fy total
XI
="2..Fyl.
Para encontrar la magnitud y el ángulo de F,Ot>.!' se usa de nuevo la trigonometría. La
.
tangente es el lado opuesto sobre el lado adyacente. Por tanto,
tan(e)
Fytotal
F.. total
I
I
I
: Fy total
Se usa una tangente inversa para escribir
e=
_l
tan
( ---)
Fy total
Fx total
--
6
-
(La tangente inversa taITlbién se llama arcotangente; la verá en su calculadora científica como
atan.)
I
I
I
I
I
I
I
--
Fxtotal
-.J
68
Capítulo 3
----- -
lOON
I
I
I
I
I
I
I
http://jurgensoft.co.cc
Funciones internas de MATlAB
Una vez conocido () se puede enCOntrar Ftotal o con seno o COn coseno. Se tiene
17 :
f
--
F
---
x total
= Ftota! cos(())
-90
y al reordenar términos se tiene
Fuerza gravitacional
Ftotal
=
Fx total
COS(e)
Ahora considere de nuevo el globo que se muestra en la figura 3.4. Suponga que la fuerza
debida a la gravedad en este globo particular es de 1 00 N, dirigida hacia abajo. Suponga
aún más que la fuerza boyante es de 200 N, dirigida hacia arriba. Finalmente, suponga que
el viento empuja sobre el globo con una fuerza de 50 N, en un ángulo de 30 grados desde la
horizontal.
Encuentre la fuerza resultante sobre el globo.
200N
1 . Establezca él problema.
Encuentre la fuerza resultante sobre un globo. Considere las fuerzas debidas a grave­
dad, flotabilidad y el viento.
Fuerza boyante
2. Describa las entradas y salidas.
,
SON
'
r4
Entrada
30°
- - - - -- J¿'j�� - - I
I
I
I
I
I
I
-
100N
Gravedad
Fuerza del viento
Dirección
Magnitud
Fuerza
200N
Flotabilidad
SON
Viento
-90 grados
+90
grados
+30
grados
Salida
Se necesita encontrar tanto la magnitud como la dirección de la fuerza resultante
3. Desarrolle un ejemplo a mano.
Encuentre primero los componentes x y y de cada fuerza y sume los componentes:
Fuerza
Componente horizontal
Gravedad
Fx
=
F cos(O)
F x = 100cos(-90°)
Flotabilidad
Fx
F,
Viento
F.,
Fx
Suma
=
=
=
=
F x total
F cos(O)
200cos(+90°)
F cos(O)
50cos(+300)
=
=
=
ON
= ON
=
43.301 N
O + O + 43.301
43.301 N
Componente vertical
Fy
Fy
Fy
=
=
=
F sen(O)
100 sen (-90°)
=
F sen (O)
F)' = 200sen (+90°)
F)'
F)'
=
=
Fytotal
=
F sen (O)
50sen (+30°)
=
=
=
-100N
+200N
+25N
-100 + 200 + 25
125N
http://jurgensoft.co.ccSección
Encuentre el ángulo resultante:
e
e
=
_
-
3.4
_l(Fy!otal)
Fxtotal
tan
--
-1 125 _
70.89 °
tan 4 . 0 33 1
Encuentre la magnitud de la fuerza total:
F.
total
Ftotal
-
=
Fxtotal
cos( e)
43.301
cos(70.890)
=
132.29 N
4. Desarrolle una solución MATLAB.
Una solución es:
"Ej empl o 3_2
el ear , el c
%Defi ne l a entrada
F = [100 , 200 , 50] ;
theta = [-90 , +90 , +30] ;
%Convi e rte ángu l os a radi anes
theta*p i /180 ;
theta
"Encuentra l os componentes x
FX = F . *cos (theta) ;
"Suma l os componentes x
FXtota1 = sum(FX) ;
"Encuentra y suma l os componentes y en el mi smo paso
FYtota1 = sum(F . *s i n (theta» ;
"Encuentra el ángul o resul tante en radi anes
resu1 t_ang1 e = atan (FYtota1 /FXtota1 ) ;
"Encuentra el ángul o resul tante en grados
resu1 t_degrees = resu1 t_ang1 e*180/pi
"Encuentra l a magni tud de l a fuerza resul tante
Ftota1 = FXtota1 /co s ( resu1 t_ang1 e)
=
lo que regresa
resu1 t_degrees =
70 . 8934
Ftota1
132 . 2876
Note que los valores para la fuerza y el ángulo se ingresaron en un arreglo. Esto hace
la solución más general. Note también que los ángulos se convirtieron a radianes. En la
lista del programa, se suprimió la salida de todos los cálculos, salvo el final. Sin embar­
go, mientras se desarrolló el programa, se dejaron los puntos y coma de modo que se
pudieran observar los resultados intermedios.
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. Ahora que ya sabe que fun­
ciona, puede usar el programa para encontrar la resultante de múltiples fuerzas. Sólo
agregue la información adicional a las definiciones del vector fuerza F y el ángulo del
vector theta. Note que se supuso un mundo bidimensional en este ejemplo, pero sería
fácil extender la solución a fuerzas en tres dimensiones.
Funciones trigonométricas
69
70
Capítula 3 Funciones internas de MAlLAS
http://jurgensoft.co.cc
3.5
FUNCIONES DE ANÁLISIS DE DATOS
Analizar datos estadísticos en MATLAB es particularmente sencillo, en parte porque todos los
conjuntos de datos se pueden representar mediante una sola matriz y en parte debido a la gran
cantidad de funciones internas de análisis de datos.
3.5.1
Máximo y mínimo
La tabla 3.5 menciona las funciones que encuentran el mínimo y el máximo en un conjunto de
datos y el elemento en el que ocurren dichos valores.
Tabla 3.5
Máximos y mínimos
max(x)
[1
Encuentro el valor más grande en un vector x. Por ejemplo,
5 31, el valor máximo es 5
si x =
x= [l , 5 , 3] ;
max(x)
ans
5
=
[1
]
Crea un vedor filo que contiene el elemento máximo de cada
columna de uno matriz: x. Por ejemplo, si x
1
=
5 3
2
6'
A
entonces el valor máximo en lo columna es 2,
el valor máximo en lo columna 2 es 5 y el valor máximo
en la columna 3 es 6
[a , b]=max (x)
[1
/
l
Encuentra tanto el valor más grande en un vector x y su ub oción
5 31, el valor máximo se llamo a y
en el vector x. Poro x =
se encuentro que es 5. lo ubicación del valor máximo es el elemento 2
y se llamo b
x=[l , 5 , 3];
[a , b]=max(x)
a
5
b
Z
Creo un vector filo que contiene el elemento máximo de codo columna
de uno motriz x y regreso un vector fila con la ubicación del máximo
x=[l , 5 , 3: 2 , 4 , 6 ] ;
[a , b]=max(x)
a
5
2
6
b
2
Z
1
en codo columna de lo motriz x. Por ejemplo, si x
1
[� � !],
entonces el valor máximo en lo columna es 2, el valor máximo en
lo columna 2 es 5 y el valor máximo en lo columna 3 es 6 .
Estos máximos ocurren en lo filo 2, filo y filo 2, respectivamente
1
max (x , y)
Creo uno motriz del mismo tamaño que x y y. (Tonto x como y
deben tener el mismo número de filos y columnos.) Codo elemento
en lo motriz resultante contiene el valor máximo de los posiciones
correspondientes en x y y. Por ejemplo,
si x
[� � �]
y
resuItonte sera ans =
•
m i n (x)
x= [ l , 5 , 3: 2 , 4 , 6]:
max(x)
ans =
5
6
Z
[1
[\0 � �],
[10 5 A]
y=
2
8
entonces la motriz
x=[l , 5 , 3 ; 2 , 4 , 6];
y=[lO , Z , 4: 1 , 8 , 7];
max (x , y)
ans =
5
10
4
Z
7
8
7
1
Encuentra el valor más pequeño en un vector x. Por ejemplo,
5 31, el volor mínimo es
si x =
x= [l , 5 , 3];
m i n (x)
ans =
1
http://jurgensoft.co.cc
Sección
3.5
Crea un vector fila que contiene el elemento mínimo de cada
columna de una matriz x. Por ejemplo, si
x
1 1,
[� � �],
entonces el valor mínimo en la columna es
el valor mínimo
en la columna 2 es yel valor mínimo en la columna 3 es 3
4
[a,b]=min(x)
x=[l, S, 3 ; 2, 4, 6 ] ;
min(x)
ans
1
3
4
Encuentra tanto el valor más pequeño en un vector x ysu ubicación
en el vector x. Para x [1 53], el valor mínimo se llama a y
se encuentra que es . la ubicación del valor mínimo es el elemento
yse llama b
x=[1, 5,3] ;
[a, b]=min(x)
a
1
b
1
Crea un vector fila que contiene el elemento mínimo de cada
columna de una matriz x yregresa un vector fila con la ubicación
del mínimo en cada columna de la matriz x.
x=[l, S, 3 ; 2, 4, 6] ;
[a, b]=min(x)
a
3
1
4
b
1
1
2
1
1
Por eiemplo, si
x
1
=
= [�
� �l
entonces el valor mínimo
=
en la columna es 1 , el valor mínimo en la columna 2 es 4
yel valor mínimo en la columna 3 es 3. Estos mínimos ocurren
en la fila
fila 2 yfila 1, respectivamente
1,
min(x, y)
Funciones de análisis de datos
Crea una matriz del mismo tamaño que x y y. (Tanto x como y
deben tener el mismo número de filas y columnas.) Cada elemento
en la matriz resultante contiene el valor mínimo de la
s ciOnes
correspondientes en x yy. Por ejemplo, si
Y [101 2 4]
8
'
x
=
[�
'
�!
� �] y
7' entonces la matriz resu Itante sera ans
=
[11 42 �]
x=[l, 5, 3 ; 2 , 4, 6] ¡
y=[1O, 2 , 4¡ 1, 8, 7 ] ;
m;n(x, y)
ans =
1
2
3
6
1
4
Sugerencia
Todas las funciones en esta sección funcionan sobre las columnas en matrices
bidimensionales. Si su análisis de datos requiere que evalúe datos en filas, los
datos se debe,n transponer. (En otras palabras, las filas se deben volver columnas
y las columnas se deben volver filas.) El operador transpuesto es un una comilla
sola ('). Por ejemplo, si quiere encontrar el valor máximo en cada fila de la matriz
x
use el comando
max(x')
que regresa
ans=
5
6
[�
5
4
71
72
Capítulo 3
http://jurgensoft.co.cc
Funciones inlernas de MATlAS
Eiercicio de práctica 3.5
Considere la siguiente matriz:
4
2
3
x=
1
90
55
78
84
85
65
82
75
75
79
93
92
1. ¿Cuál es el valor máximo en cada columna?
2. ¿En cuál fila se presenta dicho máximo?
3.
¿Cuál es el valor máximo en cada fila? (Tendrá que transponer la matriz para
responder esta pregunta.)
4.
¿En cuál columna ocurre el máximo?
5. ¿Cuál es el valor máximo en toda la tabla?
3.5.2
Media y mediana
�
media: el promedio de
Existen muchas formas de encontrar el valor "
todos los valores en el
tadística, la
conjunto de datos
promedio. La media es la suma de todos los valores, divididos por el número total de valores.
edio" en un conjunto de datos. En es­
media de un grupo de valores probablemente es lo que la mayoría llamaría el
Otro tipo de promedio es la
mediana, o el valor medio. Existe un número igual de valores
mediana: el valor
tanto más grandes como más pequeños que la mediana. MATLAB proporciona funciones para
medio en un conjunto de
encontrar tanto la media como la mediana, como se muestra en tabla
3.6.
datos
Tabla 3.6
Promedios
mean (x)
Calcula el valor medio (o valor promedio)
de un vector x. Por ejemplo, si
x= [1
5 3t el valor medio es 3
x=[l, 5 , 3 ];
mean (x)
ans =
3.0000
Regresa un vector fila que contiene el valor
medio de cada columna de una matri% x.
x=[l, 5, 3 ; 2 , 4, 6];
mean (x)
ans =
1.5
4.5
4.5
[�
Por ejemplo, si x
5
.4
entonces el valor medio de lo columna 1 es
1.5, el valor medio de la columna 2 es 4.5
y el valor medio de la columna 3 es .4.5
median(x)
Encuentra la mediana de los elementos de
3L
un vector x. Por ejemplo, si x = [1 5
el valor mediano es 3
x= [l, S, 3 ];
median (x)
ans =
3
Regreso un vector filo que contiene el valor
mediana de codo columna de uno matri% x.
x=[l, 5, 3 ;
Poe ei,mp�, , ;
x
�
[� ! n
entonces
el valor mediano de la columna 1 es 2,
el valor mediano de lo columna 2 es 5 y
el valor mediana de lo columna 3 es .4
-� -
-------
2 , 4, 6;
3 , 8 , 4 ];
median (x)
ans
2
5
4
Sección 3.5
http://jurgensoft.co.cc
Ejercicio de práctico 3.6
Considere la siguiente matriz:
x
1.
-
[�
90
55
78
84
85
65
75
75
82
92
79
93
Funciones de análisis de datos 73
]
¿Cuál es el valor medio en cada columna?
2. ¿Cuál es la mediana para cada columna?
3. ¿Cuál es el valor medio en cada fila?
4.
3.5.3
¿Cuál es la mediana para cada fIla? ¿Cuál es la mediana para toda la matriz?
Sumas y productos
Con frecuencia es útil sumar todos los elementos en una matriz o multiplicar todos los ele­
mentos juntos. MATLAB proporciona algunas funciones para calcular tanto sumas como pro­
ductos, como se muestra en la tabla 3.7.
Tabla 3.7
s um(x)
Sumas y productos
Suma los elementos en el vector x.
Por ejemplo, si x = [1
5
3J,
la suma es 9
x=[1, S, 3 ] ;
s um(x)
ans
9
Calcula un vector fila que contiene la sumo
de los elementos en cada columno de una
x=[l, S, 3 ; 2 , 4, 6] j
s um(x)
ans
3 9 9
•
matriz
x.
Por el.emplo, SI'
x =
[1 � �],
entonces
la suma de la columna 1 es 3,
la suma de la columna 2 es 9 y
la suma de lo columno 3 es 9
prod(x)
2
Calcula el producto de los elementos de
un vector x. Por eiemplo, si x = [1 5
el producto es 15
Calcula un vector fila que contiene el
producto de los elementos en coda
columna de una matriz x.
Por eiemplo, si
x
=
[� � �],
1
3 1
entonces
el producto de la columna es 2,
el producto de la columna 2 es 20 y
el producto de la columna es 8
3],
x=[1, S, 3 ];
prod(x)
ans =
15
x= [1, 5 , 3 ; 2 , 4 , 6];
prod(x)
ans =
2 20 18
(Continúa)
74
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATlAB
Tabla 3 .7 (continuación)
cumsum(x)
Calcula un vector del mismo tamaño que un
x=[l , 5 , 3 ] ;
cumsum(x)
ans
1 6 9
vector x y contiene sumas acumuladas de
los elementos del mismo. Por ejemplo,
si x = [1
5 3], el vector resultante
es x= [1
6 9]
Calcula una matriz que contiene la suma
acumulada de los elementos en cada
columna de una matriz x. Por ejemplo, si
x
x
[� � �J
[� � �]
la matriz resultante es
�
c umprod(x) Calcula un vector del mismo tamaño que un
vector x y contiene productos acumulados
de los elementos del mismo. Por ejemplo,
si x = [1
5 3], el vector resultante
es x = [1 5
15]
Calcula una matriz que contiene el producto
acumulado de los elementos en cada columna
de una matriz x. Por ejemplo,
si x
x
G � �J
[� :0 ]
la matriz resultante es
x= [1, 5 , 3 ; 2 , 4, 6];
cumsum(x)
ans =
1 5 3
3 9 9
x=[l, S, 3 ] ;
cumprod(x)
ans
15
1
5
x= [1, S, 3 ; 2 , 4 , 6];
c umprod(x)
ans
1
5
3
18
2 20
3
18
3.5.4 Valores de ordenación
La tabla 3.8 menciona varios comandos para ordenar datos en una matriz, en orden ascendente
o descendente.
3.5.5 Determinación del tamaño de matriz
MATLAB ofrece dos funciones (tabla
matriz:
size y length.
3.9)
que le permiten determinar cuán grande es una
3.5.6 Varianza y desviación estándar
desviación
estándar: medida de
La desviación estándar y la varianza son medidas de cuánto varían los elementos de
un
con­
junto de datos unos con respecto a otros. Todo estudiante sabe que la calificación promedio en
dispersión de los valores
un examen es importante, pero también es necesario conocer las calificaciones alta y baja para
en un conjunto de datos
tener una idea de qué tan bien le fue. Las calificaciones de examen, como muchos tipos de
Sección
http://jurgensoft.co.cc
Tabla 3.8
3.5
Funciones de ordenamiento
sort(x)
Ordena los elementos de un vector x
en orden ascendente. Por ejemplo,
5 3], el vector
si x = [1
resultante es [1
3 5]
x=[l , 5 , 3]:
sort(x)
ans =
1 3 5
Ordena los elementos en cada
columna de una matriz x en orden
ascendente.
Por ejemplo, si x
x=[l , S, 3 ; Z, 4 , 6] ;
sort(x)
ans =
1
4
3
5
Z
6
[1
]
la matriz resultante es
x =
4 3
2 5 6
sort (x , t descend') Ordena los elementos en cada
columna en orden descendente
sortrows(x)
x= [1 , 5 , 3 j 2 , 4 , 6] ;
sort(x , 'descend')
ans =
5
6
Z
1
4
3
::::::: ["f1 !]
Ordena las filas en una matriz sobre x=[3 , 1 , 3: 1 , 9 , 3:4 , 3 , 6]
la base de los valores en la primera
sortrows(x)
'"' i
co o fila. ans
1 9 3
3 1 2
4 3 6
4 3 6
entonces usar el comando sortrows
moverá la fila media hacia la
posición superior
sortrows(x , n)
Tabla 3.9
Funciones de análisis de dotos
Ordeno los filas en uno matriz
sobre la base de los valores en
la columna n
sortrows(x , 2)
ans
2
3
1
4
3
6
9
1
3
Funciones de tamaño
s i ze(x)
Determina el número de Filas y
columnas en la motriz x. (Si x es
un arreglo multidimensional, siz:e
determino cuántas dimensiones
existen y cuán grandes son.)
[a , b] = si ze(x) Determino el número de filas y
columnas en la matriz x y asigno
el número de filas a a y el número
de columnas a b
l ength(x)
Determina la dimensión más gronde
de uno matriz x
x=[l , 5 , 3 ; 2 , 4 , 6]:
si ze(x)
ans =
2
3
[a , b]=s;ze(x)
a
2
b =
3
x= [ l , 5 , 3 ; Z , 4 , 6] ;
l ength(x)
ans
3
----
7S
76
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAB
E j er c i c i o d e p r á c t i ca 3 . 7
Considere la siguiente matriz:
Fl!
90
85
75
55
65
75
78
82
79
84
92
93
]
1 . Use la función size para determinar el número de filas y columna en esta
matriz.
2. Use la función sort para ordenar cada columna en orden ascendente.
3 . Use la función sort para ordenar cada columna en orden descendente.
4. Use la función sortrows para ordenar la matriz de modo que la primera
columna esté en orden ascendente, pero cada fila todavía conserve sus datos
originales. Su matriz se debe parecer a ésta:
+,,,!ti4,."
.
84
92
93
55
65
75
78
82
79
90
85
75
]
Dat os del cl ima
El National Weather Service recopila cantidades masivas de datDs del clima todos los días
(figura 3.5). Dichos datos están disponibles a todas las personas en el servicio en línea de
la agencia en http://cdo.ncdc.noaa.gov/CDO/cdo. El análisis de grandes cantidades de datos
puede ser confuso, así que es buena idea comenzar con un pequeño conjunto de datos, desa­
rrollar un enfoque que funcione y luego aplicarlo a conjuntos de datos más grandes en los que
se esté interesado.
Del National Weather Service se extrajo información de precipitaciones para una loca­
lidad para todo 1 999 y se almacenó en un archivo llamado WeathecData.xls. (La .xls indica
que los datos están en una hoj a de cálculo de Excel.) Cada fila representa un mes, de modo que
hay 1 2 filas, y cada columna representa el día del mes ( 1 a 3 1 ), de modo que hay 3 1 columnas.
Dado que no todos los meses tienen el mismo número de días, existen datos perdidos para
Figura 3.5
Fotografía satelital d e
un huracán. (Cortesía
de NASA/Jet Propulsion
laboratory.)
Sección
http://jurgensoft.co.cc
Tabla 3.1 0
3.5
Funciones de análisis de datos
Datos de precipitación de Asheville, Carolina del Norte
1 999
Día 1
Día 2
Día 3
Día 4
Enero
O
O
272
O
61
2
1 03
O
62
O
17
2
27
1
O
O
13
Mayo
260
47
5
86
O
O
O
O
O
O
O
Junio
O
O
30
42
14
14
8
-99999
Julio
O
O
O
O
5
O
O
O
Agosto
O
45
O
O
O
O
O
O
Septiembre
O
O
O
O
1 38
58
10
- 99999
Octubre
O
O
O
14
O
O
O
Noviembre
1
1 63
5
O
O
O
O - 99999
Diciembre
O
O
O
O
O
O
O
Febrero
Marzo
Abril
etc
. . . .
Día 28
Día 29
Día 30
Día 3 1
O
O
33
33
O
-99999 -99999 -99999
O
8
O - 99999
O
algunas localidades en muchas de las últimas columnas. Se indica que los datos están perdidos
para dichas localidades al colocar en ellos el número - 99999. La información de precipita­
ción se presenta en centésimas de pulgada. Por ejemplo, el I de febrero hubo 0.6 1 pulgadas de
precipitación, y el 1 de abril hubo 2.60 pulgadas de precipitación. En la tabla 3. 1 0 se presenta
una muestra de los datos, con etiquetas para dar claridad; sin embargo, los datos en el archivo
sólo contienen números.
Use los datos en el archivo para encontrar lo siguiente:
a. la precipitación total en cada mes.
b. la precipitación total durante el año.
c. el mes y día en que se registró la precipitación máxima durante el año.
1. Establezca el problema.
Con los datos del archivo WeathecData.xls, encontrar la precipitación total mensual, la
precipitación total del año y el día en el que llovió más.
2. Describa las entradas y salidas.
Entrada
La entrada para este ejemplo se incluye en un archivo de datos llamado
Weather_Data.xls y consiste en una matriz bidimensional. Las filas representan un
mes y las columnas representan un día.
Salida La salida debe ser la precipitación total para cada mes, la precipitación total
para el año y el día en el que la precipitación fue un máximo. Se decidió presentar la
precipitación en pulgadas pues en el enunciado del problema no se especificaron otras
unidades.
3. Desarrolle un ejemplo a mano.
Para el ejemplo a mano, trate sólo con un pequeño subconjunto de los datos. La infor­
mación que se incluye en la tabla 3 . 1 0 es suficiente. El total para enero, días l a 4, es
total_l
=
(O ¿- O + 272 + 0)11 00 = 2.72 pulgadas
77
78
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAB
El total para febrero, días 1 a 4, es
total_2
=
(6 1 + 103 +
O + 2)1100
=
1 . 66 pulgadas
Ahora sume los meses para obtener el total combinado. Si la muestra "año" sólo es
enero y febrero, entonces
total
=
total_l
+
total_2
=
2.72 + 1 .66
=
4.38 pulgadas
Para encontrar el día en el que ocurrió la precipitación máxima, primero encuentre el
máximo en la tabla y luego determine cuál fila y cuál columna está en ella.
El trabajar en un ejemplo a mano le permite formular los pasos que se requieren
para resolver el problema en MATLAB .
4. Desarrolle una solución MATLAB.
Primero se necesitará guardar el archivo de datos en MATLAB como una matriz. Pues­
to que el archivo es una hoja de cálculo de Excel, la manera más sencilla es usar el
Import Wizard (asistente de importaciones). Haga doble dic en el archivo en la ventana
de directorio actual para lanzar el Impon Wizard.
,
Una vez que el Impon Wizard complete la ejecución, en la ventana del área de
trabajo aparecerá el nombre de variable Sheet!. (Véase la figura 3.6; su versión puede
nombrar la variable Weatber_data.)
Puesto que no todos los meses tienen 31 días, existen algunas entradas para días
no existentes. En dichos c ampos se insertó el valor - 99999. Puede hacer doble dic en
el nombre de variable, Sheet!, en la ventana del área de trabajo, para editar esta matriz
O. (Véase la figura 3.7.)
Ahora escriba el archivo-m script para resolver el problema:
y cambiar los valores "fantasma" a
cl c
%Ejempl o 3 . 3 -Datos del cl i ma
%En este ej empl o se encontrará l a preci p i tac i ón total
%para cada mes , y para todo el año , con un arch i vo de datos
0.0
0.0
1 03.0
0.0
47.0
0.0
0.0
0.0
00
0 .0
61 .0
2.0
260.0
6
7
al
9
10
11
T
figura 3.6
Import Wizard de MATLAS.
121
13
14
15
0.0
0.01
1 .0
0.0
<
. ... l _ce
1 .0
0.0
45.0
0.0
0.0
1 63.0
o.o !
3
272.0
0.0
1 7.0
0.0
00
30.0
0.0
0.0
0.0
0.0
5.0
0.0
0.0 ....
20
27.0
0.0
0.0
42.0
0.0
0.0
0.0
14.0
0 .0
0.0
Sección
http://jurgensoft.co.cc
.,
3.5
0 ,.., 1
". , _
w(il"k�
I i¡¡NlIIne�L:.� Ii. él
0 · J.S::'3
V�
��t:U
�ans
�X
, x
�
.
"'"
< 1 2><3 1 do .. 1 ..
[2 5 6;1 4 3] 2x
[1 5 3;2 4 6] 2x
eiA".Wfdltt'� ��1
IU :t � é, ¡ élll.
1
1
2
3
,
s
•
,
1
�-
I"l
""ar.entct�J,���1
(ru'rItnlIM tfftory'
sort { x , ' descend ' )
• x
lO
ti
,.,
al
6
5
4
3
5, 3; 2, 4, 6
1-2
1
x= [ l ,
sort (x/ ' descend ' )
2
o
1 03
o
1
o
o
01
45
o
O
1 63
O
.. ,
»1
, x
S
°
O.
o
01
5,
o
o
o
O
1 56
o
o
-.
6
o
o
10
1
1
1 1 51
o:
!B rn B B [O-;-;:-
o:
01
01
31
491
o'
•
...
9i
2,
o
O.
� 1!
01
71
.gO,�o:�
o'
Di
Oi
01
o,
o
O:
4 51
�
�,
01
01
o,
•
26
o
30
5
o
i::¡
1
� ji!
o
'---01-- 0H1
01
O
."
I
.
al
Figura 3.7
6
5
4
3
5 , 3 ; 2 , 4 , 6 '·
2
1
x= [ l ,
sort ( x ,
ele
....,.
Y
2
260
47
o
o
o
o
O
1
O
5 , 3 ; 2 , 4 , 6 :.!J " k¡f�-
x= [ l ,
I
'i
-"
a
61
"""l'" 3
3
,
272:
o
o'
2
1 7:
271
o:
01
o:
o
30:
42:
o:
Di
O'
O'
O'
O'
14
Di
o
5
O
o'
-j !JI
I
Editor de arreglos de
MATLAS. En esta ventana
descend ' )
¡�:::::---:I
J1
4
%Tambi én se encontrarán el mes y d í a cuando l a
%prec i p i taci ón fue l a máxi ma
%
wd=Sheetl ;
%Use el operador transpuesto para camb i a r fi l as a col umnas
wd = wd ' ;
%Encuentra l a suma de cada col umna , que es l a suma para cada
%mes
monthl y_total =sum(wd)/lOO
%Encuentra el total anual
yearl y_total = sum (monthl y_total )
%Encuentra el máximo anual y el d í a cuando ocu r re
[maxi mum_preci p , month] =max (max(wd) )
%Encuentra el máx i mo anual y el mes cuando ocu rre
[maxi mum_preci p , day]=max (max(wd ' ) )
Note que el código no comienza con los usuales comandos cIear, ele, porque ello limpia·
ría el área de trabajo, lo que efectivamente borraría la variable
renombra
Sheetl . A continuación se
Sheetl a wd, pues es más corto de escribir (y representa weather_data: datos
del clima). Puesto que la variable se usará mucho, es buena idea hacerla corta, para mini·
mizar las posibilidades de errores causadas por errores de escritura.
A continuación, se traspone la matriz
wd, de modo que los datos para cada mes
sum para
están en una columna en lugar de una fIla. Esto permite el uso del comando
sumar todos los valores de precipitación para el mes.
Ahora se pueden sumar todos los totales mensuales para obtener el total para el
año. Una sintaxis alternativa es
yearl y_total = sum (sum (wd) )
79
&m!J
-
�
<> ,..· f . 11 �_3 70Xrett Or-«fc.iy�JC:v.+yDoculr��Wo9lJ9b Iel Err �''J'Cht!4:II ! ,�er 3e x � Pro!kn\ m_I1es !1 :! ID
iJe Eót. � � '!'Mow
snortc....s -0HawloAdd !lJ �New
Funciones de análisis de datos
se puede editar el arreglo y
cambiar todos los "valores
fantasma" de - 99999 a O .
80
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATlAB
Encontrar la precipitación máxima diaria es sencillo; lo que hace difícil este ejemplo es
determinar el día y mes cuando ocurrió el máximo. El comando
[maxi mum_preci p , month] = max(max(wd) )
es más fácil de entender si se descompone en dos comandos. Primero,
[a , b] = max(wd)
regresa una matriz de máximos para cada columna, que en este caso es el máximo para
cada mes. Este valor se asigna al nombre de variable
a. La variable b se convierte en
una matriz de números índice que representan la fila en cada columna en la que ocurrió
el máximo. Entonces, el resultado es
a =
Col umns 1 through 9
260
78
135
2 72
Col umns 10 through 12
97
156
255
115
240
157
158
138
6
25
12
24
28
b
Col umns
3
Col umns
5
1 through 9
1
27
18
10 through 12
14
26
Ahora, cuando se ejecuta el comando max la segunda vez, se determina la precipitación
máxima para todo el conj unto de datos, que es el valor máximo en la matriz
a partir de la matriz
a. Además,
a, se encuentra el número índice para dicho máximo:
[c , d]=max(a)
e
2 72
d
1
Estos resultados dicen que la precipitación máxima ocurrió en la columna
matriz
1 de la
a, lo que significa que ocurrió en el primer mes.
De igual modo, la trasposición de la matriz wd (es decir, obtener wd') y en­
contrar el máximo dos veces permite encontrar el día del mes en el que ocurrió el
máximo.
Existen varias cosas que debe notar acerca de la pantalla MATLAB que se mues­
tra en la figura 3.8. En la
como
ventana del área de trabajo, se mencionan tanto Sheet!
wd. Sheet! es una matriz 12 X 3 1, mientras que wd es una matriz 3 1 X 1 2. Todas
las variables que se crearon cuando se ejecutó el archivo-m ahora están disponibles a la
ventana de comandos. Esto hace fácil la realización de cálculos adicionales en la ven­
tana de comandos después de que el archivo-m completa su corrida. Por ej emplo, note
que se olvidó cambiar el valor maximum_precip de centésimas de pulgada a pulgadas.
Agregar el comando
maxi mum_preci p=maxi mum_preci pj100
Sección
http://jurgensoft.co.cc
S·r;ltl, _ "�If_;., �ti t-�
J _m_to ....
....,
EB Weatl1er_Data
EB day
EB maximum-pr...
EB month
EB monthly_total
EBwd
EB yearly_total
-
<12x31 dO'-lt
3
272
<1x12 doub�
<31x12 dou
53.4
;;:.;;;;;;;���
;;
3.5
Funciones de análisis de datos
81
�Qt�I:: �s-erd-s���e'+kf��!�_8ook\ChoJ;(er�TLAB�EOC1 (!j
monthly_total
=
Columns 1 through 6
5 . 1500
3 . 8 500
4 . 7400
3 . 21 0 0
6 . 3300
2 . 78 0 0
2 . 4900
5 . 6600
4 . 68 0 0
2 . 8600
8 . 48 0 0
Columns 7 through 12
3 . 17 0 0
yearly_total
53 . 40 0 0
=
maximum-p recip
212
=
Figura 3.8
_
_
_
_
_
==
"=
=<_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
-=
_
_
_
_
_
_
:...-;.
---'
=
*
Resultados de los cólculos
de precipitación.
corregiría dicho error. Note también que el archivo Weather_Data.x.ls todavía está en
ventana de historia de comandos refleja
ventana de comandos; no muestra los comandos
el directorio actual. Finalmente, note que la
sólo los comandos emitidos desde la
ejecutados desde un archivo-m.
5. Ponga a prueba la solución.
Abra el archivo WeathecData.x.ls y confirme que l a precipitación máxima ocurrió el
3 de enero. Una vez que confirme que su programa archivo-m funciona, puede usarlo
para analizar otros datos. El National Weather Service mantiene registros similares para
todas sus estaciones de registro.
34.13%
34.13%
datos que son importantes en ingeniería, con frecuencia se distribuyen en una curva con
forma de "campana". En una distribución normal (gaussiana) de una gran cantidad de datos,
aproximadamente el 68% de los datos cae dentro de una desviación estándar (sigma) de
la media
(±
un sigma). Si extiende el rango a una variación de dos sigma
(±
dos sigma),
aproximadamente 95% de los datos deben caer dentro de estas fronteras, y si va hacia las
tres sigma, más del 99% de los datos deben caer en este rango (figura 3.9). Por lo general,
�
021;\""
-2 -1
"�
-3
.
o
1
/,.-3215%
. 2
mediciones como la desviación estándar y la varianza son significativas sólo con grandes
Figura 3.9
conjuntos de datos.
Distribución normal.
"�
3
82
Capítulo 3
Funciones internas de MATlAB
varianza: desviación
estándar al cuadrado
http://jurgensoft.co.cc
Considere los datos que se grafican en la figura 3 . 1 0. Ambos conj untos de datos tienen
el mismo valor promedio (media) de 50. Sin embargo, es fácil ver que el primer conjunto de
datos tiene más variación que el segundo.
La definición matemática de varianza es
N
varianza
= (J.2
:¿ (X - ¡.t)2
k =l k
_
_
_
_
N-1
En esta ecuación, el símbolo ¡.t representa la media de los valores
xk
en el conjunto de datos.
Por ende, el término xk - f.L simplemente es la diferencia entre el valor real y el valor promedio.
Los términos se elevan al cuadrado y se suman:
Finalmente, se divide el término suma entre el número de valores en el conjunto de datos
(N),
menos 1 .
La desviación estándar
(u),
que se usa con más frecuencia que l a varianza, sólo e s la
raíz cuadrada de la varianza.
Distribución de calificaciones
Calificaciones
120 r-----�----_.--�r_--�--�
� 100
;@
80
�
60
B
.g
8
40
Z
20
El
-;::1
Número de estudiantes
20
40
60
Calificación
80
100
80
100
100 r---�--�---�----�
O ------L-----�--�--�
O
200
400
600
800
1000
Número de estudiantes
Figura 3. 1 0
Calificaciones para dos pruebas diferentes.
0 '------'-"O
20
Calificación
Sección
http://jurgensoft.co.cc
3.5
Funciones de análisis de datos 83
La función, MAlLAB que se usa para encontrar la desviación estándar es std. Cuando
esta función se aplica en el gran conjunto de datos que se muestra en la figura 3 . 1 0, se obtiene
la siguiente salida:
std(scores1)
ans =
2 0 . 3653
std (scores2 )
ans
9 . 8753
En otras palabras, aproximadamente 68% d e los datos en e l primer conjunto de datos cae entre
el promedio, 50, y :::t:: 2 0.3653. De igual modo, 68% de los datos en el segundo conjunto de
datos cae entre el mismo promedio, 50, y :::t:: 9 .8753.
La varianza se encuentra en forma similar con la función var:
var(scores1)
ans =
414 . 7454
var(scores2 )
ans =
9 7 . 5209
En la tabla 3 . 1 1 se muestra l a sintaxis para calcular tanto la desviación estándar como
la varianza.
Tabla 3.1 1
Funciones estadlsticas
std(x) Calculo lo desviación estándar de los valores
5 31,
en un vector x. Por ejemplo, si x = [1
lo desviación estándar es 2. Sin embargo,
para muestras pequeños de datos, usualmente
no se calculan desviaciones estándar
Regreso un vector fila que contiene la desviación
estándar calculada para cada columna de una
motriz x. Por ejemplo, si
x
[� � �],
lo desviación estándar en la columna 1 es 0.7071 ,
la desviación estándar en lo columna 2 es 0.7071 y
la desviación estándar en la columna 3 es 2 . 1 2 1 3
x=[ 1 , S, 3 ];
std (x)
ans =
2
x= [1, 5 . 3 ; 2 . 4 . 6 ] ;
std(x)
ans ..
0 . 70 7 1
0 . 7071
2 . 12 1 3
De nuevo, para muestras pequeñas de datos,
usualmente no se calculan desviaciones estándar
var(x) Calcula la varianza de los datos en x. Por
ejemplo, si X " [1
5 31, lo varianza es A.
Sin embargo, para muestras pequeñas de
datos, usualmente no se calculo lo varianza.
Note que la desviación estándar en este
ejemplo es la raíz c uadrada de la varianza
var(x)
ans
4
84
Capítulo 3
Funciones i nternas de MATlAB
http://jurgensoft.co.cc
E j er c i c i o d e p r á c t i c a 3 . 8
Considere la siguiente matriz:
Fl¡
90
85
55
65
8
82
84
92
7
5
5
7
9
7
93
7
l
1 . Encuentre la desviación estándar para cada columna.
2. Encuentre la varianza para cada columna.
3. Calcule la raíz cuadrada de la varianza que encontró para cada columna.
4. ¿Cómo se comparan los resultados del problema 3 contra la desviación
estándar que encontró en el problema 1 ?
-'iJ?ti>«-,,-
Datos cl imatol ógicos
Los climatólogos examinan datos del clima durante largos periodos de tiempo, con la inten�
ción de encontrar un patrón. En Estados Unidos, desde 1 850, se conservan datos con fiables
del clima; sin embargo, la mayoría de las estaciones de registro sólo se asentaron desde
y
1 930
1 940 (figura 3 . 1 1 ). Los climatólogos realizan cálculos estadísticos sobre los datos que re­
copilan. Aunque los datos en WeathecData.xls representan sólo una localidad para un año,
se pueden usar los datos para practicar cálculos estadísticos. Encuentre la precipitación diaria
media para cada mes y la precipitación diaria media para el año, y luego encuentre la desvia­
ción estándar para cada mes y para el año.
1. Establezca el problema.
Encontrar la precipitación diaria media para cada mes y para el año, sobre la base de
los datos en WeathecData.xls. Además, encontrar la desviación estándar de los datos
durante cada mes y durante todo el año.
2. Describa las entradas y salidas.
Entrada
Use el archivo WeathecData.xls como entrada al problema
Salida
Encontrar
la precipitación diaria media para cada mes.
la precipitación diaria media para el año.
Figura 3 . 1 1
Un huracón sobre Florida.
(Cortesía de NASA/Jet
Propulsion Laboratory.)
Sección
http://jurgensoft.co.cc
3.5
Funciones de análisis d e datos
l a desviación estándar d e los datos d e precipitación diaria para cada mes.
la desviación estándar de los datos de precipitación diaria para el año.
3 . Desarrolle un ejemplo a mano.
Use sólo los datos para los primeros cuatro días del mes:
Promedio de enero = (O + O + 272 + 0)/4 = 68 centésimas de pulgada de precipi­
tación, o 0.68 de pulgada.
La desviación estándar se encuentra de la siguiente ecuación:
0" =
Use sólo los primeros cuatro días de enero, calcule primero la suma de los cuadrados de
la diferencia entre la media y el valor real:
(O
- 68)2 +
(O
- 68? + (272 - 68) 2 +
(O
- 68)2
=
5 5,488
Divida entre el número de puntos de datos menos 1 :
55,488/(4 - 1 )
=
1 8,496
Finalmente, saque la raíz cuadrada, para obtener 1 36 centésimas de pulgada de precipi­
tación, o 1 . 36 pulgadas.
4. Desarrolle una solución MATLAB.
Primero se necesita cargar el archivo WeatherJ)ata.xls y edite las entradas - 99999.
Aunque esto se podría hacer en una forma similar al proceso descrito en el ejemplo 3.3,
existe una forma más sencilla: se podrían guardar los datos del ejemplo 3.3 en un archi­
vo, de modo que estén disponibles para usar más adelante. Si se quiere guardar toda el
área de trabajo, sólo escriba
save <fi l ename>
donde filename es un nombre de archivo definido por el usuario. Si sólo quiere guardar
una variable, escriba
save <fi l ename>
<vari abl e_name>
que guarda una sola variable o una lista de variables a un archivo. Todo lo que se requie­
re guardar es la variable wd, de modo que el siguiente comando es suficiente:
save wd wd
Este comando guarda la matriz wd en el archivo wd.mat. Verifique la ventana de direc­
torio actual para asegurarse de que se almacenó wd.mat (figura 3 . 12).
Ahora, el archivo-m que se creó para resolver este ejemplo puede cargar los datos
automáticamente:
cl ear , cl c
% Ejempl o 3 . 4 Datos cl i matol ógi cos
% En este ejempl o , se encuentra l a prec i pi taci ón d i ar i a
% med i a para cada mes
% y l a prec i p i taci ón d i ar i a med i a par el año
% Tambi én se encuentra l a desvi aci ón estándar de l os datos
%
85
86
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAB
monthly_total
=
Col umns 1 through
8 . 4800
Columns
3 . 1700
7
5 . 1500
through
2 . 7800
max�-precip
[1 Example3_6.asy ASV File
l1i Example3_6_m M.file
272
day
»
»
�%--
12/30 /03
6
12
3 . 8500 _
4 . 7400
3 . 2100
6 . 3300
2 . 4900
5 . 6600
4 . 6800
2 . 8600
=
=
3
save wd wd
8 :21
§d:weather_oata ;
Figura 3. 1 2
El directorio actual
registra el nombre del
archivo guardado.
ele
format eOllpact
ele
save wd wd
%
Camb i a r el formato a bank con frecuenci a hace l a sal i da
%
más fáci l de l ee r
format bank
% Al guardar l a vari abl e wd del ú l t i mo e j empl o , está
%
d i sponi bl e para usar en este ej empl o
l oad wd
Average_dai l y_preci p_monthl y
•
mean(wd)
=
Average_dai l y-prec i p-yearl y = mean(wd( : ) )
%
Otra forma de encontrar l a prec i p i taci ón anual promedi o
Average_dai l y-preci p-yearl y
=
mean(mean(wd ) )
% Ahora cal cul a l a desv i ación estándar
Monthl y_Stdev i ation = std(wd)
Yearl y_Stdevi at i on
=
std(wd( : ) )
Los resultados, que se muestran en la ventana de comando, son
Average_dai l y_preci p_monthl y
Col umns 1 through 3
12 . 42
16 . 61
27 . 35
Col umns 4 through 6
20 . 42
10 . 3 5
1 5 . 29
Col umns 7 through 9
8 . 97
10 . 2 3
8 . 03
Col umns 10 through 12
9 . 23
1 5 . 10
18 . 26
=
Sección
http://jurgensoft.co.cc
3.5
Funciones d e análisis de datos
Average_dai l y_preci p_yearl y
14 . 3 5
Average_dai l y_preci p-yearl y
14 . 3 5
Monthl y_Stdevi at i on
Col umns 1 through 3
6 3 . 78
3 5 . 06
20 . 40
Col umns 4 through 6
26 . 6 5
48 . 98
50 . 46
Col umns 7 through 9
30 . 63
30 . 77
2 7 . 03
Col umns 10 th rough 1 2
2 1 . 01
5 3 . 34
42 . 08
Yearl y_Stdevi ati on
3 9 . 62
=
=
=
=
La precipitación diaria media para el año se calculó en d o s formas equivalentes. S e
encontró l a media d e cada m e s y luego la media (promedio) d e l o s valores mensuales.
Esto resulta ser igual que tomar la media de todos los datos a la vez. En este ejemplo se
introdujo una nueva sintaxis. El comando
wd( : )
convierte l a matriz bidimensional
wd en una matriz unidimensional, lo que hace posible
encontrar la media en un paso.
La situación es diferente para la desviación estándar de la precipitación diaria
para el año. Aquí, es necesario realizar sólo un cálculo:
std(wd( : ) )
De otro modo encontraría la desviación estándar de la desviación estándar, no lo
que quiere en absoluto.
5. Ponga a prueba la solución.
Primero, compruebe los resultados para asegurarse de que tienen sentido. Por ejem­
plo, la primera vez que se ejecutó el archivo-m, la matriz
wd todavía contenía valores
- 99999. Esto resultó en valores media menores que l . Puesto que no es posible tener
lluvia negativa, la comprobación de la razonabilidad de los datos alertó el problema. Fi­
nalmente, aunque calcular la lluvia diaria media para un mes a mano serviría como una
comprobación excelente, sería tedioso. Puede usar MATLAB para ayudarse a calcular
la media sin usar una función predefinida. La ventana de comandos es un lugar conve­
niente para realizar dichos cálculos:
l oad wd
sum(wd( : , 1) )
%Encuentra l a suma de todas l as fi l as e n l a
col umna uno
%de l a mat r i z wd
ans
848 . 00
ans/31
ans
27 . 35
Compare estos resultados con los de enero (mes
1).
87
88
Capítulo 3
http://jurgensoft.co.cc
Funciones internos de MATlAS
Sugere n cia
U se el operador dos puntos para cambiar una matriz bidimensional en una sola
columna:
A
3.6
=
X(:)
NOMEROS ALEATORIOS
Con frecuencia, en los cálculos de ingeniería se usan números aleatorios como parte de una
simulación de datos medidos. Los datos medidos rara vez se comportan exactamente como
predicen los modelos matemáticos, así que se pueden agregar pequeños valores de números
aleatorios a las predicciones para hacer que un modelo se comporte más como un sistema real.
Los números aleatorios también se usan para modelar juegos de azar. En MATLAB se pueden
generar dos diferentes tipos de números aleatorios: números aleatorios uniformes y números
aleatorios gaussianos (con frecuencia llamados una distribución normal).
3.6.1
Números aleatorios uniformes
Los números aleatorios uniformes se generan con la función
buyen de forma parej a entre O y
rand. Estos números se distri­
1. (Consulte la función help para más detalles.) La tabla 3 . 12
cita varios comandos MATLAB para generar números aleatorios.
Se puede crear un conjunto de números aleatorios sobre otros rangos al modificar
los números creados por la función
rand. Por ejemplo, para crear un conjunto de 100 números
5, primero cree un conj unto sobre el rango por defec­
distribuidos de manera pareja entre O y
to con el comando
r
=
rand(100, 1) ;
Ahora sólo necesita multiplicar por
r
Tabla 3.1 2
rand (n)
rand( m, n)
randn (n)
=
5 para expandir el rango a 0-5 :
r * 5;
Generadores de números aleatorios
Regresa una matriz n x n. Cada valor en la
matriz es un número aleatorio entre O y 1
Regresa uno motriz m x n. Cada valor en la
matriz es un número aleatorio entre O y 1
Regresa una matriz n x n . Cada valor en la
matriz es un número aleatorio gaussiano
(o normal) con uno media de O y uno
varianza de 1
randn ( m , n) Regresa una matriz m x n. Cada valor en l a
matriz e s un número aleatorio gaussiano
(o normal) con uno media de O y uno
varianza de 1
rand(2 )
ans =
0 . 9 50 1
0 . 2311
0 . 6068
0 . 4860
rand (3 , 2)
ans =
0 . 8913
0 . 7621
0 . 4565
0 . 0185
0 . 8214
0 . 4447
randn (2)
ans =
-0 . 4 3 26
- 1 . 6656
0 . 12 5 3
0 . 2877
randn ( 3 , 2 )
ans =
- 1 . 1465
1 . 1909
1 . 1892
-0 . 0 3 76
0 . 3273
0 . 1 746
http://jurgensoft.co.cc
Sección 3.6
Si se quiere cambiar el rango a 5 - 1 0, se puede sumar 5 a cada valor en el arreglo:
r
r+5 ;
=
El resultado serán números aleatorios que varíen de 5 a 10. Estos resultados se pueden gene­
ralizar con la ecuación
x=
(máx - min) conjunto_números_aleatorios + media
•
3.6.2 Números aleatorios gaussianos
Los números aleatorios gaussianos tienen la distribución normal que se muestra en la figura
3.9. No hay límite absoluto superior o inferior a un conjunto de datos de este tipo; sólo se
vuelve cada vez menos probable encontrar datos más alejados de la media que sc tiene. Los
conjuntos de números aleatorios gaussianos se describen al especificar su promedio y la des­
viación estándar del conjunto de datos.
MATLAB genera valores gaussianos con una media de O y una varianza de 1 .0, con la
función randn. Por ejemplo,
randn(3)
regresa
ans
- 0 . 4326
- 1 . 66 5 6
0 . 12 5 3
=
0 . 28 7 7
- 1 . 1465
1 . 1909
1 . 1892
-0 . 0376
0 . 3273
Si s e necesita u n conjunto de datos con un promedio diferente o una desviación están­
dar diferente, se comienza con el conjunto por defecto de números aleatorios y luego se mo­
difica. Dado que la desviación estándar por defecto es 1 , se debe multiplicar por la desviación
estándar requerida para el nuevo conjunto de datos. Puesto que la media por defecto es O, se
necesitará sumar la nueva media:
x
desviación_estándar ' conjunto_datos_aleatorios + media
Por ejemplo, para crear una secuencia de 500 variables aleatorias gaussianas con una desvia­
ción cstándar de 2.5 y una media de 3, escriba
x
=
randn(1 , 500) * 2 . 5 + 3 ;
Eie rcicio de p r áctica 3 . 9
1 . Cree una matriz 3 X 3 de números aleatorios distribuidos de manera pareja.
2. Cree una matriz 3 X 3 de números aleatorios distribuidos de manera normal.
3 . Cree una matriz 100 x 5 de números aleatorios distribuidos de manera pareja.
4.
Asegúrese de suprimir la salida.
Encuentre el máximo, la desviación estándar, la varianza y la media para eada
columna en la matriz que creó en el problema 3 .
5 . Cree una matriz 100 X 5 de números aleatorios distribuidos de manera
normal. Asegúrese de suprimir la salida.
6. Encuentre el máximo, la desviación estándar, la varianza y la media para cada
columna en la matriz que creó en el problema 5 .
7. Explique por qué son diferentes sus resultados para los problemas 4 y 6 .
Números aleatorios
89
90
Capítulo 3
http://jurgensoft.co.cc
Funciones i nternas de MATlAB
-i"MOI·I"
Ru id o
Los números aleatorios se pueden usar para simular el ruido que se escucha como estática
en el radio. Al agregar este ruido a los archivos de datos que almacenan música, se puede es­
tudiar el efecto de la estática en las grabaciones.
MATLAB tiene la habilidad de tocar archivos de música mediante la función
sound.
Para demostrar esta función, también tiene un archivo de música interno con un corto segmen­
to del Mesías de H andel. En este ejemplo, se usará la función
randn para crear ruido y luego
se agregará el ruido al clip de música.
La música se almacena en MATLAB como un arreglo con valores desde
convertir este arreglo en música, la función
-
1 hasta 1.
Para
sound requiere una frecuencia muestra. El archivo
handeI.mat contiene tanto un arreglo que representa la música como el valor de la frecuencia
muestra. Para escuchar el Mesías, primero debe cargar el archivo, con el comando
l oad handel
Note que dos nuevas variables (y y
do se carga el archivo
Fs) se agregan a la ventana del área de trabajo cuan­
handel. Para tocar el clip, escriba
sound(y , Fs)
Experimente con diferentes valores de
Fs para escuchar el efecto de diferentes frecuen­
cias muestra sobre la música. Claranlente, el sonido se debe meter en su computadora o no
será capaz de escuchar la música.
l . Establezca el problema.
Añadir un componente de ruido a la grabación del Mesías de Handel, que se incluye
con MATLAB.
2 . Describa las entradas y salidas.
Entrada
Archivo de datos MATLAB del Mesías de Handel, almacenado como e l
archivo interno
Salida
handel
Un arreglo que representa el Mesías, con estática añadida
Una gráfica de los primeros 200 elementos del archivo de datos
3. Desarrolle un ej emplo a mano.
Dado que los datos en el archivo de música varían entre -1 y + 1 , se deben agregar
valores de ruido de un orden de magnitud más pequeño. Primero se intentarán valores
centrados en
•
O y con una desviación estándar de 0. 1 .
4 . Desarrolle una solución MATLAB.
%Exampl e 3 . 5
%Noi se
l oad handel
sound(y , Fs)
pause
Figura 3. 1 3
Orq uesta Sinfónica de
Utah.
%Carga el archivo de datos de mUSlca
%Toca el archi vo de datos de música
%Pausa para escuchar l a músi ca
http://jurgensoft.co.cc
Sección 3.7
Números complejos
% Asegúrese de dar enter para con t i nuar después de tocar l a mús i ca
% Agrega r u i do al eato r i o
noi se=randn(l ength (y) , 1) *0 . 10 ;
sound(y+noi se , Fs)
Este programa le permite tocar la grabación del Mesías tanto con el ruido agregado
como sin él. Puede ajustar el multiplicador en la línea de ruido para observar el efecto
de cambiar la magnitud de la estática agregada. Por ejemplo:
noi se=randn (l ength (y) , 1 ) *0 . 20
5 . Ponga a prueba la solución.
Además de tocar de nuevo la música con y sin ruido agregado, podría graficar los resul­
tados. Puesto que el archivo es bastante grande (73, 1 1 3 elementos), sólo se graficarán
los primeros 200 puntos:
%
Grafi ca l os p r i meros 200 puntos de datos en cada arch i vo
t=l : 1 ength (y) ;
p1 0t (t ( l , l : 200) , y (1 : 200 , l) , t (1 , 1 : 200) , no i se ( 1 : 200 , 1) , ' : ' )
t i t1 e ( ' Me s í as de Hande1 ' )
x1 abe1 ( ' Número de el ementos en el arregl o de músi ca ' )
y1 abe1 ( ' Frecuenc i a ' )
Estos comandos le dicen a MATLAB que grafique el número índice de los datos en el
eje x y el valor almacenado en los arreglos de música en el eje y.
En la figura 3. 14, la línea sólida representa los datos originales y la línea puntea­
da son los datos a los que se agregó ruido. Como se esperaba, los datos ruidosos tienen
un rango mayor y no siempre siguen el mismo patrón que el original.
Hande['s Messiah
0.25
0.2
0.15
>.
u
e
O.l
::l
cr<
O.l
�
....
0.1
-,0.05
-0.1
-0.15
-0.2
-0.25
3.7
O
20
40
60
80
��
¡
1 00
120
Element Number in Music Array
140
160
1 80
200
N Ú M EROS COMPLEJOS
MATLAB incluye varias funciones que se usan principalmente con números complejos. Los
números complejos consisten de dos partes: una parte real y un componente imaginario. Por
ejemplo,
5 + 3i
Figura 3. 1 4
Mesías de Handel.
91
92
http://jurgensoft.co.cc
Capítulo 3 Funciones inlernas de MATLAB
número complejo:
es un número complejo. El componente real es 5 y el componente imaginario es
número con componentes
complejos se pueden ingresar en MATLAB de dos formas: como un problema de suma, como
3. Los números
real e imaginario
A=5 + 3 ;
o con la función
o
A=S+3*;
complex, como en
A=compl ex(S , 3)
que regresa
A =
5 . 0000 + 3 . 0000;
Como es estándar en MATLAB, l a entrada a la función
res o dos arreglos de valores. Por ende, si
xy
complex puede ser dos escala­
y se definen como
x",1 : 3 ¡
y= [-1, 5 , 1 2 ] ;
entonces s e puede usar l a función
complex para definir un arreglo de números complejos del
modo siguiente:
compl ex(x, y)
ans =
1 . 0000 - 1 . 0000;
2 . 0000 + 5 . 0000;
3 . 0000 +12 . 0000;
Se pueden usar las funciones real e imag para separar los componentes real e imagina­
rio de los números complejos. Por ejemplo, para A=5 + 3*i, se tiene
real (A)
ans =
5
i mag(A)
ans =
3
La función
isreal se puede usar para determinar si una variable almacena un número
A es un número com­
complejo. Regresa 1 si la variable es real y O si es compleja. Dado que
plejo, se obtiene
i sreal (A)
ans '"
O
Por tanto, la función
isreal es falsa y regresa un valor de O.
La conjugada compleja de un número complejo consiste en el mismo componente real,
pero un componente imaginario de signo opuesto. La función
conj regresa la conjugada com­
pleja:
conj (A)
ans =
5 . 0000 - 3 . 0000;
El operador transpuesto también regresa la conjugada compleja de un arreglo, además
de convertir filas a columnas y columnas a filas. Por tanto, se tiene
A'
ans
5 . 0000 - 3 . 0000;
http://jurgensoft.co.cc
Sección 3 . 7 Números complejos 93
Desde luego, en este ejemplo A es un escalar. Se puede crear un arreglo complej o B con
el uso de A y realizar operaciones de suma y multiplicación:
B = [A, A+l , A*3J
B =
5 . 0000 + 3 . 0000;
6 . 0000 + 3 . 0000i
1 5 . 0000 + 9 . 0000i
El transpuesto de B es
B'
ans
5 . 0000 - 3 . oo00i
6 . 0000 - 3 . 0000i
1 5 . 0000 - 9 . 0000i
Con frecuencia, los números complejos se consideran como la descripción de una po­
sición en el plano x-y. La parte real del número corresponde al valor x, y el componente
imaginario corresponde al valor y, como se muestra en la figura 3 .15a. Otra forma de pensar
acerca de este punto es describirlo con coordenadas polares; esto es: con un radio y un ángulo
(figura 3. 15b).
MATLAB incluye funciones pard convertir números complejos de forma cartesiana a
polar.
Cuando la función valor absoluto se usa con un número complejo, calcula el radio me­
diante el teorema de Pitágoras:
coordenadas
polares: técnica para
abs (A)
ans =
5 . 8 3 10
radio
=
V( compon e nte real ) 2
+
describir una ubicación
con el uso de un ángulo y
una distancia
( componente imaginario) 2
Puesto que, en este ejemplo, el componente real es 5 y el componente imaginario es 3,
radio
=
=
5.8310
También se podría calcular el radio en MATLAB con el uso de las funciones real e
imag descritas anteriormente:
sqrt(real (A) , A 2
ans =
5 . S3 10
+
i mag(A) . A2)
Número complej o
(a)
graficado en coordenadas x-y
6
(b)
Número complejo
6
0 5
'C
0 5
.¡:;
'� 4
'¡;[¡
4
""
'"
¡::
,5
.8 3
'"
e
.5
Componente real
.8 3
e
<U
¡::
5. 2
§
u
<=:
u
<=:
5. 2
Componente
a
o
u 1
imaginario
1
o
graficado en coordenadas x-y
2
3
4
5
6
Componente real
7
8
o
Figura 3. 1 5
Radío
2
3
4
5
6
Componente real
7
8
(a) Número complejo
representado en un
sistema de coordenadas
cartesianas. lb) Un número
complejo también se puede
describir con coordenadas
polares.
94
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATLAB
De igual modo, el ángulo se encuentra con la función
angle:
angl e (A)
ans
0 . 5404
El resultado se expresa en radianes. Ambas funciones,
abs y angle, aceptarán como entrada
escalares o arreglos. Recuerde que B es un arreglo 1 X 3 de números complejos:
B =
5 . 0000 + 3 . 0000i
6 . 0000 + 3 . 0000i
1 5 . 0000 + 9 . 0000i
La función abs regresa el radio si el número se representa en coordenadas polares:
abs (B)
ans =
5 . 8 3 10
6 . 7082
1 7 . 4929
El ángulo desde la horizontal se puede encontrar con la función
angl e (B )
ans =
0 . 5404
0 . 4636
angle:
0 . 5404
En la tabla 3. 13 se resumen las fundones MATLAB usadas comúnmente con números
complejos.
Tabla 3. 1 3
Funciones usadas con números complejos
Calcula el valor absoluto de un número
complejo mediante el teorema de Pi/ágoras.
Esto es equivalente 01 radio si el número
complejo se representa en coordenadas polares.
Por ejemplo, si x 3 + 4i, el valor absoluto es
x=3+4i ;
abs (x)
ans =
angl e (x)
Calculo el ángulo desde la horizontal, en
radianes, cuando un número complejo se
represento en coordenadas polares
x=3+4 i ;
angl e (x)
ans '"
0 . 92 7 3
compl ex(x , y)
Genera un número complejo con un componente
real x y un componente imaginario y
x=3 ;
y=4 ;
compl ex(x , y)
ans =
3 . 0000 +
4 . 0000i
real (x)
Extrae el componente real de un número
complejo
x=3+4i :
real (x)
ans =
3
i mag(x)
Extrae el componente imaginario de un
número complejo
x=3+4 i ;
i mag(x)
ans =
4
abs (x)
S
'"
V32 + 42
5
http://jurgensoft.co.cc
Sección
3.8
i sreal (x)
Determina si los valores en un arreglo son
reales. Si lo son, la función regresa 1 ; si
son compleíos, regresa O
x=3+4 i ;
i sreal (x)
ans =
O
conj (x)
Genera la conjugada compleio de un número
compleio
x=3+4i ;
conj (x)
ans =
3 . 0000 - 4 . 0000i
Limitaciones computacionales
9S
Eiercicio de p ráctica 3 . 1 0
1 . Cree los siguientes números complejos:
l + i
2
3i
b. B
c. C = 8 + 2i
a. A
=
2. Cree un vector D de números complejos cuyos componentes reales son 2, 4 Y
6 Y cuyos componentes imaginarios son -3, 8 Y - 1 6.
3. Encuentre la magnitud (valor absoluto) de cada uno de los vectores que creó '
en los problemas 1 y 2.
4. Encuentre el ángulo desde la horizontal de cada uno de los números
complejos que creó en los problemas 1 y 2.
5. Encuentre la conjugada compleja del vector
D.
6. Use el operador transpuesto para encontrar la conjugada compleja del vector
D.
7. Multiplique A por su conjugada compleja y luego saque la raíz cuadrada de su
respuesta. ¿Cómo se compara este valor contra la magnitud (valor absoluto) de A?
3.8
LIM ITACIONES COM PUTACIONALES
Las variables que se almacenan en una computadora pueden asumir un amplio rango de valo­
Idea clave: existe
res. En la mayoría de las computadoras, el rango se extiende desde aproximadamente 10-308
un límite acerca de
hasta 10308, que debe ser suficiente para acomodar la mayoría de los cálculos. MATLAB inclu­
ye funciones para identificar los números reales más grandes y los enteros más grandes que el
programa puede procesar (tabla
3. 14).
cuán pequeño o cuán
grande puede ser u n
número manejado por los
programas de cómputo.
Tabla 3 . 1 4 límites computacionales
realmax
Regresa el número punto Aotonte más
grande posible usado en MATLAB
real max
ans =
1 . 7977e+308
real m i n
Regresa e l número punto Aotante más
pequeño posible usado en MATLAB
real m i n
ans =
2 . 2 2 Sle- 308
i ntmax
Regresa el número entero más grande
posible usado en MAlLAB
i ntmax
ans
2 147483647
Regresa el número entero mós pequeño
posible usado en MATLAB
i ntmi n
ans =
- 2 147483648
i ntmi n
=:
96
http://jurgensoft.co.cc
Capítulo 3 Funciones internas de MAllA B
El valor de realmax corresponde aproximadamente a 21024, un valor que resulta del hecho
de que las computadoras en realidad realizan sus cálculos en aritmética binaria (base
2). Desde
luego, es posible formular un problema en el que el resultado de una expresión sea más gran­
de o más pequeño que el máximo permitido. Por ejemplo, suponga que se ejecutan los siguien­
tes comandos :
x = 2 . Se200 ;
y = l . Oe200 ¡
z = x*y
desbordamiento:
resultado de un cálculo
que es demasiado grande
MATLAB responde con
z =
Inf
para que el programa
de cómputo lo pueda
manejar
subdesbordamiento:
resultado de un cálculo
que es demasiado
pequeño como para
que la computadora lo
distinga de cero
puesto que la respuesta
(2.5*e400)
está fuera del rango permisible. Este error se llama des­
bordamiento de exponente, pues el exponente del resultado de una operación aritmética es
demasiado grande para almacenarse en la memoria de la computadora.
El subdesbordamiento de exponente es un error similar, causado porque el exponente
del resultado de una operación aritmética es demasiado pequeño como para almacenarse en la
memoria de la computadora. Al usar el mismo rango permisible, se obtiene un subdesborda­
miento de exponente con los siguientes comandos:
x = 2 . Se-200 ;
y = l . Oe200
z
x/y
En conjunto, estos comandos regresan
z = O
El resultado de un desbordamiento de exponente es cero.
También se sabe que la división entre cero es una operación inválida. Si una expresión
Idea clave: la
planeación cuidadosa
le puede ayudar a evitar
el desbordamiento o el
subdesbordamiento en los
cálculos.
resulta en una división entre cero, el resultado de la división es infinito:
z = y/O
z =
Inf
MATLAB puede imprimir una advertencia que le diga que l a división entre cero no es posible.
Al realizar cálculos con números o muy grandes o muy pequeños, puede ser posible
reordenar los cálculos para evitar un subdesbordamiento o un desbordamiento. Suponga, por
ejemplo, que le gustaría realizar la siguiente cadena de multiplicaciones:
La respuesta es 5 X
10300, dentro de los límites permitidos por MATLAB . Sin embargo, con­
sidere lo que ocurre cuando ingresa el problema en MATLAB:
2 . Se200*2e200* le- lOO
ans =
Inf
Puesto que MATLAB ej ecuta el problema de izquierda a derecha, la primera multipli­
cación produce un valor fuera del rango permisible (5 X
de infinito. Sin embargo, al reordenar el problema a
104(0), lo que resulta en una respuesta
Sección
Valores especiales
http://jurgensoft.co.cc
3.9
2 . 5e200*le- 100*2e200
ans =
5 . 0000e+300
se evita el desbordamiento y se encuentra la respuesta correeta.
3.9
VALORES ESPECIALES Y FUNCIONES VARIAS
La mayoría de las funciones, aunque no todas, requieren un argumento de entrada. Si bien se
usan como si fuesen constantes escalares, las funciones que se mencionan en la tabla 3.15
requieren entrada alguna.
Tabla 3. 1 5 Funciones especiales
pi
Constante matemática
i
Número imaginario
;
ans
O + 1 . 0000;
j
Número imaginario
j
ans =
O + 1 . 0000;
Inf
Infinito, que con frecuencia ocurre
durante un desbordamiento de cálculo
o cuando un número se divide entre cero
5/0
Warn i ng : Di v i de by zero .
ans =
Inf
NaN
No es un número
O/O
Ocurre cuando un cálculo es indefinido
Warn i ng : Di vide by zero .
ans =
NaN
'IT
pi
ans =
3 . 1416
i nf/i n f
ans =
NaN
Tiempo actual .
Regresa un arreglo de seis miembros [año,
mes, día, hora, minuto, segundo]. Cuando
la función dock se solicitó el 6 de enero de
2006, a las 1 2:07 A.M. y 8.7 segundos,
MATLAS regresó la salida que se muestra
a la derecha. las funciones fix y dock
juntas resultan en un formato que es más
fácil de leer. la función fix redondea
hacia cero. Un resultado similar se podría
obtener al establecer formot bank
ans =
2006
12
date
Fecha actual.
Similar a la función dock. Sin embargo,
regresa la fecha en un IIFormata de cadena"
date
ans =
06-Jan- 2006
eps
la distancia entre 1 y el siguiente número
punto Rotante de doble precisión más
grande
eps
ans =
2 . 2204e-016
cl ock
cl ock
ans =
1 . 0e+003 *
2 . 0060
0 . 0010
0 . 0120
0 . 0070
fi x (cl ock)
1
7
6
8
0 . 0060
0 . 0087
no
y funciones varias
97
98
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MATlAB
MATLAB le pennite redefinir estos valores especiales como nombres de variable; sin
embargo, hacerlo puede tener consecuencias inesperadas. Por ejemplo, se pennite el siguiente
código MATLAB, aunque no es aconsej able:
pi
12 . 8 ;
=
A partir de este punto, cada vez que se pida la variable
pi, se usará el nuevo valor. De igual
modo, puede redefinir cualquier función como un nombre de variable, tal como
sin
=
10 ;
Para restaurar sin a su empleo como función trigonométrica (o para restaurar el valor
por defecto de
pi), debe limpiar el área de trabajo con
cl ear
Compruebe abora el resultado al escribir el comando para 1'['.
pi
Este comando regresa
pi
=
3 . 1416
�
Sugerencia
La función i es la más común de estas funciones que, de manera no intencional,
renombran los usuarios de MATLAB.
E j ercicio de práctica 3 . 1 1
1 . Use la función dock para agregar la hora y fecha a su hoja de trabajo.
2 . Use la función date para agregar la fecha a su hoj a de trabajo.
3 . Convierta los siguientes cálculos a código MATLAB y explique sus resultados:
a.
322! (Recuerde que ! significa factorial para
un
matemático.)
b. 5 x lOSoo
c.
1/5 x
lOSoo
d. 010
.;'i'#O'.I-----
-----
En este capítulo se exploraron varias funciones predefinidas de MATLAB, incluidas las siguientes:
•
•
•
funciones matemáticas generales, como
o
funciones exponenciales.
o
funciones logarítmicas.
o
raíces.
funciones de redondeo
funciones usadas en matemáticas discretas, tales como
o
funciones de factorización.
o
funciones de números primos.
http://jurgensoft.co.cc
•
Resumen MATlAB 99
funciones trigonométricas, incluidas
;) funciones trigonométricas estándar.
funciones trigonométricas inversas.
;) funciones trigonométricas hiperbólicas.
o
•
funciones trigonométricas que usan grados en lugar de radianes.
funciones de análisis de datos, tales como
'J
máximos y mínimos.
" promedios (media y mediana).
;) sumas y productos.
•
:.>
ordenamiento.
o
desviación estándar y varianza.
generación de números aleatorios para
;) distribuciones uniformes.
;) distribuciones gaussianas (normales).
•
funciones usadas con números complejos
Se exploraron los límites computacionales inherentes a MATLAB y se introdujeron valores
especiales, como
pi, que son internos al programa.
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
�es
· · · elli.Ies
. ,) , ' .... espe
<
..
eps
reconoce diferencia más pequeña
i
número imaginario
c10ck
regresa la hora
date
regresa la fecha
Inf
infinito
i ntmax
regresa el número entero más grande
i ntmi n
regresa el número entero más pequeño
j
número imaginario
posible usado en MATLAB
posible usado en MATLAB
NaN
no es un número
pi
constante matemática
real max
regresa el número punto flotante más
11'
grande posible usado en MATLAB
real m i n
regresa el número punto flotante más
pequeño posible usado en MATLAB
abs
calcula el valor absoluto de un número real o la magnitud de un número
complejo
angl e
calcula el ángulo cuando los números complejos se representan en
coordenadas polares
asi n
calcula el seno inverso (arcoseno)
asind
calcula el seno inverso y reporta el resultado en grados
ceíl
redondea al entero más eereano hacia infinito positivo
compl ex
crea un número complejo
conj
crea la conjugada compleja de un número complejo
cos
calcula el coseno
cumprod
calcula un produeto acumulado de los valores en un arreglo
cumsum
calcula una suma acumulada de los valores en un arreglo
erf
calcula la función error
exp
calcula el valor de
eX
(Continúa )
RESUMEN MAlLAB
1 00
Capítulo 3
http://jurgensoft.co.cc
Funciones ínternas de MATLAB
factor
encuentra los factores primos
factor i al calcula el factorial
fix
redondea al entero más cercano hacia cero
floor
redondea hacia el entero más cercano hacia menos infinito
gcd
encuentra el máximo común denominador
hel p
abre la función help
hel pwi n
abre la función help en ventana
i mag
extrae el componente imaginario de un número complejo
i spri me
determina si un valor es primo
i s real
determina si un valor es real o complejo
l cn
encuentra el mínimo común denominador
1 ength
determina la mayor dimensión de un arreglo
1 0g
calcula el logaritmo natural o el logaritmo a la base
1 0910
1 092
max
e
(log.)
calcula el logaritmo común o el logaritmo a la base 10 (loglQ)
calcula el logaritmo a la base 2 (log:)
encuentra el valor máximo en
un
arreglo y determina cuál elemento
almaeena el valor máximo
mean
calcula el promedio de los elementos en
median
encuentra la mediana de los elementos en un arreglo
mi n
encuentra el valor mínimo en
un
arreglo
arreglo y determina cuál elemento
un
almacena el valor mínimo
TÉRMINOS CLAVE
nthroot
encuentra la n-ésima raíz real de la matriz de entrada
p r i mes
encuentra los números primos menores que el valor de entrada
prod
multiplica los valores en un arreglo
rand
calcula números aleatorios distribuidos de manera pareja
randn
calcula números aleatorios distribuidos de manera normal (gaussiana)
rats
convierte la entrada a una representación racional (es decir, una fracción)
real
extrae el componente real de
rem
calcula el residuo en un problema de división
round
redondea al entero más cercano
un
número complejo
s i gn
determina el signo (positivo o negativo)
sin
calcula el seno con radianes como entrada
s i nd
calcula el seno con ángulos en grados como entrada
s i nh
calcula el seno hiperbólico
s i ze
determina el número de filas y columnas en un arreglo
sort
ordena los elementos de un vector
sortrows
ordena las filas de
sound
toca archivos de música
sqrt
calcula la raíz cuadrada de un número
un
vector sobre la base de los valores en la primera columna
std
determina la desviación estándar
sum
suma los valores en un arreglo
tan
calcula la tangente con radianes como entrada
var
calcula la varianza
anidado
media
semilla
argumento
mediana
subdesbordamiento
desbordamiento
número aleatorio uniforme
variación aleatoria gaussiana
desviación estándar
números complejos
variación aleatorio normal
entrada de función
números racionales
varianza
función
números reales
matemáticas discretas
promedio
http://jurgensoft.co.cc
Problemas
F u n ci o nes matemáticas elementales
3.1
Encuentre la raíz cúbica de
tanto con la función nthroot como con elevar - 5 a la
potencia 1/3. Explique la diferencia en sus respuestas. Pruebe que ambos resultados de
hecho son respuestas correctas al elevarlos al cubo y mostrar que son iguales a 5 .
MATLAB contiene funciones para calcular el logaritmo natural (Iog), el logaritrno a la
base 10 (logIO) y el logaritmo a la base 2 (log2). Sin embargo, si quiere encontrar un
-
3.2
logaritmo de base distinta (por ejemplo, base b), tendrá que hacer la matemática por
usted mismo con la fórmula
¿Cuál es el logb de 10 cuando b se define de 1 a 10 en incrementos de l ?
3.3
Las poblaciones tienden a expandirse exponencialmente. Esto es
donde
p
Po
r
=
población actual,
población original,
tarifa de crecimiento continua, expresado como fracción, y
tiempo.
Si originalmente se tienen 100 conejos que se reproducen a una tasa de crecimiento
constante de 90% (r = 0.9) por año, encuentre cuántos conejos tendrá al final de 1 0
años.
3.4
Las tasas de reacción química son proporcionales a una constante de tasa k que cambia
con la temperatura de acuerdo con la ecuación Arrhenius
Para cierta reacción
Q
R
ko
=
=
=
8000 cal/mol
1.987 cal/mol K
1200 min-1
Encuentre los valores de k para temperaturas desde 1 00 K hasta 500 K, en incrementos
de 50 grados. Cree una tabla con sus resultados.
3.5
Considere los requerimientos de aire acondicionado de la gran casa que se muestra en
la figura P3.5. El interior de la casa se calienta por calor que se desecha de la ilumina­
ción y los aparatos eléctricos, del calor que se filtra desde el exterior y del calor que
expulsan las personas en la casa. Un acondicionador de aire debe ser capaz de remover
toda esta energía térmica con la finalidad de evitar que aumente la temperatura interna.
Suponga que hay 20 focos que expulsan 100 J/s de
cada uno y cuatro aparatos
que expulsan 500 J/s cada uno. Suponga también que el calor se filtra del exterior a
una tasa de 3000 J/s.
(a) ¿Cuánto calor por segundo debe remover de la casa el acondicionador de aire?
(b) Una unidad particular de acondicionador de aire puede manipular 2000 J/s.
¿ Cuántas de estas unidades se requieren para mantener constante la temperatura
de la casa?
101
102
Capítulo 3
Funciones internos de MATLAB
http://jurgensoft.co.cc
Calor de aparatos
electrodomésticos
Calor de
los focos
Figura P3.5
Calor de los
alrededores
Calor removido con
el acondicionador
de aire
El acondicionador de aire
debe remover calor de
varias fuentes.
3.6
Muchos problemas que involucran probabilidad se pueden resolver con factoriales.
Por ejemplo, el número de formas en que se pueden ordenar cinco cartas es 5 X 4 X 3
X 2 X 1 5 ! 1 20. Cuando selecciona la primera carta, tiene cinco opciones; cuando
selecciona la segunda carta, tiene sólo cuatro opciones restantes, luego tres, dos y una.
Este enfoque se llama matemática combinatoria.
=
=
(a) Si tiene cuatro personas, ¿en cuántas formas diferentes puede ordenarlas en una
línea?
(b) Si tiene 1 0 baldosas diferentes, ¿en cuántas formas diferentes puede ordenarlas?
3.7
3.8
3.9
Si tiene cuatro personas, ¿cuántos diferentes comités de dos personas puede crear?
Recuerde que un comité de Bob y Alice es el mismo que un comité de Alice y Bob.
Existen 52 cartas diferentes en un mazo. ¿Cuántas posibles manos diferentes de 5 car­
tas existen? Recuerde: cada mano se puede ordenar de 120 formas diferentes.
Los números primos muy grandes se usan en criptografía. ¿Cuántos números primos
existen entre 1 0,000 y 20,000? (Éstos no son números primos suficientemente gran­
des corno para usarse en cifrados.) (Sugerencia: use la función primes y el comando
length.)
F u ncio nes trigo n ométricas
3.10
-A
¡
3.11
A veces es conveniente tener una tabla de seno, coseno y tangente en lugar de usar una
calculadora. Cree una tabla de estas tres funciones trigonométricas para ángulos de O a
271", con un espaciamiento de 0. 1 radianes. Su tabla debe contener una columna para el
ángulo y luego el seno, coseno y tangente.
El desplazamiento del resorte oscilatorio que se muestra en la figura P3. 1 1 se puede
describir mediante
+A
x =
A
cos(wt)
donde
x
A
Figura P3. 1 1
Resorte oscilatorio.
w
=
desplazamiento en el tiempo t,
desplazamiento máximo,
frecuencia angular, que depende de la constante de resorte y la masa unida
al mismo, y
tiempo.
http://jurgensoft.co.cc
3.12
-Aw2 cos(wt)
Encuentre l a aceleración para tiempos desde O hasta 10 segundos, con los valores cons­
tantes del problema anterior. Cree una tabla que incluya el tiempo, el desplazamiento
de valores correspondientes en el problema anterior y la aceleración.
Puede usar trigonometría para encontrar la altura de un edificio, como se muestra en la
figura P3 . 1 3 . Suponga que mide el ángulo entre la línea de visión y l a línea horizontal
que conecta el punto de medición y el edificio. Puede calcular la altura del edificio con
las siguientes fórmulas:
tan(O)
h
3.14
1 03
Encuentre el desplazamiento x para tiempos desde O hasta 10 segundos cuando el des­
plazamiento máximo A es 4 cm y la frecuencia angular es 0.6 radianes/s. Presente sus
resultados en una tabla de desplazamiento y tiempo.
La aceleración del resorte descrito en el problema anterior es
a
3.13
Problemas
=
=
h/d
d tan(O)
Suponga que la distancia al edificio, a lo largo del suelo, es de 1 20 m y que el ángulo
medido a lo largo de la línea de visión es 30° ± 3°. Encuentre las alturas máxima y
mínima que puede tener el edificio.
Considere el edificio del problema anterior.
(a) Si tiene 20 pies de alto y usted está a 20 pies de distancia, ¿a qué ángulo del suelo
tendrá que inclinar su cabeza para ver la punta del edificio? (Suponga que su ca­
beza está a la par con el suelo.)
(b) ¿Qué distancia hay desde su cabeza hasta la punta del edificio?
Funciones de análisis de datos
3.15
Considere la siguiente tabla de datos que representan lecturas de temperatura en un
reactor:
,
,
,
,
,
Altura h
,
/," '_j��ulO
8
_
_ _
_
Distancia d
_ _ _
_ _ _
D
D
D
D
D
D
D
D
D
D
D
O
D
D
D
D
O
D
I::::J
D
D
D
D
O
D
D
D
D
Figura
P3. 1 3
Puede determinar la
altura de un edificio con
trigonometría.
1 04
Capítulo 3
http://jurgensoft.co.cc
Funciones internas de MAnAS
84.3
90.0
89.5
86.4
85.2
87.1
83.5
88.6
88.9
88.9
85.3
85.3
89.5
88.9
84.8
85.0
86.7
87.6
88.3
85.3
80.3
90.4
89.3
85.2
82.4
83.4
85.4
86.3
85.3
89.1
89.5
89.4
82.3
84.7
89.0
87.3
89.8
83.6
87.2
Su instructor le puede proporcionar un archivo llamado thermocouple.dat, o es posi­
ble que usted tenga que ingresar los datos.
Use MATLAB para encontrar:
J-. Rango ---1
Figura
P3. 1 6
El rango depende del
ángulo de l anzamiento y la
velocidad de lanzamiento.
(a) la temperatura máxima medida por cada tennocople.
(b) la temperatura mínima medida por cada tennocople.
3.16
El rango de un objeto que se dispara en un ángulo
(J con respecto al eje x y una veloci­
dad inicial va (figura P3 .1 6) está dado por
Rango
para O
'tlo
= -- sen
g
( 28)
:S (J :S 'Tr12 Y resistencia del aire despreciable. Use g
=
9.8 1 mls2 y una velocidad
inicial Vo de 100 mis . Muestre que el rango máximo se obtiene a aproximadamente (J
1T/4 al calcular el rango en incrementos de 0.05 entre O :S (J
=
'Tr12. No podrá encontrar
el ángulo exacto que produce el rango máximo, porque sus cálculos están en ángulos
igualmente espaciados de 0.05 radianes.
3.17
El vector
c;
=
[68, 83, 61, 70, 75, 82, 57, 5, 76, 85, 62, 71, 96, 78, 76, 68, 72, 75, 83, 93]
representa la distribución de calificaciones finales en un curso de dinámica. Calcule
la media, mediana y la desviación estándar de G. ¿Cuál representa mejor la "califi­
cación más usual", la media o la mediana? ¿Por qué? Use MATLAB para detenninar
el número de calificaciones en el arreglo (no sólo las cuente) y ordénelas en orden
ascendente.
3.18
Genere 10,000 números aleatorios gaussianos con una media de 80 y desviación es­
tándar de
23.5. (Querrá suprimir la salida de modo que no abrume la ventana de co­
mandos con datos.) Use la función mean para confirmar que su arreglo en realidad
tiene una media de 80. Use la función std para confinnar que su desviación estándar
realmente es
3.19
23.5 .
Use la función date para agregar la fecha actual a su tarea.
Números aleatorios
3.20
Muchos juegos requieren que el jugador tire dos dados. El número en cada dado puede
variar entre 1 y 6 .
http://jurgensoft.co.cc
Problemas
(a) Use la función rand en combinación con una función de redondeo para crear una
simulación de una tirada de un dado.
(b) Use sus resultados de la parte (a) para crear una simulación del valor de tirar un
segundo dado.
(e)
Sume sus dos resultados para crear un valor que represente la tirada total durante
cada tumo.
(d) Use su programa para determinar los valores de tirada en un juego de mesa de su
preferencia, o use el juego que se muestra en la figura P3.20.
3.21
Suponga que diseña un contenedor para embarcar materiales médicos sensibles entre
hospitales. El contenedor necesita mantener los contenidos dentro de un rango de tem­
peratura específico. Usted crea un modelo que predice cómo responde el contenedor a
la temperatura exterior y ahora necesita correr una simulación.
(a) Cree una distribución normal (distribución gaussiana) de temperaturas con una
media de 70 °P Y una desviación estándar de
2°,
que corresponde a una duración
de 2 horas. Necesitará una temperatura para cada valor de tiempo desde
1 20 minutos. (Éstos son 1 2 1 valores.)
O
hasta
(b) Grafique los datos en una gráfica x-y. No se preocupe por las etiquetas. Recuerde
que la función MATLAB para graficación es plot(x,y).
(e)
Encuentre la temperatura máxima, la temperatura mínima y los tiempos en que
ellas ocurren.
Inglés
Ingresa a
Química
ingeniería
Empleo
temporal
Inicia
segundo
año
Estructuras
Física
Métodos
numéricos
Termo-
dinámica
in.
IMATLAB
Más
termo-
dinámica
Diseño
Empleo
temporal
Proyecto
de tesis
Ciencia de
materiales
Cinética
Reprueba
cálculo
--comienza
Cálculo
de nuevo
Estática
Acaba
beca -regresa
3 espacios
Problemas
con vida
amorosa
-regresa 2
espacios
Problemas
con compañeros
de lab -regresa
3 espacios
Año
de ingreso
Ecuaciones
Escritura
diferenciales
técnica
Empleo
temporal
Fluidos
Seminario
de calor
Concreto
Graduación
Figura P3.20
El juego de la universidad.
1 05
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Manipulación de ll1atrices
MATLAB
4.1
MANIPULACiÓN DE MATRICES
Confonne resuelva problemas cada vez más complicados con MATLAB, encontrará
que necesitará combinar pequeñas matrices con matrices más grandes, extraer infor­
mación de matrices grandes, crear matrices muy grandes y usar matrices con propie­
dades especiales.
4.1.1
Definición de matrices
En MATLAB, una matriz se puede definir al escribir una lista de números encerrada
entre corchetes. Los números se pueden separar mediante espacios o comas, a discre­
ción del usuario. (Incluso puede combinar las dos técnicas en la misma definición de
matriz.) Las nuevas filas se indican con punto y coma. Por ejemplo,
A
B
=
e
=
=
[3.5];
[1. 5, 3. 1]; o B
[1. 5
3.1];
[-1, O, O; 1, 1, O; O, O, 2 ];
También se puede definir una matriz al hacer una lista de cada fila en una línea separa­
da, como en el siguiente conjunto de comandos MATLAB:
e
=
[ -1, O, O:
1,
1, O:
1, -1, O;
O, 2 ]
O,
Incluso no necesita
interpreta
e
=
e l punto y coma para indicar una nueva fila. MATLAB
[-1, o. o
1, 1, o
1, -1, o
O,
O, 2 ]
108
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MAlLAS
como una matriz 4 X 3. También podría ingresar una matriz columna de esta forma:
A
=
1
2
3
elipsis: conjunto de
Si existen demasiados números en una fIla como para encajar en una línea, puede continuar
tres periodos que se usa
el enunciado en la línea siguiente, pero se requieren una coma y una elipsis (...) al final de la
para indicar que una fIla
línea, lo que indica que la fIla continúa. También puede usar la elipsis para continuar otros
continúa en la siguiente
enunciados de asignación largos en MATLAB.
Si quiere definir F con 10 valores, se podría usar cualquiera de los siguientes enuncia-
linea
dos:
F
=
F
=
[1, 52, 64, 197, 42, -42, 55, 82, 22, 109];
o
[1, 52, 64, 197� 42, -42,
SS, 82, 22, 109];
MATLAB también le permite definir una matriz en términos de otra matriz que ya se
haya definido. Por ejemplo, los enunciados
B
S
=
=
[1.5, 3.l];
[3.0. B]
regresa
S
=
3.0
1.5
3.1
De manera similar,
T
=
[ 1, 2, 3; S]
regresa
T
1
3
2
1.5
3
3.1
índice: número que
Se pueden cambiar los valores en una matriz, o incluir valores adicionales, con un número ín­
se usa para identificar
dice para especificar un elemento particular. Este proceso se llama indexación en un arreglo.
elementos en un arreglo
Por tanto, el comando
S(2)
=
-1.0;
cambia el segundo valor en la matriz S de 1.5 a
-
l. Si escribe el nombre de matriz
s
en la ventana de comandos, entonces MATLAB regresa
S
=
3.0
-1.0
3.1
También se puede extender una matriz al definir nuevos elementos. Si ejecuta el comando
5(4)
=
5.5;
http://jurgensoft.co.cc
Sección 4.1
se extiende la matriz 8 a cuatro elementos en lugar de tres. Si se define el elemento
S(8)
=
9.5;
la matriz 8 tendrá ocho valores, y los valores de 8(5), 8(6) Y 8(7) se establecerá a O. En con­
secuencia,
s
regresa
s
=
3.0
4.1.2
-1.0
3.1
5.5
o
o
o
9.5
Uso del operador dos puntos
El operador dos puntos es un operador muy poderoso para definir nuevas matrices y modificar
las existentes. Primero, puede definir una matriz igualmente espaciada con el operador dos
puntos. Por ejemplo,
H
=
H
=
1: 8
regresa
2
1
3
4
5
6
7
8
El espaciamiento por defecto es L Sin embargo, cuando se usan los dos puntos para
separar tres números, el valor medio se convierte en el espaciamiento. Por tanto,
time
=
time
=
0.0 : 0.5 : 2 .0
regresa
o
0.5000
1.0000
1.5000
2.0000
El operador dos puntos también se puede usar para extraer datos de las matrices, una carac­
terística que es muy útil en análisis de datos. Cuando en una matriz se usan dos puntos como
referencia en lugar de un número índice específico, los dos puntos representan toda la fila o
columna.
M
=
[1 2 3 4 5;
2 3 4 5 6;
3 4 5 6 7];
Se puede extraer la columna 1 de la matriz M con el comando
x
=
M(:. 1)
lo que regresa
x
=
1
2
3
Manipulación de matrices
109
1 10
Capítulo 4
MAlLAB
http://jurgensoft.co.cc
Manipulación de matrices
Esta sintaxis se puede leer como "lodas las filas en la columna 1". Puede extraer cualquiera de
las columnas en una forma similar. Por ejemplo,
y = 1'0'1(:, 4)
regresa
y =
4
5
6
se puede interpretar como "todas las filas en la columna 4". De igual modo, para extraer
una fila,
y
z
= 1'0'1(1,:)
regresa
z
1
4
3
2
5
y se lee como "fila 1, todas las columnas".
No tiene que extraer toda una fila o toda una columna. El operador dos puntos también
se puede usar para significar "desde fila hasta fila
o "desde columna hasta columna "
Para extraer las dos filas inferiores de la matriz M, escriba
_
_"
w = 1'0'1(2:3,:)
que regresa
w =
2
3
3
4
4
5
5
6
6
7
y se lee "filas 2 a
3, todas las columnas". De manera similar, para extraer sólo los cuatro nú­
meros en la esquina inferior derecha de la matriz M,
w=M(2:3,4: 5)
regresa
w
5
6
6
7
lee "filas 2 a 3 en las columnas 4 a 5".
En MATLAB, es válido tener una matriz que esté vacía. Por ejemplo, los siguientes
enunciados generarán cada uno una matriz vacía:
y
a = [ ];
b = 4:-1:5;
Finalmente, usar el nombre de matriz con un solo dos puntos, col11o
M(:)
transforma la matriz en una larga columna.
Sección 4.1
http://jurgensoft.co.cc
M :::
1
Z
3
2
3
4
3
4
5
4
5
6
5
6
7
La matriz se fonnó al listar primero la columna 1, luego agregar la columna 2
111
Idea clave: puede
al final, tomar la columna 3, etcétera. En realidad, la computadora no almacena
identificar un elemento
arreglos bidimensionales en un patrÓn bidimensional. Más bien, "piensa" en
con el uso de un solo
una matriz como en una larga lista, tal como la matriz M a la izquierda: al usar
número o índices que
un solo número índice o al usar la notaeión fila, eolumna. Para encontrar el
representen la fila y
valor en la fila 2, columna 3, use los siguientes eomandos:
columna.
M
M
:::
1
2
3
M(Z,3)
ans =
Z
3
4
3
G)
5
4
5
6
5
6
7
4
De manera. alternativa, puede usar un solo número índice. El valor en la fila 2,
columna
3
de la matriz M es el elemento número 8. (Cuente la colunma 1,
luego la columna 2 y fmalmente en la colunma
3
hasta el elemento correcto.)
El comando MATLAB asociado es
M(8)
ans = 4
�
Manipulación de matrices
Sugerencia
Puede usar l a palabra "end" para identificar l a fila o columna final e n una matriz,
incluso si no sabe qué tan grade es. Por ejemplo,
M(1,end)
regresa
M(l,end)
ans =
5
y
M(end, end)
regresa
ans=
7
como lo hace
M(end)
ans=
7
1 12
http://jurgensoft.co.cc
Capítulo 4 Manipulación de matrices MATlAS
Eje rcici o d e práct ica
4.1
Cree variables MATLAB para representar las siguientes matrices y úselas en los
ejercicios que siguen:
a =
1.
[12
17
3
6]
Asigne a la variable xl el valor en la segunda columna de la matriz
a.
En
ocasiones, esto se representa en los libros de matemáticas como el elemento
a
2.
3.
4.
l.2
Asigne a la variable x2la tercera columna de la matriz
Asigne a la variable x3la tercera fila de la matriz
Asigne a la variable x4 los valores en la matriz
decir: elementos
5.
bl. ' b2.2 Y b2,3)'
l
b a lo largo
de la diagonal (es
a como la primera
b como la segunda a la cuarta filas.
Asigne a la variable x6 los valores en la matriz
los valores en la matriz
matriz
7.
b.
b.
Asigne a la variable x510s primeros tres valores en la matriz
fila y todos los valores en la matriz
6.
a '
l)
y se podría expresar como xl =
b como las
columnas
e
como la primera columna,
2, 3 Y 4, Y los valores en la
a como la última fila.
Asigne a la variable x7 el valor del elemento
8 en la matriz b, use el esquema
de identificación de número de índice sencillo.
8.
Convierta la matriz
b en un vector columna llamado x8.
Uso de datos de temperatura
Los datos recopilados por el National Weather Service son extensivos, pero no siempre orga- ,
nizados exactamente en la forma que se quisiera (figura
1999 de los datos climatológicos de Asheville,
4.1).
Tome, por ejemplo, el resumen
Carolina del Norte. Estos datos se usatán para
practicar la manipulación de matrices: extraer y recombinar elementos para formar nuevas
matrices.
.u:RS LeToel-tB qc.kk Bro"':s� im�ie
1204� p:TI Brightne-;s1
�mll'!'roh,"e A..Ig 30. 'lOO'!> \)7;17,26 U'iC Cr",nule 073
Figura 4.1
Datos de temperatura
recopilados de un satélite
climático usado para crear
esta imagen en falso color.
(Cortesía de NASA/Jet
Propulsion laboratory.)
Sección
http://jurgensoft.co.cc
4.1
La información numérica se extrajo de la tabla y está en un archivo Excel llamado As­
heviUe_l999.xJs (Apéndice C). Use MATLAB para conformar que los valores reportados en
la fila anual son correctos para la temperatura máxima media y la temperatura mínima media,
así como para la temperatura anual alta y la temperatura anual baja. Combine estas cuatro
columnas de datos en una nueva matriz llamada temp_data.
l . Establezca el problema.
Calcule la temperatura anual máxima media, la temperatura anual mínima media, la
temperatura más alta alcanzada durante el año y la temperatura más baja alcanzada
durante el año para
2.
1999 en Asheville,
Carolina del Norte.
Describa las entradas y salidas.
Entrada Importe una matriz desde el archivo Excell Asheville_1999.xJs
Salida
Encuentre los siguientes cuatro valores: temperatura anual máxima media
temperatura anual mínima media
temperatura más alta
temperatura má baja
Cree una matriz compuesta de los valores de temperatura máxima media, los valores
de temperatura mínima media" las temperaturas mensuales más altas y las temperaturas
mensuales más bajas. No incluya los datos ánuales.
3.
Desarrolle un ejemplo a mano.
Use una calculadora, sume los valores en la columna
2
de la tabla y divida entre
12.
4. Desarrolle una solución MAILAB.
Primero importe los datos de Excel Y luego guárdelos en el directorio actual como Ashe­
ville_1999. Guarde la variable AsheviUe_l999 como el archivo Asheville_l999.mat. Esto
lo hace disponible para que se cargue en el área de trabajo desde el programa archivo-m:
"
"
"
Ejemplo 4.1
En este ejemplo se extraen datos de una matriz grande y
se usan funciones de análisis de datos para encontrar
temperaturas
alta media y baja media para el año y para encontrar la
temperatura alta y la temperatura baja para el año
"
"
"
clear, clc
" carga la matriz de datos desde un archivo
load asheville_1999
" extrae las temperaturas alta media de la matriz grande
asheville_1999(1: 12,2);
mean_max
" extrae las temperaturas baja media de la matriz grande
mean_min
asheville_1999(1: 12,3);
" Calcula las medias anuales
annual_mean_max = mean(mean_max)
annual_mean_min
mean(mean_min)
" extrae las temperaturas alta y baja de la matriz
" grande
asbeville_1999(1:12,8):
high_temp
low_temp = asheville_1999(1: 12,lO);
" Encuentra las temperaturas máx y mín para el año
max(high_temp)
max_high
min_low = min(low_temp)
" Crea una nueva matriz sólo con la información
" de temperatura
new_table [mean_max, mean_min, high_temp, low_temp]
=
=
=
=
=
=
Manipulación de matrices
1 13
1 14
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATlAB
Los resultados se despliegan en la ventana de comandos:
annual_mean_max
68.0500
annual_mean_min
46.3250
max_high
96
min_low
9
new_table
51.4000
31.5000
32.1000
52.6000
52.7000
32.5000
70.1000
48.2000
51.5000
75.0000
60.9000
80.2000
64.9000
85.7000
63.0000
86.4000
54.6000
79.1000
45.5000
67.6000
40.7000
62.2000
30.5000
53.6000
=
=
=
=
=
78.0000
66.0000
76.0000
83.0000
83.0000
90.0000
96.0000
94.0000
91.0000
78.0000
76.0000
69.0000
9.0000
16.0000
22.0000
34.0000
40.0000
50.0000
56.0000
54.0000
39.0000
28.0000
26.0000
15.0000
5. Ponga a prueba la solución.
Compare los resultados contra la línea inferior de la tabla de la Encuesta Climatológica
de Asheville, Carolina del Norte. Es importante confirmar que los resultados son preci­
sos antes de comenzar a usar cualquier programa de computadora para procesar datos.
4.2
•
PROBLEMAS CON DOS VARIABLES
Todos los cálculos realizados hasta el momento han usado sólo una variable. Desde luego,
la mayoría de los fenómenos físicos puede variar con muchos factores diferentes. En esta
sección se considera cómo realizar los mismos cálculos cuando las variables se representan
mediante vectores.
Considere los siguientes enunciados MATLAB:
x
=
Y
A
3;
5;
x * y
Dado que x y y son escalares, es un cálculo sencillo:
A
x
.
y=
15, o
=
15
Ahora vea lo que ocurre si x es una matriz y y todavía es un escalar:
x
=
1:5;
regresa cinco valores de x. Dado que y todavía es un escalar con sólo un valor (5),
A
=
x * y
http://jurgensoft.co.cc
Sección 4.2
Problemas con dos variables
1 15
regresa
A =
5
10
15
20
25
Todo esto todavía es revisión. Pero, ¿qué ocurre s i ahora y e s u n vector? Entonces
1:3;
y
A = x * y
regresa un enunciado de error
??? Error using ==> *
Inner matrix dimensions must agree.
Este enunciado de error (las dimensionys internas de matriz deben concordar) le re­
cuerda que el asterisco es el operador para multiplicación matricial, que no es lo que se quie­
re. Se quiere el operador punto-asterisco
(.*),
que realizará una multiplicación elemento por
Idea clave: cuando
se formulan problemas
con dos variables, las
elemento. Sin embargo, los dos vectores, x y y. necesitarán tener la misma longitud para este
dimensiones de la matriz
propósito. En consecuencia,
deben concordar.
y = linspace(1,3,5)
crea un nuevo vector y con cinco elementos igualmente espaciados:
y
1.5000
1.0000
* y
A = x
A =
3
1
6
2 .0000
3.0000
2 .5000
15
10
No obstante, aunque esta solución funciona, el resultado probablemente no es lo que en reali­
dad quiere. Puede pensar en los resultados eomo en la diagonal en una matriz (tabla 4.1).
¿Y si quiere conocer el resultado para el elemento
3
del vector x y el elemento 5 del
vector y? Obviamente, este enfoque no da todas las posibles respuestas. Se quiere una matriz
bidimensional de respuestas que eorresponda a todas las combinaciones de x y y. Con la fi­
nalidad de que su respuesta, A, sea una matriz bidimensional, los vectores de entrada deben
ser matrices bidimensionales. MAnAB tiene una función interna llamada meshgrid, que le
ayudará a lograr esto, e incluso x y y no tÍ.enen que ser del mismo tamaño.
Primero cambic y de nuevo a un vector de tres elementos:
y = 1:3;
Tabla 4.1
Resultados de un cálculo elemento por elemento
x
1
I
y
1.0
1.5
2.0
2.5
3.0
2
1
3
•
3
4
.
I
I
.
I
I
5
6
10
?
15
116
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATLAB
Luego se usará meshgrid para crear una nueva versión bidimensional de x y y que se llamarán
new_x y new-y:
[new_x, new-y]=meshgrid(x,y)
Idea clave: use la
función meshgrid para
meshgrid
El eomando
toma los dos vectores de entrada y crea dos matrices bidimen­
sionales. Cada una de las matrices resultantes tiene el mismo número de filas y columnas. El
mapear dos variables
número de columnas se determina por el número de elementos en el vector x, y el número de
unidimensionales en
filas se determina mediante el número de elementos en el veetor y. Esta operación se llama
variables bidimensionales
mapeo de vectores en un arreglo bidimensional:
de igual tamaño.
new_x =
1
1
1
2
2
2
3
3
3
4
4
4
5
5
5
1
2
3
1
2
3
1
2
3
1
2
3
new-y =
1
2
3
Note que todas las filas en new_x son las mismas y todas las columnas en new-y son las
mismas. Ahora es posible multiplicar new_x por new-y y obtener la retícula bidimensional de
resultados que realmente se quiere:
A = new_x. *new-y
A =
2
4
6
1
2
3
3
6
9
4
8
12
5
10
15
Eiercicio de práctica 4.2
1. El área de
un
longitud X ancho).
rectángulo es longitud por ancho
Encuentre las áreas de los rectángulos con longitudes de 1,3 Y 5 cm y con
anchos de 2,
4, 6 Y 8 cm. (Debe tener 12 respuestas.)
2. El volumen de un cilindro es volumen
rrrh. Encuentre el volumen de los
contenedores cilíndricos con radios desde O hasta
12
m y alturas desde
10
hasta 20 m. Aumente la dimensión del radio por 3 metros y la altura por
2 metros conforme abarca los dos rangos.
Radio
r
Anchow
Longitud 1
r
--:::3
Altura h
Sección
http://jurgensoft.co.cc
Problemas con dos variables 117
4.2
" "Mé'·" -
Distancia al horizonte
Probablemente ha experimentado estar de pie en lo alto de una colina o montaña y.sentido que
puede ver hasta el infmito. ¿Realmente cuán lejos puede ver? Depende de la altura de la mon­
taña y del radio de la Tierra, como se muestra en la figura 4.2. La distancia hasta el horizonte
es muy diferente en la Luna que en la Tierra, porque el radio es diferente para cada una.
Con el teorema de Pitágoras se ve que
R2
d2
+
=
(R
+
h)2
Vh2 + 2Rh.
y despejar d produce d
A partir de esta última expresión, encuentre la distancia hasta el horizonte en la Tierra y
en la Luna, para montañas desde O hasta 8000 metros. (El monte Everest tiene 8850 metros de
altó.) El radio de la Tierra es 6378 km y el de la Luna es de 1737 km.
=
1. Establezca el problema.
Encontrar la distancia hasta el horizonte desde lo alto de una montaña en la Luna y en
la Tierra.
2. Describa las entradas y salidas.
Entrada
Radio de la Luna
Radio de la Tierra
Altura de las montañas
1737 km
6378 km
O a 8000 metros
Salida
Distancia hasta el horizonte, en kilómetros
3. Desarrolle un ejemplo a mano.
Distancia hasta
el horizonte, d
la montaña
/""
Radio
Distancia hasta
Altura de
el horizonte
Radio de
"
la Tierra, R
Radio más la altura
de la montaña, R
+
h
de la
Tierra
Figura 4.2
Distancia hasta el
horizonte.
1 18
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATlAB
Con el radio de la Tierra y una montaña de 8000 metros se obtiene
d
=
V(8kmf
+ 2 X
6378km
X
8km
=
319 km
4. Desarrolle una solución MATLAB.
%Ejemplo 4.2
%Encontrar la distancia hasta el horizonte
%Definir la altura de las montañas
% en metros
clear, elc
format bank
%Definir el vector altura
h=0:1000:8000;
%Convierte metros a km
h=hj1000;
%Definir los radios de la luna y la Tierra
radius = [1737
6378];
%Mapea los radios y alturas en una retícula 2-D
[Radius,H]=meshgrid(radius,h);
%Calcula la distancia hasta el horizonte
d=sqrt(H.A2 + 2*H.*Radius)
Ejecutar el archivo-m precedente regresa una tabla de las distancias hasta el horizonte
tanto en la Luna como en la Tierra:
d
=
o
58.95
83.38
102.13
117.95
131.89
144.50
156.10
166.90
o
.
112.95
159.74
195.65
225.92
252.60
276.72
298.90
319.55
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. La distancia hasta el horizonte
desde cerca de la cima del monte Everest (8000 m) es de más de 300 km e iguala el
valor calculado en MATLAB.
·'''MOI·'i·
Caída l ibre
La ecuación general para la distancia que recorre un cuerpo en caída libre (sin tomar en cuenta
la fricción del aire) es
d
1
=
-gt2
2
Sección
http://jurgensoft.co.cc
4.2
Problemas con dos variables 119
donde
d = distancia,
g = aceleración debida a la gravedad, y
t = tiempo.
Cuando un satélite orbita un planeta, está en caída libre. Muchas'personas creen que,
cuando el transbordador espacial entra en órbita, deja detrás la gravedad; pero la gravedad es
lo que mantiene al transbordador en órbita. El transbordador (o cualquier satélite) en realidad
cae hacia la Tierra (figura 4.3). Si va lo suficientemente rápido de manera horizontal, perma­
nece en órbita; si va muy lentamente, golpea el suelo.
El valor de la constante g, la aceleración debida a la gravedad, depende de la masa del
planeta. En diferentes planetas, g tiene diferentes valores (tabla 4.2).
Encuentre qué tan lejos caería un objeto en tiempos desde O hasta 100 segundos en cada
uno de los planetas del sistema solar y en la Luna.
1. Establezca el problema.
Encontrar la distancia que recorre un objeto en caída libre en planetas con diferentes
gravedades.
2. Describa las entradas y salidas
Entrada Valor de g, la aceleración debida a la gravedad, en cada uno de los planetas
y la Luna
Tiempo = O a 100 s
Salida
Distancias calculadas para cada planeta y la Luna
3. Desarrolle un ejemplo a mano.
d
=
Y2 gt2, así que en Mercurio, a
1 00 segundos:
lI:z X 3.7 mls2 X 1 O()2 S2
d = 18,500 ID
d =
,
,
/
/
/
/
,
"1
-
-
-
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
/
/
/
Figura 4.3
El transbordador espacial
cae constantemente hacia
la Tierra. (Cortesía de
NASA/Jet Propulsion
laboratory.)
120
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATLAB
Tabla 4.2 Aceleración debida a la gravedad en el sistema solar
Mercurio
9 = 3.7 m/s2
Venus
9 = 8.87 m/s2
Tierra
9 = 9.8 m/s2
luna
9 = 1.6 m/s2
Marte
9 = 3.7 m/s2
Júpiter
9 = 23.12 m/s2
Saturno
9 = 8.96 m/s2
Urano
9 = 8.69 m/s2
Neptuno
g=11.0m/s2
Plutón
9 = .58 m/s2
4. Desarrolle una solución MATLAB.
%Ejemplo 4.3
%Caída libre
clear, cle¡:
%Intente el problema primero sólo con dos planetas y una
% retícula burda
format bank
%Oefinir constantes para aceleración debida a gravedad en
%Mercurio y la Luna de la Tierra
G = [3.7, 8.87];
T=0:10:100;
%Oefinir vector tiempo
%Mapea G y T en matrices 20
[g,t]=meshgrid(G,T);
%Calcula las distancias
d=1j2"'g.*t.A2
La ejecución del archivo-m precedente regresa los siguientes valores de la distancia que
se recorre en Mercurio y en la Luna de la Tierra.
d =
o
o
185.00
740.00
1665.00
2960.00
4625.00
6660.00
9065.00
11840.00
14985.00
18500,00
443.50
1774.00
3991.50
7096.00
11087.50
15966,00
21731.50
28384.00
35923.50
44350.00
Sección
http://jurgensoft.co.cc
4.2
Problemas con dos variables
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. Se puede ver que la distancia
que se recorre en Mercurio a 100 segundos es 18,500 m, que corresponde al cálculo a
mano.
El archivo-m incluye los cálculos sólo para los dos primeros planetas y se realizó
primero para trabajar cualesquiera dificultades de programación. Una vez que se con­
firma que el programa funciona, es fácil volver a hacerlo con los datos para todos los
planetas:
%Vuelva a hacer el problema con todos los datos
clear, clc
format bank
%Defina constantes
m Howto Add 0 �s New
Shortcuts
• x
(ommand Wtndow
d
11
x
=
Co1umns 1 through 4
<1x11 dou ... 1x ...
<11x10 do ... 1...
<11x10 do ... 1...
<11x10 do ... 1 ...
88 (
o
o
o
o
185.00
443.50
490.00
80.00
880 (
740.00
1774.00
1960.00
320.00
1665.00
3991.50
4410.00
720.00
880 (
880 (
Curr.... Dlredtx')' Wtrl
C:ornmand nktory
"
x1abe1 ( 'Score' )
('#
oE
students' )
std (scores)
II
var (scores)
7/24/05 12:42
f,m' Cl<
time
=
0.0
clear , c1c
echo off
7840.00
1280.00
12250.00
2000.00
2880.00
6660.00
15966.00
17640.00
9065.00
21731.50
24010.00
3920.00
11840.00
28384.00
31360.00
5120.00
14985.00
35923.50
39690.00
6480.00
18500.00
44350.00
49000.00
8000.00
o
o
o
o
185.00
1156.00
448.00
434.50
740.00
4624.00
1792.00
1738.00
1665.00
10404.00
4032.00
3910.50
4625.00
28900.00
6660.00
41616.00
16128.00
15642.00
9065.00
56644.00
21952.00
21290.50
11840.00
73984.00
28672.00
27808.00
14985.00
93636.00
36288.00
35194.50
18500.00
115600.00
44800.00
43450.00
2960.00
20.3653A2
8-%--
7096.00
11087.50
Co1umns 5 through 8
hist(scores,25)
1abe1
x
2960.00
4625.00
:
0.5
PM --%
:
2.0
18496.00
7168.00
6952.00
11200.00
10862.50
.. �
..a
Figura 4.4
Resultados de los cálculos de distancia para un objeto que cae en cada uno de los planetas.
121
122
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATLAB
G = [3.7, 8.87, 9.8, 1.6, 3.7, 23.12 8.96, 8.69, 11.0, 0.58];
T=O: 10: 100;
%Mapea G y T en matrices 2D
[g,t]=meshgrid(G,T);
%Calcula las distancias
d=l/2*g. *t. A2
Existen muchas cosas importantes a notar acerca de los resultados que se muestran en la
figura 4.4. Primero, observe la ventana del área de trabajo. G es una matriz
valor para cada uno de los planetas y la Luna) y T es una matriz
tiempo). Sin embargo, tanto g como
1 X 11 (11
1 X 1 0 (un
valores de
t son matrices 1 1 X 1 0, el resultado de la operación
meshgrid. Los resultados que se muestran en la ventana de comandos se formatearon
format bank para hacer la salida más fácil de leer; de otro modo, ha­
con el comando
bría habido un factor de escala común.
�
Suge r e nci a
Mientras crea un programa MATLAB en la ventana de edición, tal vez quiera
comentar aquellas partes del código que sabe que sí funcionan y quitar los comentarios
más tarde. Aunque puede hacer esto al agregar un % a la vez en cada línea, es más
fácil seleccionar
text de la barra de menú. Sólo resalte la parte del código que
quiere comentar y luego elija comment del menú desplegable text. Para borrar los
comentarios, resalte y seleccione uncomment del menú desplegable
text (text-">
uncomment). También puede acceder a este menú haciendo dic en el lado derecho de
la ventana de edición.
•
4.3
MATRICES ES PECIALES
MATLAB contiene un grupo de funciones que generan matrices especiales; en la tabla 4.3 se
presentan algunas de dichas funciones.
4.3.1
Matriz de ceros
A veces es útil crear una matriz de ceros. Cuando se usa la función
mento escalar de entrada, se genera una matriz cuadrada:
A
zeros(3)
A
o
O
O
O
O
O
O
O
O
zeros con un solo argu­
http://jurgensoft.co.cc
Sección 4,3
Tabla 4.3 Funciones para crear y manipular matrices
zeros(m)
Creo una matriz m X m de ceros
zeros(3)
ans =
O
O
O
O
O
O
O
O
O
zeros(m,n)
Creo una matriz m x n de ceros
zeros(2,3)
ans
O
O
O
O
O
O
ones(m)
Creo una matriz m X m de unos
ones(3)
ans =
1
1
1
1
1
1
1
1
1
ones(2 ,3)
ans =
1
1
1
1
1
1
ones(m,n)
Creo una matriz m X n de unos
Extrae la diagonal de una
matriz bidimensional A
A=[l 2 3; 3 4 5; 1 2 3];
diag(A)
ans =
1
4
3
Para cualquier vector Al creo una
matriz cuadrada con A como la
diagonal. Verifique la función help
para otras formas en que se puede
usar la función diag
A=[l 2 3];
diag(A)
ans =
1
O
O
2
O
O
3
O
O
fl iplr
Volteo una matriz en su imagen
especular de derecha a izquierda
A=[l O O; O 2 O; O O 3];
flipl r(A)
ans =
O
1
O
2
O
O
3
O
O
flipud
Volteo una matriz verticalmente
flipud(A)
ans =
O
O
2
O
1
O
3
O
O
magic(3)
ans =
1
8
3
5
4
9
6
7
2
diag(A)
magic(m)
Creo una matriz
"mágica" m x m
Matrices especiales
123
124
Capítulo A
http://jurgensoft.co.cc
Manipulación de matrices MATlAB
Si se usan dos argumentos escalares. el primer valor especifica el número de filas y el segundo
argumento espeeifica el número de columnas:
B
B
zeros(3,2)
o
O
O
Idea clave: use una
matriz de ceros o unos
como un marcador de
posición para futuros
cálculos.
4.3.2
O
O
O
Matriz de unos
La función ones es similar a la función zeros. pero crea una matriz de unos:
A
A
ones(3)
1
1
1
1
1
1
1,
1
1
Como con la función zeros, si se usan dos entradas, se puede controlar el número de
filas y columnas:
B = ones(3,2)
B =
1
1
1
1
1
1
Las funciones zeros y ones son útiles para crear matrices con valores "marcadores de po­
sición" (placeholders) que se llenarán más tarde. Por ejemplo, si
un vector de cinco
números, los cuales sean iguales a 1r, primero puede crear un vector de unos:
a=ones(1,5)
Esto da
a
1
Luego multiplicar por
1
1
1
1
1r:
b=a*pi
El resultado es
b =
3.1416
3.1416
3.1416
3.1416
3.1416
El mismo resultado se podría obtener al sumar 1r a una matriz de ceros. Por ejemplo,
a=zeros(I,5) ;
b=a+pi
produce
b =
3.1416
3.1416
3.1416
3.1416
3.1416
Una matriz de marcadores de posición es especialmente útil en programas MATLAB con una
estructura de bucle (loop), porque puede reducir el tiempo que tarda en ejecutarse el bucle.
http://jurgensoft.co.cc
4.3.3
Sección 4.3
Matrices especiales
125
Matrices diagonal
Puede usar la función diag para extraer la diagonal de una matriz. Por ejemplo, si se define
una matriz cuadrada
A=[1 2 3: 3 4 5; 1 2 3];
entonces usar la función
diag (A)
extrae la diagonal principal y produce los siguientes resultados:
ans
1.00
4.00
3.00
Se pueden extraer otras diagonales al definir una segunda entrada, k, a diag. Los valores
positivos de k especifican diagonales en la esquina superior derecha de la matriz, y los valo­
res negativos especifican diagonales en la esquina inferior izquierda de la matriz. (Véase la
figura 4.5.)
t;�
k=l
k=-
:-l
A=
4
1
diag(A,I)
3
Figura 4.5
regresa
Codo diagonal en una
motriz se puede describir
mediante el parámetro k.
ans
2
5
Si, en lugar de usar una matriz bidimensional corno entrada para la función diag, se usa un
vector como
8= [1 2 3];
entonces MATLAB usa el vector para los valores a lo largo de la diagonal de una nueva matriz
y llena los elementos restantes con ceros:
diag(B)
ans =
1
O
o
O
2
O
O
O
3
Al especificar un segundo parámetro, se puede mover la diagonal a cualquier lugar en la matriz:
diag(B,I)
ans =
O
1
O
O
O
O
2
O
O
O
O
3
O
O
O
O
126
Capítulo 4
Manipulación de matrices
MATlAS
http://jurgensoft.co.cc
4.3.4 Matrices mágicas
MATLAB incluye una función matricial llamada magic que genera una matriz con propieda­
des ¡nusuales. Pareee no haber algún uso práctico para las matrices mágicas, excepto que son
divertidas. En una matriz mágiea, la suma de todas las columnas es la misma, al igual que l a
suma d e todas las filas. Un ejemplo es
A=magic(4)
A
16
2
11
5
7
9
4
14
sum(A)
ans
34
3
10
6
15
13
8
12
1
34
34
34
Para encontrar la suma de las filas, es necesario trasponer la matriz:
sum(A')
ans =
34
34
34
34
No sólo la suma de todas las columnas y filas es la misma, también l a suma de las diagonales
es la misma. La diagonal de izquierda a derecha es
diag(A)
ans =
16
11
6
1
La suma de la diagonal es el mismo número que la suma de las filas y columnas:
sum(diag(A) )
ans
34
=
Finalmente, para encontrar la diagonal de inferior izquierda a superior derecha, primero se
tiene que "voltear" la matriz y luego encontrar la suma de la diagonal:
fliplr(A)
ans =
3
13
10
8
12
6
15
1
diag(ans)
ans =
13
10
2
11
7
14
16
5
9
4
http://jurgensoft.co.cc
Sección 4,3 Matrices especiales
Figura
127
4.6
"Melancolía", de Albrecht
Dürer, 1514.
7
4
sum(ans)
ans
34
=
En la figura
4.6 se
muestra uno de los primeros ejemplos documentados de un cuadra­
do mágico, en el grabado en madera "Melancolía", creado por Albrecht Dürer en 1514. Los
expertos creen que el cuadrado era una referencia a los conceptos alquímicos populares en
la época. La fecha de un grabado se incluye en los dos cuadrados medios de la fila inferior.
(Véase la figura 4.7.)
Los cuadrados mágicos han fascinado durante siglos a los matemáticos tanto profe­
sionales como aficionados. Por t;jemplo, Benjamín Franklin experimentó con los cuadrados
mágicos. Usted puede crear cuadrados mágicos de cualquier tamaño mayores que 2 X 2 en
MATLAB. Sin embargo, son posibles otros cuadrados mágicos; la solución de MATLAB no
es la única.
Figura
4.7
Albrecht Dürer incluyó la
fecha del grabado (1514)
en el cuadrado mágico.
128
http://jurgensoft.co.cc
Capítulo 4 Manipulación de matrices MAllAB
Ejercicio de práctica 4.3
1.
Cree una matriz 3
2. Cree una matriz 3
3.
4.
5.
X 3 de ceros.
X 4 de
ceros.
Cree una matriz 3
X 3 de unos.
Cree una matriz 5 X 3 de unos.
Cree una matriz 4 X 6 en la que todos los elementos tengan un valor de pi.
6. Use la función diag para crear una matriz cuya diagonal tenga valores de
7.
Cree una matriz mágica
1,2,3.
10 X 10.
a. Extraiga la diagonal de esta matriz.
b. Extraiga la diagonal que corre de inferior izquierda a superior derecha de
esta matriz.
"
c. Confirme que la suma de las filas, columnas y diagonales son todas
iguales.
• ¡'ij¡'MU.t-----· --·
-----
--- ---
Este capítulo se concentró en la manipulación de matrices, una capacidad que permite al usua­
rio crear matrices complicadas al combinar unas más pequeñas. También le permite extraer
porciones de una matriz existente. El operador dos puntos es especialmente útil para dichas
operaciones. El operador dos puntos se debe interpretar como "todas las filas" o "todas las
columnas" cuando se usa en lugar de una designación de fila o columna. Se debe interpretar
como "desde
hasta
" cuando se usa entre números de fila o columna. Por ejemplo,
A(:,2:3)
se debe interpretar como "todas las filas en la matriz A y todas las columnas desde 2 hasta 3".
Cuando se usa solo como el índice exclusivo, como en
A(:),
crea una matriz que es una sola
columna a partir de una representación bidimensional. En realidad la computadora almacena
toda la información de arreglo como una lista, lo que hace tanto de la notación de Índice solo
como de la notación fila-columna alternativas útiles para especificar la ubicación de un valor
en una matriz.
La función
meshgrid es extremadamente útil, dado que se puede usar para mapear
veetores en matrices bidimensionales, lo que hace posible la realización de cálculos de arreglo
con vectores de tamaño desigual.
MATLAB contiene algunas funciones que facilitan la creación de matrices especiales:
•
•
•
zeros, que se usa para crear una matriz compuesta completamente de ceros.
ones, que se usa para crear una matriz compuesta completamente de unos.
diag, que se puede usar para extraer la diagonal de una matriz o, si la entrada es un vector,
se puede usar para crear una matriz cuadrada.
•
magic, que se puede usar para crear una matriz con la propiedad inusual de que todas las
filas y columnas suman el mismo valor, así como las diagonales.
Además, se incluyeron algunas funciones que permiten al usuario "voltear" la matriz de iz­
quierda a derecha o de arriba abajo.
RESUMEN MATLAB
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
http://jurgensoft.co.cc
Problemas
129
operador dos p untos
elipsis, que indica continuación e n
la línea siguiente
[]
matriz vacía
meshgrid
mapea vectores en un arreglo bidimensional
zeros
crea una matriz de ceros
ones
crea una matriz de unos
diag
extrae la diagonal de una matriz
fl iplr
voltea una matriz en su imagen especular,
de izquierda a derecha
flipud
voltea una matriz verticalmente
magic
crea una matriz "mágica"
elementos
matrices mágicas
números índice
mapeo
TÉRMINOS CLAVE
subíndices
Manipulación de matrices
4.1
Cree las siguientes matrices y úselas en los ejercicios que siguen:
a
3
8
3
[� �]
14
b
e
[12
18
5
2]
82
(a)
Cree una matriz llamada d a partir de la tercera columna de la matriz
(b)
Combine la matriz
a.
b y la matriz d para crear la matriz e, una matriz bidimensional
con tres filas y dos columnas.
(e)
Combine la matriz
b
y la matriz
d para crear
la matriz
f, una matriz unidimensio­
nal con seis filas y una columna.
(d)
Cree una matriz g a partir de la matriz
a y los primeros tres elementos de la matriz
e, con cuatro fllas y tres columnas.
(e)
Cree una matriz
b con el primer elemento igual a a1.3' el segundo elemento igual a
y el tercer elemento igual a
4.2
Cargue el archivo
b2,]'
tbermo_seores.dat
proporcionado por su instructor, o ingrese la
matriz de la parte superior de la página
130
y llámela
tbermo_scores.
(Sólo ingrese
los números.)
(a)
Extraiga las calificaciones y número de estudiante para el estudiante
tor flla llamado
5 en un vec-
studenCS.
(b)
Extraiga las calificaciones para el examen
(e)
(d)
Encuentre la desviación estándar y la varianza para cada examen.
Si supone que cada examen valía
100
1
en un vector columna llamado
tesC!.
puntos, encuentre la calificación final total
y el porcentaje final de cada estudiante. (Tenga cuidado de no sumar el número de
estudiante.)
(e)
Cree una tabla que incluya los porcentajes fInales y las calificaciones de la tabla
original.
130
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATlAB
�1 EDftleIt2 Examen 3
(f)
1
68
45
92
2
83
54
93
3
61
67
91
4
70
66
92
5
75
68
96
6
82
67
90
7
57
65
89
8
5
69
89
9
76
62
97
10
85
52
94
11
62
34
87
12
71
45
85
13
96
56
45
14
78
65
87
15
76
43
97
16
68
76
95
17
72
65
89
18
75
67
88
19
83
68
91
20
93
90
92
Ordene la matriz sobre la base del porcentaje final, de mayor a menor (en orden
descendente), y conserve juntos los datos de cada fila. (Es posible que necesite
consultar la función help para determinar la sintaxis adecuada.)
4.3
Considere la siguiente tabla:
1
TermompJe2
"F
T�e3
"F
O
84.3
90.0
2
86.4
89.5
87.6
4
85.2
88.6
88.3
6
87.1
88.9
85.3
8
83.5
88.9
80.3
10
84.8
90.4
82.4
12
85.0
89.3
83.4
14
85.3
89.5
85.4
86.7
16
85.3
88.9
86.3
18
85.2
89.1
85.3
89.0
20
82.3
89.5
22
84.7
89.4
87.3
24
83.6
89.8
87.2
(a) Cree
un
vector columna llamado
times que vaya de
O a 24 en incrementos de 2
horas.
(b) Su instructor le puede proporcionar la� temperaturas de terrnocople en un archivo
llamado thermocouple.dat, o tal vez necesite crear usted mismo una matriz lla­
mada thermocouple escribiéndole los datos.
(e) Combine el vector times que creó en la parte (a) con los datos de thermocouple
para crear una matriz que corresponda a la tabla de este problema.
http://jurgensoft.co.cc
Problemas
131
(d) Recuerde que las funciones max y min pueden regresar no sólo los valores máxi mos en una columna, sino también el número de elemento donde ocurren dichos
valores. Use esta capacidad para determinar los valores de times a los que ocurren
los máximos y mínimos en cada columna.
4.4
Suponga que un archivo llamado
sensor.dat contiene información recopilada de un
conj unto de sensores. Su instructor le puede proporcionar este archivo, o usted puede
ingresarlo a mano a partir de los siguientes datos:
Seusor 2
Sensor 3
Sensor 4
Sensor 5
73.1764
0.0000
70.6432
68.3470
72.3469
67.6751
1.0000
73.2823
65.7819
65.4822
71.8548
66.9929
73.6414
72.7559
2.0000
64.1609
72.4888
70.1794
3.0000
67.6970
77.4425
66.8623
80.5608
64.5008
4.0000
68.6878
67.2676
72.6770
63.2135
70.4300
5.0000
63.9342
65.7662
2.7644
64.8869
59.9772
6.0000
63.4028
68.7683
68.9815
75.1892
67.5346
7.0000
74.6561
73.3151
59.7284
68.0510
72.3102
8.0000
70.0562
65.7290
70.6628
63.0937
68.3950
9.0000
66.7743
63.9934
77.9647
7 1.5777
76.1828
10.0000
74.0286
69.4007
75.0921
77.7662
66.8436
1 1.0000
71.1581
69.6735
62.0980
73.5395
58.3739
12.0000
65.0512
72.4265
69.6067
79.7869
63.8418
66.5917
72.5227
75.2782
13.0000
76.6979
67.0225
14.0000
71.4475
69.2517
64.8772
79.3226
69.4339
15.0000
77.3946
67.8262
63.8282
68.3009
71.8961
1 6.0000
75.6901
69.6033
71.4440
64.30 1 1
74.7210
17.0000
665793
77.6758
67.8535
68.9444
59.3979
18.0000
63.5403
66.9676
70.2790
75.9512
66.7766
19.0000
6 9.6354
63.2632
68.1606
64.4190
66.4785
Cada fila contiene un conjunto de lecturas de sensor, donde la primera fila contiene
valores recopilados a O segundos, la segunda fila contiene valores recopilados a
1 .0
segundos, etcétera.
(a) Lea el archivo de datos e imprima el número de sensores y el número de segundos
de datos contenidos en el archivo. (Sugerencia: Use la función size, no sólo cuen­
te los dos números.)
(b) Encuentre los valores máximo y mínimo registrados en cada sensor. Use MATLAB
para determinar en qué momentos ocurrieron.
(e) Encuentre la media y la desviación estándar para eada sensor y para todos los
valores de datos recopilados. Recuerde: la columna 1 no contiene datos de sensor;
contiene datos de tiempo.
Problemas con dos variables
4.5
�
--------- -- -�----t
/
�turah
----O>... _l
L---__
Base b
X altura. (Véase la tlgura P4.5. ) Encuentre
el área de un grupo de triángulos cuya base varía de O a 10 metros y cuya altura varía
de 2 a 6 metros. Elij a un espaciamiento adecuado para sus variables de cálculo. Su
Figura P4.5
respuesta debe ser una matriz bidimensional.
El área de un triángulo.
El área de un triángulo es área
=
Y2 base
132
Capítulo 4
http://jurgensoft.co.cc
Manipulación de matrices MATLAB
4.6
Un barómetro (véase la figura P4.6) se usa para medir la presión atmosférica y se llena
con un fluido de alta densidad. En el pasado se usaba mercurio, pero desde entonces s e
sustituyó con una diversidad d e otros fluidos debido a s u s propiedades tóxicas. La pre­
sión p medida por un barómetro es la altura de la columna de fluido, h, por la densidad
del líquido, p, por la aceleración debida a la gravedad, g, o
P
=
hpg
Esta ecuación se puede despejar para la altura:
h
Figura P4.6
Barómetro.
4.7
p
pg
Encuentre la altura a la quc la columna de líquido se elevará para presiones desde O
hasta 1 0 kPa para dos barómetros diferentes. Suponga que el primero usa mercurio,
con una densidad de 1 3.56 'g/cm' ( 1 3 ,560 kg/m3) y que el segundo usa agua, con una
densidad de l .0 g/cm3 ( 1000 kg/m3). La aceleración debida a la gravedad es 9.81 mls2•
Antes de comenzar a calcular, asegúrese de verificar las unidades. La medida métrica
de la presión es un Pascal (Pa), igual a 1 kg mls2• Un kPa es 1000 veces mayor que un
Pa. Su respuesta debe ser una matriz bidimensional.
La ley del gas ideal Pu RT describe el comportamiento de muchos gases. Cuando se
despeja v (el volumen específico, m3/kg) l a ecuación se puede escribir
=
v
RT
P
Encuentre el volumen específico para el aire, para temperaturas de 100 a 1 000 K Y
para presiones de 100 kPa a 1 000 kPa. El valor de R para el aire es 0.2870 kJ/(kg K).
En esta formulación de la ley del gas ideal, R es diferente para cada gas. Existen otras
formulaciones en las que R es una constante y el peso moleeular del gas se debe incluir
en el cálculo. Aprenderá más acerca de esta ecuación en las clases de química y termo­
dinámica. Su respuesta debe ser una matriz bidimensional.
Matrices especiales
4.8
4.9
Cree una matriz de ceros del mismo tamaño que las matrices a, b y e del problema 4.1.
(Use la función size para ayudarse a cumplir esta tarea.)
Cree una matriz mágica de 6 x 6.
(a) ¿Cuál es l a suma d e cada una d e las filas?
(b) ¿Cuál es la suma de cada una de las columnas?
(e) ¿Cuál es la suma de cada una de las diagonales?
4.10
Extraiga una matriz 3 X 3 de la esquina superior izquierda de la matriz mágica que
creó en el problema 4.9.
también es una matriz mágica?
http://jurgensoft.co.cc
4.11
Cree una matriz mágica de
5 X5
• l a matriz a.
• 2 por l a matriz a.
• una matriz fonnada por elevar al cuadrado cada elemento d e a.
2 más la matriz a.
¿Su resultado es una matriz mágica? ¿La fonna en la que ordena los componentes
afecta su respuesta?
1 33
llamada a.
(a) a por una constante, como 2, ¿también es una matriz mágica?
(b) Si eleva al cuadrado cada elemento de a, ¿la nueva matriz es una matriz mágica?
(e) Si suma una constante a cada elemento, ¿la nueva matriz es una matriz mágica?
(d) Cree una matriz 1 0 X 10 a partir de los siguientes componentes (véase la figura
P4. l l):
•
Problemas
a
2*a
a A2
a+2
Figura P4. 1 1
Cree una matriz a partir de
otras matrices.
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Graficación
INTRODUCCiÓN
Las tablas de datos muy grandes son difíciles de interpretar. Los ingenieros usan téc­
nicas de graficación para hacer que la información se entiendan fácilmente. Con una
gráfica es fácil identificar tendencias, elegir altos y bajos y aislar puntos de datos que
pueden ser mediciones o cálculos de enores. Las gráficas también se pueden usar
como una rápida verificación para determinar si una solución de computadora produce
los resultados esperados.
5.1
GRÁFICAS BIDIMENSIONALES
x-y. Un conjunto de pares ordena-
La gráfica más útil para los ingenieros es la
dos se usa para identificar puntos sobre una
se conectan con líneas rectas. Los valores de
bidimensional; luego los puntos
x
y y se pueden medir o calcular. Por lo
general, a la variable independiente se le da el nombre
I�
,
,
x
y se grafica en el eje
variable dependiente recibe el nombre y y se grafica en el eje y.
x,
y la
5.1.1 Graficación básica
Gráficas x-y simples
Una vez definidos los vectores de valores
x
y valores y, MATLAB hace fácil la crea­
ción de gráficas. Suponga. a través de medición, se obtiene un eonjunto de datos tiem­
po eontra distancia.
Se pueden almacenar los valores de tiempo en un vector llamado x (el usuario
puede definir cualquier nombre conveniente) y los valores de distancia en un vector
Uamadoy:
x
=
[0:2:18] ;
y = [O , 0.3 3 ,
4.1 3 , 6.29 , 6.85 , 1 1.19 , 13.19 , 13.96 ,
16.33 , 18.17] ;
136
Capítulo 5
http://jurgensoft.co.cc
Graficación
Para graficar estos puntos, use el comando plot, con x y
y como argumentos:
pl ot (x,y)
Idea clave: incluya
siempre unidades en las
etiquetas de los ejes.
Automáticamente se abre una ventana de gráficas, la que MATLAB llama figure
1. En
la figura 5.1 se muestra la gráfica resultante. (Pueden ocurrir ligeras variaciones en la escala,
dependiendo del tipo de computadora y tamaño de la ventana de gráficas.)
Tltu/os, etiquetas y reticu'os
La buena práctica ingenieril requiere que se incluyan unidades y un título en las gráficas. Los
siguientes comandos agregan un título, etiquetas a los
x y y, y una retícula de fondo:
pl ot (x,y)
t i tl e ( ' Exper i mento de l aborato r i o 1 ' )
xl abel ('Ti empo, seg ' )
yl abel ('Di stanci a. p i es ' )
g r i d on
Estos comandos generan la gráfica de la
sola línea o dos, separadas por comas:
5.2. También se pueden escribir en una
pl ot (x,y) , t i tl e ('Experimento de l aborator i o 1 ' ) ,
xl abel ('Tiempo , seg.' ) , yl abel ('Di stancia. pies ' ), grid
cadena: lista de
Conforme escribe los comandos anteriores en MATLAB, note que el color del texto
a
caracteres encerrados
cambia
por apóstrofes
(string). El color cambia a púrpura cuando escribe el apóstrofe final ('), lo que indica que
rojo cuando ingresa un apóstrofe ('). Esto le advierte que comienza una cadena
completó la cadena. Poner atención a estos auxiliares visuales le ayudará a evitar errores de
codificación. MATLAB 6 usa diferentes pistas de color, pero la idea es la misma.
20
18
16
14
O
O
10
4
4.13
8
6
6.29
8
6.85
10
11.19
12
2
6
Figura 5.1
Gráfico simple de tiempo
contra distancio creado en
MATLAB.
4
2
o
o
2
4
8
10
12
14
16
0.33
12
13.19
14
13.96
16
16.33
18
18.17
http://jurgensoft.co.ccSección
5.1
Gráficas bidimensionales
137
Experimento de laboratorio 1
20
18
16
14
/:---
L
/
V
/
/
V
6
V,
/
4
2
o
----
Figura 5.2
/
-
O
2
4
6
8
10
12
14
16
18
Tiempo, seg
Si trabaja en la ventana de comandos, la ventana de gráficas se abrirá encima de las
otras ventanas. (Véase la figura 5.3.) Para continuar trabajando, haga dic en la ventana de
comandos o minimice la ventana de gráficas. También puede redimensionar la ventana
de gráficas a cualquier tamaño que sea conveniente o agregarla al escritorio de MATLAB al
seleccionar la flecha de acoplamiento (docking) abajo del icono exit en la esquina superior
derecha de la ventana de la figura.
�
Sugerencia
Una vez que hace die en la ventana de comandos, la ventana de figura se oculta
detrás de la ventana actual. Para ver los cambios a su figura, necesitará seleccionar
la figura de la barra de tareas de Windows en la parte inferior de la pantalla.
....
Sugerencia
Debe crear una gráfica antes de agregarle título y etiquetas. Si primero especifica el
titulo y las etiquetas, se borrarán cuando ejecute el comando plot.
Agregar una retícula, un
título y etiquetas hacen
una gráfica más fácil de
i nterpretar.
138
Capítulo 5
http://jurgensoft.co.cc
Graficacíón
[0, 0.33, 4.13,
¡x,y)
I
t-title ('Laborato"Y
f...l<l.abel (''rimEl, $<IIe'
Figura 5.3
La ventana de gráficas se
abre arriba de la ventana
de comandos. Puede
redimensionarla a una
forma conveniente.
f-ylabel ('01stanee 1
�-grld
on
t-·ti \:le ( ' Laborato"Y
�abEll(''!'imEI,
��xlabel ('Time
I
ne'
see')
:>,labEll ('01stanee,
f-g:t;1d
....
)
ft')
on
)
ft ,)
Sugerencia
Puesto que se usa un apóstrofe al final de la cadena que se ingresa en los comandos
xlabel, ylabel y title, MATLAB interpreta el apóstrofe como el final de la cadena.
Ingresar doble apóstrofe, con en xlabel('HolIy"s Data'), le permitirá usar apóstrofes
en su texto.
Creación de grólicas múltiples
Si trabaja en un archivo-m cuando solicita una gráfica,
MATLAB generará y
la ventana de gráficas
y luego continúa con más cálculos,
y luego regresará inmediatamente a
ejecutar el resto de los comandos en el programa. Si solicita una segunda gráfica, la gráfica
que creó se sobrescribirá. Existen dos posibles soluciones a este problema: use el comando
pause para detener temporalmente la ejecución de su programa archivo-m, o cree una segunda
figure.
pause detiene la ejecución del programa hasta que se oprime alguna tecIa.
Si quiere pausar durante un número
de segundos, use el comando pause(n), que
hará una pausa en la ejecución durante n segundos antes de continuar.
El comando figure le permite abrir una ventana de figura. La siguiente vez que solicite
figura, con el uso de la función
El comando
una gráfica, se desplegará en esta nueva ventana. Por ejemplo,
fi gure (2)
abre una ventana llamada figure 2, que luego se convierte e n l a ventana de uso para subse­
cuentes graficaciones. En la tabla 5.1 se resumen los comandos que se usan para crear una
gráfica simple.
Sección
http://jurgensoft.co.cc
Tabla 5.1
Gráficos bidimensionales 1 39
5.1
Funciones de graficación básicas
pl ot
Crea una gráfica x-y
pl otCx,y)
t i tl e
Agrega un título a una gráfica
t i tl e( ' My Graph ' )
xl abel
Agrega una etiqueta al eje x
Agrega una etiqueta 01 eje y
xl abel C ' Independent Var i abl e ' )
yl abel
grid
Agrega una retícula a la gráfica
gri d
gri d on
gri d off
pause
Detiene la ejecución del programa,
lo que le permite al usuario ver la
gráfica
pause
fi gure
Determina cuál figura se usará
para la gráfica actual
figu re(2)
hol d
Congela la gráfica actual, de modo
que se puede recubrir una gráfica
adicional
hol d on
hol d off
yl abel C ' Dependent Vari abl e ' )
Gráficas con más de una línea
La creación de una gráfica con más de una línea se puede lograr en muchas formas. Por de­
fecto, la ejecución de un segundo enunciado
plot
borrará la primera gráfica. Sin embargo,
puede apilar las gráficas unas encima de otras con el comando
hold OD.
Ejecute los siguientes
enunciados para crear una gráfica con ambas funciones graficadas en la misma gráfica, como
se muestra en la figura 5.4:
x
O : pi /lOO : 2*p i ¡
yl
cos (x*4) ¡
pl ot (x , yl)
y2
si nCx) ;
hol d on ;
pl ot(x , y2)
=
=
Los puntos y coma son opcionales tanto
oo. MA1LAB
en
e l enunciado
plot como
en el enunciado
hold
continuará poniendo en capa las gráficas hasta que se ejecute el comando hold off:
hol d off
0.5
Figura 5.4
-0.5
7
Se puede usar el comando
hold on para poner en
capas las gráficas sobre la
mismo figura.
1 40 Capítulo 5 Graficación
Idea clave: la gráfica
más común usada en
http://jurgensoft.co.cc
Otra fonna de crear una gráfica con múltiples líneas es solicitar ambas líneas en un solo
comando
pIot. MATLAB interpreta la entrada
a
plot corno vectores alternos x y y, como en
ingeniería es la gráfica de
dispersión x-y.
pl ot(XI , YI, X2,Y2)
donde las variables Xl,
YI fonnan un conjunto ordenado de valores a graficar,
y
X2, Y2
for­
man un segundo conjunto ordenado de valores. Con los datos del ejemplo anterior,
pl ot(x , yl , x, y2)
produce la misma gráfica que la figura 5,4, con una excepción: las dos líneas tienen colores dife­
rentes. MATLAB usa un color de graficación por defecto (azul) para la primera línea dibujada en
un comando
plot. En el enfoque hold on, cada línea se dibuja en un comando piot separado y, por
tanto, es el mismo color. Al solicitar dos líneas en un solo comando, corno en plot(x,yl,x,y2), la
segunda línea por defecto es verde, lo que permite al usuario distinguir entre las dos gráficas.
Si la función
plot se llama con un solo argumento de matriz,
separada para cada columna de la matriz. El eje
x
MATLAB dibuja una línea
se etiqueta con el vector índicc fila, 1 :k,
donde k es el número de filas en la matriz. Esto produce una gráfica igualmente espaciada, a
veces llamada gráfica línea. Si
plot se llama con
dos argumentos, uno un vector y el otro una
matriz, MATLAB grafica sucesivamente una línea para cada fila en la matriz. Por ejemplo, se
pueden combinar yl y
y
y2 en una
sola matriz y graficar contra
x:
[yI ; y2] ;
pl ot(x , Y)
=
Esto crea la misma gráfica que la figura 5,4, con cada línea en un color diferente.
He aquí otro ejemplo más complicado:
x
O : pi jlOO:2*pi ;
cos(X)*2 ;
Y1
Y2
cos(X) *3¡
cos(X)*4¡
Y3
Y4
cos(X)*5 ;
Z
[VIi Y2 ; Y3¡ Y4] ;
pl ot(X, YI, X , Y2, X, Y3 , X , Y4)
=
=
=
=
=
Este código produce el mismo resultado (figura 5.5) como
pl ot(X, Z)
Figura 5.5
Múltiples gráficas en la
misma figura.
-5L---�----�--�
0
2
3
---
-.�----�----�--�
4
5
6
7
Sección
http://jurgensoft.co.cc
5,1
Gráficas bidimensionales
14 1
10 ,-----�-----.--,---r_--_,
o
Figura 5.6
La función peaks,
-5
- 10
�
'--___L-___-'--___-"-___-'--___-'
O
�
00
W
�
La función peak es una función de dos variables que produce datos muestra útiles para
demostrar ciertas funciones de graficación. (Los datos se crean al escalar y trasladar distribu­
peaks con un solo argumento n creará una matriz n X n, Se puede
peaks para demostrar la potencia de usar un argumento de matriz en la función plot. El
ciones gaussíanas.) Llamar
usar
comando
pl ot(peaks (100»
resulta en la impresionante gráfica de la figura 5,6. La entrada a la función plot creada por
peaks es una matriz 100 X 100, Note que el eje x va de 1 a 100, los números Índice de los
datos. Indudablemente usted no lo puede decir, pero hay 100 líneas dibujadas para crear esta
gráfica, una por cada colunma.
Gráficas ele arreglas complejos
plot es un arreglo sencillo de
Si la entrada al comando
números complejos, MATLAB grafica
el componente real en el eje x y el componente imaginario en el eje y. Por ejemplo, si
A = [0+Oi ,l+2i , 2 +51 , 3+41]
entonces
pl ot(A)
regresa la gráfica que
se
muestra en la figura 5.7a.
Si se intenta usar dos arreglos de números complejos en la función
plot,
los compo­
nentes irriaginarios se ignoran. La porción real del primer arreglo se usa para los valores
x
y
la porción real del segundo arreglo se usa para los valores y. Para ilustrar, cree primero otro
arreglo llamado B al tomar el seno del arreglo complejo
A:
B=s; n (A)
regresa
B
o
3 . 1658 + 1 . 9596;
y
.
pl ot(A,B)
67 . 4789 - 30.8794;
3 . 8537 -27 . 0168;
graficada con un solo
argumento en el comando
�
142 Capítulo 5 Grafícación
Ca)
http://jurgensoft.co.cc
Gráfica de un solo arreglo complejo
5 ,-----,-----�--�--��5
4.
·8
.8
�
.§
Gráfica de dos arreglos complejos
(b)
70 r-----�----�--_,--�
>- 60
4
3.5
3
�
tro
50
:g
0
�
g
eg
30
ca 4
1:
r:
1
8
0.5
20
10
e
----L--�--�
O �--�---�2.5
2
1.5
0.5
3
O
Componente real
0.5
1
1.5
2
Componente real del arreglo X
2.5
3
Figura 5.7
(a) Los números complejos se grafican con el componente real sobre el eje x y el componente
imaginario sobre el eje y cuando se usa un solo arreglo como entrada. (b) Cuando en la función
plot se usan dos a rreglos complejos, los componentes imaginarios se ignoran.
da un enunciado de error.
Warni ng: Imag i nary parts of compl ex X and/or Y arguments
i gnored .
Los datos todavía se grafican, como se muestra en la figura 5.7b.
5.1.2 línea, color y estilo de marca
Puede cambiar la apariencia de sus gráficas al seleccionar estilo y color de línea definidos por
el usuario y al elegir mostrar los puntos de datos en la gráfica con estilos de marca definidos
por el usuario. El comando
hel p pl ot
regresa una lista de las opciones disponibles. Puede seleccionar estilos de línea sólido (por de­
fecto), rayado, punteado y raya-punto, y puede escoger mostrar los puntos. Las opciones entre
marcas incluyen signos más, estrellas, círculos y marcas x. entre otras. Existen siete diferentes
opciones de color. (Véase la tabla 5.2 para una lista completa.)
Los siguientes comandos ilustran el uso de los estilos de línea, color y marca:
[1: 10] ;
[ 58 . 5 , 63.8 , 64 . 2 , 67 . 3, 71 . 5 , 88 . 3 , 90 . 1 , 90.6, 89 . 5 ,
90 . 4] ;
pl ot(x , y , : ok ' )
x
Y
=
I
5.8a) consiste de una línea rayada, junto con puntos de
La gráfica resultante
datos marcados con círculos. La línea, los puntos y los círculos se dibujan en negro. Los indi­
cadores se citan dentro de una cadena. denotada con apóstrofes. El orden en el que se ingresan
es arbitrario y no afecta la salida.
http://jurgensoft.co.cc
Sección 5.1
Tabla 5.2
Gróficas bidimensionales
143
Opciones de línea, marca y color
... Tipo de lí.,ea
Indkactor
ñpodepunto
sólida
punto
Indicador
Color
Indicador
azul
b
punteada
círculo
o
verde
g
rayo'punto
marca x
x
rojo
r
rayada
más
+
cian
c
magenta
m
amarillo
y
negro
k
estrella
cuadrado
diamante
d
triángulo abajo
v
triángulo arriba
1\
triángulo izquierda
<
triángulo derecha
>
pentagrama
p
hexagrama
h
(b)200 r--.---.---,--�--,---�--.
90
/r·· e
85
•.....•.....
."
..... ,
�---�---�--�--/
/
/
/
/
160
140
80
--
120
75
70
65
180
� ••••• -€!•
•
•
.
'.
I!f
•
•
•
•
•
•
.0
..-
60 /.,
--
_-L
"',.., .... __ -A""
100
.
80
60 �•.••• "
/ir. .. .. .e•.•• ··O••••• -e-..••• ."
.
. .
• •"3/
-0'- ••
i
o·····
�
••••••
40
2 0L-
2
3
4
Figura 5.8
(a) Ajustar la línea, marca y color. (b) Múltiples gráficas con variantes de estilos de línea, colores y
punto.
Para especificar los estilos de línea, marca y color para múltiples líneas, agregue una
cadena que contenga la opciones después de cada par de puntos de datos. Si la cadena no se
incluye, se usan los valores por defecto. Por ejemplo,
plot(x,y,':ok',x,y*2,'--xr',x,y/2,'-b')
resulta en la gráfica que se muestra en la figura 5.8b.
-11
L-�L-�L-�__�L-���__�__�
__
1
5
6
7
8
9
10
144
Capítulo 5
http://jurgensoft.co.cc
Groficoción
Tabla 5.3 Escalamiento de ejes y anotaciones en gráficas
Cuando la /lmción axis se usa sin entradas,
congela el eje en la configuración actual.
axi s
Ejecutar la función uno segunda vez
regresa el control de eje a MATLAB
La entrada al comando axis debe ser un
axi s(v)
vector de cuatro elementos que especifique
los valores mínimo y máximo para los ejes
y y, por ejemplo [xmin,xmax,ymin,
ymax]
x
l egend('stri ngl',
' stri ng 2 ' , etc)
Le permite agregar una leyenda a su
gr6fica. La leyenda muestra un modelo de
la línea y menciono la cadena que
especificó
text(x_coordi nate , y_coord i nate .
Le permite agregar un recuadro de texto o
' st r i ng')
lo gr6fica. El recuadro se coloco en los
coordenodos x y y especificadas y contiene
el valor de cadena especificado
El comando
plot ofrcce opciones adicionales para controlar la fonna en que aparecc la
help
gráfica. Por ejemplo, se puede controlar el ancho de línea. Las gráficas que tienen la intención
de verse desde lejos pueden observarse mejor con líneas más grucsas. Use la función
para aprender más acerca de cómo controlar la apariencia de la gráfica, o use los controles
interactivos que se describen en la sección 5.5.
5.1.3 Escalamiento de ejes y anotaciones en gráficas
MATLAB seleeciona automáticamente escalamientos adecuados en los ejes x y y. A veces es
útil para el usuario tener la capacidad de controlar el escalamiento. El control se logra con la
función
axis, que se muestra en la tabla 5.3.
MATLAB ofrece varias funciones adicionales, que también se mencionan en la tabla
5.3, y que le penniten anotar en sus gráficas.
text:
El siguiente código modifica la gráfica de la figura 5.8b con los recuadros
legend
l egend( ' l inea 1 ' , ' l ínea 2 ' , ' l ínea3 ' )
text(1 , lOO , ' Et i quete gráficas con el comando text ' )
Se agregó un título, etiquetas x y y, y se ajusta al eje con los siguientes comandos:
xl abel ('Mi e t i queta x ' ) , yl abel ('Mi e t i queta y')
t i tl e('Ej empl o de gráfica para capítul o 5 ' )
axi s([O.11.0 , 200] )
Los resultados se muestran en la figura 5.9.
y
Sección 5.1
http://jurgensoft.co.cc
Gráficas bidimensionales
145
Ejemplo de gráfica para capítulo 5
200
.....E/ •.. línea 1
180
,
/
/
160
-- línea 3 .
_..t'
..J>t"_ ........
140
.... ....:ot-----)t----
� 120
,..---
.�
100
Etiquete gráficas con el comando texto
:§
80
'4)
1
l---------.. -- --...... --línea 2!
. -..."
..
... ..
.
...... ··· <>······ 0 ······ 0
.
...
0... .. 0.......-€>.•••••-e .• 4
...
60
Figura 5.9
40
20
O
O
2
3
4
5
7
6
Mi etiqueta
8
9
10
11
x
S uge r enc ia
Puede usar letras griegas en sus etiquetas al poner una diagonal inversa (\) antes del
nombre de la letra. Por ejemplo
t i tl e( '\al pha \beta \gamma')
crea el título de la gráfica
af3y
Para crear
un
superíndice, use llaves. Por tanto,
title('xl\{ 2}')
produce
MATLAB tiene la habilidad de crear expresiones matemáticas más complicadas
para usar como títulos, etiquetas de ejes y otras cadenas de texto, al usar el lenguaje
formateador de textos TEX. Para aprender más, consulte la característica help.
(Busque en TEX o en Greek)
Eje r c i c i o d e p r á c t i ca 5.1
1 . Grafique x contra y para y = sen(x). Sea x que varía desde O hasta 21T en
incrementos de O.I1T.
2. Agregue un título y etiquete su gráfica.
3. Grafique x contra YI y Y2 para YI sen(x) y Y2 cos(x). Sea x que varía desde O
hasta 21T en incrementos de O.I1T. Agregue un título y etiquete su gráfica.
Versión final de la gráfica
de muestra, anotada con
una leyenda, u n recuadro
de texto, un título, etiquetas
x y y, y un eje modificado.
146
Capítulo 5
Graficación
http://jurgensoft.co.cc
4.
Vuelva a crear la gráfica de la parte 3, pero haga la línea sen(x) rayada y roj a.
Haga la línea cos(x) verde y punteada.
5. Agregue una leyenda a la gráfica de la parte
6.
4.
Aj uste los ejes de modo que el ej e x vay .. de -1 a 21T + 1 Y el eje y de -1.5
+1.5.
7. Cree un nuevo vector,
a
=
a
cos(x). Sea x que varía desde O hasta 21T en
incrementos de O.I1T. Grafique sólo a (plot(a)) y observe el resultado.
Compare este resultado con la gráfica que se produce al graficar
x contra a
(plot(x,a)).
Uso de la ecuació n Clausius-Clap eyron
La ecuación Clausius-Clapeyron se puede usar para encontrar la presión de vapor de satura­
ción del agua en la atmósfera para diferentes temperaturas. La presión de vapor de agua de
saturación es útil para los meteorólogos porque se puede usar para calcular humedad relativa,
un importante componente de la predicción del clima, cuando se conoce la presión parcial real
del agua en el aire.
La siguiente tabla presenta los resultados de calcular la presión de vapor de saturación
del agua en la atmósfera a varias temperaturas del aire con el uso de la ecuación Cl ausius­
Clapeyron:
Presión de vapor de saturación
Temperatura del aire
-60.0000
0.0698
-50.0000
0.1252
-40.0000
0.2184
-30.0000
0.3714
-20.0000
0.6163
-10.0000
1.0000
O
1.5888
10.0000
2.4749
20.0000
3.7847
30.0000
5.6880
40.0000
8.4102
50.0000
12.2458
60.0000
17.5747
70.0000
24.8807
80.0000
34.7729
90.0000
48.0098
100.0000
65.5257
110.0000
88.4608
120.0000
118.1931
También presenta estos resultados gráficamente.
La ecuación Clausius-Clapeyron es
. 1)
ln(PO/61
_1_ ! )
(
= (t!RHv)
ali
*
273
_
T
http://jurgensoft.co.ccSección
donde
po
=
ÁHv
R
v
T
=
5.1
Gráficas bidimensionales
147
presión de vapor de saturación para el agua, en mbar, a temperatura T,
calor latente de vaporización para el agua, 2.453 X 106 Jlkg,
constante de gas para aire húmedo, 461 J/kg, Y
temperatura en kelvin
1. Establezca el problema.
Encontrar la presión de vapor de saturación a temperaturas desde -60°F hasta 120 °F,
con el uso de la ecuación Clausius-Clapeyron.
2. Describa las entradas y salidas.
Entrada
ÁHRair
v
T
=
=
=
2.453
X
106 Jlkg
461'Jlkg
-60°F a 120°F
Dado que el número de valores de temperatura no se especificó, se elegirá recalcular
cada 10 0F.
Salida
Tabla de temperatura contra presiones de vapor de saturación
Gráfica de temperatura contra presiones de vapor de saturación
3.
Desarrolle un ejemplo a mano.
Cambie las temperaturas de Fahrenheit a Kelvin:
Tk
=
(TI
+
459.6)
1.8
Despeje la ecuación Clausius-Clapeyron para la presión de vapor de saturación (PO):
pO
=
6.11
*exp((ÁH
v) (_ !))
Rarr
X
1
273
_
Presión
T
Note que la expresión para la presión de vapor de saturación, PO, es una ecuación expo­
nencial. Por tanto, se esperaría que la gráfica tuviese la siguiente forma:
4. Desarrolle una solución MATLAB.
%Ejempl o 5 . 1
%Con l a ecuac i ón Cl aus i us-Cl apeyron , encontrar l a
%pres i ón de vapor de satura c i ón para agua a d i ferentes
%temperaturas
%
%Defi ne mat r i z temp en F .
TF= [- 60:10:120] j
%Convierte temp a K
TK=(TF + 4 5 9.6) /1 . 8 j
%Defi ne cal o r l atente de
Del ta_H=2 . 4 Se6 j
%vapor i zaci ón
%Defi n e constante gas i deal
%para el ai re
Temperatura
148 Capítulo 5 Graficación
http://jurgensoft.co.cc
%
%Cal cul a l as pres i ones de vapor
6 . 11*exp( (Del ta_H/R_ai r) * ( 1/2 7 3 - 1 . /TK) ) ;
Vapor_Pressure
%Despl i ega l os resul tados e n una tabl a
my_resul ts
[TF ' ,Vapor_Pressure ' ]
%
%Crea una gráfi ca x-y
pl ot (TF,Vapor_Pressure)
t i tl e ( ' Comportami ento Cl aus i us-Cl apeyron ' )
xl abel ( ' Temperatura, F ' )
yl abel ( ' Pres i ón de vapor de saturaci ón, mbar ' )
=
=
La tabla resultante es
my_resul ts
-60 . 0000
- 50 . 0000
-40 . 0000
-30 . 0000
-20 . 0000
-10 . 0000
O
10 . 0000
2 0 . 0000
3 0 . 0000
40 . 0000
50.0000
60 . 0000
70 . 0000
80 . 0000
=
Comportamiento Clausius-Clapeyron
120
;.,
ro
..o
100
u
ro
....
'"
80
E
¿
:9
�
'"
<)
't:l
...
o
o..
ro
;.
<)
't:l
e
:s
'"
0 . 0698
0 . 12 52
0.2 184
0 . 3 7 14
0 . 6163
1 . 0000
1 . 5888
2.4749
3 . 7847
5 . 6880
8 . 4102
12 . 2458
1 7 . 5 74 7
24 . 8807
3 4 . 7 72 9
60
40
<)
rt
20
Figura 5.10
Gráfica de la ecuación
Clausius-Clapeyron.
-40
-20
o
20
40
Temperatura, F
60
80
100
120
http://jurgensoft.co.ccSección
90 . 0000
100.0000
1 10.0000
120.0000
5.1
Gráficas bidimensionales
149
48 . 0098
6 5 . 52 5 7
88 . 4608
1 18.1931
Se abre una ventana de figura para desplegar los resultados gráficos, que se muestran
en la figura 5.10.
5. Ponga a prueba la solución.
La gráfica sigue la tendencia esperada. Casi siempre es más fácil determinar si los re­
sultados computacionales tienen sentido si se produce una gráfica. Los datos tabulares
son extremadamente difíciles de absorber.
-,,,M41·'"
Balística
El rango de un objeto (véase la figura 5.11) que se lanza en un ángulo 8 con respecto al eje x
y una velocidad inicial Vo está dado por
v2
= g sen (28) para O
R (8)
:::;
8
:::;
rt
� (sin considerar la resistencia del aire)
Use g = 9.9 mJs2 y una velocidad inicial de 100 mis. Demuestre que el rango máximo se
obtiene a 8 = rt/4 al calcular y graficar el rango para valores de theta
en incrementos de 0.05.
Repita sus cálculos con una velocidad inicial de 50 mis y grafique ambos conjuntos de
resultados en una sola gráfica.
1.
2.
Establezca el problema.
Calcular el rango como función del ángulo de lanzamiento.
Describa las entradas y salidas.
Entrada
g =
8
va
=
=
9.9 mls2
O
a rt/2, en incrementos de 0.05
50 mis y 100 mis
Salida
Rango R
Presentar los resultados como gráfica
Figura 5.11
Movimiento balístico.
1 SO
Capítulo 5
http://jurgensoft.co.cc
Graficación
Desarrolle un ejemplo a mano.
Si el cañón se apunta recto hacia arriba, se sabe que el rango es cero, y si el cañón está
horizontal, el rango también es cero. (Véase la figura 5. 1 2.) Esto significa que el rango
debe aumentar con el ángulo del cañón hasta algún máximo y luego disminuir. Un
cálculo de muestra a 45 grados ('ir/4 radianes) muestra que
3.
R(e)
=
v2
-sen(2tI)
g
('ir) = 1002 sen (4
2' )
=
9.9
R 4
'ir
1010 metros
cuando la velocidad inicial es
100
rn/s
4. Desarrolle una solución MATLAB.
%Ejempl o 5.2
%El programa cal cul a el rango de un proyect i l bal í st i co
%
% Define l as constantes
9 = 9.9;
50 ;
vI
v2 = 100 ;
% Defi ne el vector angl e
0:0.05:p i /2 ;
angl e
% Cal cul a el rango
Rl = vlA2/g * s i n ( 2*angl e) ;
R2
v2A2/g * s i n (2*angl e) ;
%Grafi ca l os resul tados
plot(angl e,Rl , angl e , R2 , ' : ' )
t i tl e ( ' Rango del cañón ' )
xl abel ( ' Ángul o del cañón ' )
yl abel ( ' Rango , metros ' )
l egend ( ' Vel oci dad i n i c i al = 5 0 mis ' , ' Vel oc i dad i ni c i al
= 100 mis ' )
=
=
=
Note que el comando plot pide a MATLAB imprimir el segundo conjunto de datos
como una línea rayada. También se agregaron título, etiquetas y una leyenda. Los resul­
tados se grafican en la figura 5. 1 3 .
1
Figura 5.12
El rango es cero si el c añón
está perfectamente vertical
o perfectamente horizontal.
Sección 5.2 Subgráficas 1 5 1
http://jurgensoft.co.cc
1200
Rango del cañón
I--,-----r--.---;-====�==:::!::==;l
--
•.•.• •••
1000
••.••••.•.•. .•.
..�""
,,�
#"'�
"..
.,
..
..
Velocidad inicial
Velocidad inicial
=
50 mis
=
100 mis
�.....
�
"....
800
El
�eS
0Jl
.,
«l
..::
600
400
200
O �:�--�----L---�L---�---L--�--�
O
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
Ángulo del cañón
5. Ponga a prueba la solución.
Compare los resultados MATLAB con los del ejemplo a mano. Ambas gráficas co­
mienzan y terminan en cero. El rango máximo para una velocidad inicial de 100 mis
es aproximadamente 1000 m, que corresponde bien al valor calculado de 1010 m. Note
que ambas soluciones tienen un pico en el mismo ángulo, aproximadamente a 0.8 radia­
nes. El valor numérico para 7r/4 es 0.785 radianes, lo que confmna la hipótesis presen­
tada en el enunciado del problema de que el rango máximo se logra al apuntar el cañón
en un ángulo de 7r/4 radianes (45 grados).
�
5.2
Sug er e n c i a
Para limpiar una figura, use el comando clf. Para cerrar una ventana de figura, use el
comando close.
SUBGRÁFICAS
El comando subplot le permite subdividir la ventana de graficación en una retícula de m filas
y n columnas. La función
subpl ot (m , n , p)
separa la figura en una matriz m X n. La variable p identifica la porción de la ventana donde
se dibujará la siguiente gráfica. Por ejemplo, si se usa el comando
subpl ot (2 , 2 , 1)
Figura 5.13
Rango predicho de un
proyectil.
152
Capítulo 5
http://jurgensoft.co.cc
Graficación
p=l
p=2
p=3
p=4
la ventana se divide en dos filas y dos columnas, y la gráfica se dibuja en la ventana superior
izquierda (figura
x=O : pi/20:2*pi ;
subpl ot (2,1 , 1)
pl ot (x , si n (x»
subpl o t(2. 1 , 2)
pl ot(x , sin (2 *x»
Los subgráficas se usan
para subdividir la ventana
de figura en una matriz
n.
Las ventanas se numeran de izquierda a derecha, de arriba abajo. De
y una gráfica inferior:
Figura 5.14
mX
5.14).
manera similar, los siguientes comandos dividen la ventana de gráficos en una gráfica superior
p = ]. Luego se usa de nuevo el co­
subplot para dibujar la siguiente gráfica en la ventana inferior. La figura 5.15 muestra
La primera gráfica se divide en la ventana superior, pues
mando
ambas gráficas.
Los títulos se agregan sobre cada subventana conforme las ventanas se dibujan, así como
las etiquetas de los ejes x y y, y cualquier anotación deseada. El uso del comando
subplot se
ilustra en varias de las secciones que siguen.
Ej e r c i c i o d e p r á c t i c a 5.2
1.
2.
3.
4.
5.
Subdivida una ventana de figura en dos filas y una columna.
En la ventana superior, /:S,af'iyU\; y = tan(x) para -1.5 s x s 1.5. Use un
incremento de 0.1.
Agregue un título y etiquetas de eje a su gráfica.
En la ventana inferior, grafique y
senh(x) para el mismo rango.
Agregue un título y etiquetas a su·gráfica.
6. Intente de nuevo los ejercicios anteriores, pero divida la ventana de figura
verticalmente en lugar de horizontalmente.
0.5
O
-0.5
-1
O
1
2
3
4
5
6
7
1
2
3
4
5
6
7
1
0.5
Figura 5.15
El comando subplot
permite al usuario crear
gráFicas múltiples en la
misma ventano de figuro.
O
-0.5
5.3
Sección
Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
La función seno graficada en coordenadas polares es un círculo.
90
1
80
o
270
Figura 5. 1 6
Gráfica polar d e l a función seno.
5.3 OTROS TIPOS DE GRÁFICAS BIDIMENSIONALES
Aunque las gráficas x-y simples son el tipo más común de gráfica en ingeniería, existen mu­
chas otras formas de representar datos. Dependiendo de la situación, estas técnicas pueden ser
más adecuadas que una gráfica x-y.
5.3.1
Gráficas polares
MATLAB proporciona capacidades de graficación con coordenadas polares;
pol ar(theta , r)
genera una gráfica polar del ángulo theta (en radianes) y distancia radial
r.
Por ejemplo, el código
x=O : pi /lOO : p; ;
y=s; n (x) ;
pol ar(x, y)
genera la gráfica de la figura 5 . 16. Se agregó un titulo en la forma usual:
ti tl e('la función seno grafi cada en coordenadas pol ares es
un círcul o . ')
153
1 54 Capítulo 5 Graficación
http://jurgensoft.co.cc
Eje r c i c i o d e p r á c t i ca 5.3
1. Defina un arreglo llamado
theta,
hasta 21T, en pasos de O.Ol7T.
desde O
Defina un arreglo de distancias
r =
S*cos(4*theta).
Elabore una gráfica polar de theta contra
r.
270
2. Use el comando
hold on para congelar
la gráfica.
Asigne r
=
4*cos(6*theta) y grafique.
Agregue un titulo.
3. Cree una nueva figura.
Use el arreglo
theta de los
problemas anteriores.
Asigne
r =
5 - 5*sin(theta)
y cree una nueva gráfica polar.
4. Cree una nueva figura.
Use el arreglo theta de los
problemas anteriores.
Asigne
r =
sqrt(5J\2*cos(2*theta»
y cree una nueva gráfica polar.
5. Cree una nueva figura.
Defina un arreglo theta tal que
theta
=
pi/2:4/5*pi:4.8*pi;
Cree un arreglo de seis miembros
de unos llamado
r.
Cree una nueva gráfica polar
de
theta contra
r.
270
5.3
Sección
Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
5.3.2
155
Gráficas logarítmicas
Para la mayoría de las gráficas que se generan, los ejes x y y se dividen en intervalos igualmente
espaciados; dichas gráficas se llaman gráficas lineales o rectangulares. Sin embargo, en oca­
siones es posible que se quiera usar una escala logarítmica en uno O ambos
logarítmica (a la base
10)
Una escala
es conveniente cuando una variable varía sobre muchos órdenes de
magnitud, porque el amplio rango de valores se puede grafiear sin comprímir los valores más
pequeños. Las gráficas logarítmicas también son útiles para representar datos que varían expo. nencialmente.
En la tabla
5.4 se listan los
rítmicas de los vectores x y y.
comandos MATLAB para generar
lineales y loga-
Recuerde que el logaritmo de un número negativo o de cero no existen. Sí sus datos
incluyen estos valores, MATLAB emitirá un mensaj e de advertencia y no se graficarán los
puntos en cuestión. Sin embargo, generará una gráfica con base en los puntos restantes.
Cada uno de los comandos para graficación logarítmica se puede ejecutar con un argu­
mento, como se vio en
plot(y) para una gráfica lineal. En estos casos, las gráficas se generan
con los valores de los índices del vector y usados como valores x.
Como ejemplo, se crearon gráficas de y
5X2 con los cuatro enfoques de escalamiento,
en cl eje x, semi­
como se muestra en al figura 5.17. Las gráficas lineal (rectangular),
log en el eje y y log-log se muestran todas en una figura, graficadas con la función suhplot en
el código siguiente:
x = 0:0.5:50¡
y = S*x . A2¡
subpl ot (2 , 2 , 1)
pl ot (x , y)
t i tl e ('Pol i nomi al - l i neal/l i neal ')
yl abel ( ' y') , g r i d
subpl ot (2 , 2 , 2)
sem i l ogx(x , y)
t i tl e ('Pol i nomial - l og/l i neal ')
yl abel ( ' y') , g r i d
subpl ot ( 2 , 2 , 3 )
s em i l ogy(x , y)
t i tl e('Pol i nomi al - l ineal /l og')
xl abel ('x') , yl abel ('y ' ) , g r i d
subpl ot(2.2.4)
l ogl og(x , y)
t i tl e('Pol i nomial - l og/l og')
xl abel ( ' x ' ) , yl abel ('y ' ) , g r i d
Tabla 5.4 Gráficas rectangular y logarítmica
pl ot (x , y)
semi l ogx(x , y)
sem i l ogy(x , y)
l ogl og(x , y)
Genera una gráfica lineal de los vectores x y y
Genera una gráfica de los valores de x y y con una escala
logarítmica para x y una escala lineal para y
I
Genera una grófica de los valores de x y y, con una escala lineal
para x y una escalo logarítmico paro y
Genero uno gráFico de los vectores x y Y, con uno escalo
logarítmico poro x y y
Idea clave: las
gráficas logarítmicas
son especialmente
útiles si los datos varían
exponencialmente.
156
Capítulo 5
14,000
Graficación
http://jurgensoft.co.cc
Polinomial - lineal/lineal
r---�---�--�----.
14,000
,
,
12,000 - - - - - - - - - - - -'., - - - - - - - - - - - � , -- - - - - - - - - - _lo __________ _
12,000
10,000 ------------,'- -,
,
10,000
,
,
.
,
8000 ------------,
6000
I
- - - - - - - - - - -.,j.
,
,
,
,
,
,
,
,
,
,
,
,
,
•
,
.
, -- - - - - - - - __
,
,
- - - - - •••
4000
,
,
--, ,
6000
_-'
4000
__"'
,
,
"
.
"
,
.
'' "
'"
I
•
'
'
"
,,
,,
,
,
,
"
"
"
"
,"
'"
'"
,
'"
'
'
''
,
"
'"
"
,,
"
"
'
"
,
"
"
,
-�""'"
.��
,
' "
'"
'"
,"
I
, ,
,
,
_', __'_1 _'o � L � ____• 1 ___L _._
1
,
,
,
,
2000
,
,
,
,
,
--- --:--:
8000
-- - - - - - - - - - �I - - - - - - - - - - - .lo, -- - ,
.
Polinomial - log/lineal
,
,
r-�����-�--
,
'
"
--------_..!_----------- ,
,
,
"
"
"
"
'"
'
',,"
"
' "
,
'
------- --- -- , - ------- ----,.---- --- ----
"
,
,
I
I
2000
O ����_____L____�______L_____�
O
40
20
30
10
50
10 5 ",
,,
Polinomial - lineal/log
�
o
,
.'
''''''''�''''''''
�
,�,.""�,�
�
,
�
''
------------: -- - - - - - - - - - - � - ---- - -- --- - :
--- - - - ----- .. .- - - - - - - - - - - � - - ----- -----.. - -- --- -- --- -,
,
,
,
,
,
,
:: � :: ;; ::::::;::::: ;;:: ;;;; 0;;:;: ;;;;::;;:: ::;;;;;;:: :,: -:__:: ::::::::;; ::
::::::::::::::::::: :::::::
������� : : : : �:� � � � � � � � � � � �
� � ____
� � � � � � � �_____
� : : :::'-••• _._______•____________
_J
,
,
,
___
--
-'
.
. _._-------.... ------------,---------_.-
,
,
.
,
__
-- --
'-1---
-----,--::::;.: ::
.
� � � � � � � � � � � � � �� � � � � � � � � � � � �:� � � � � � � � � � � �
,
---------,,
-,, ----- .. -----1'--,
,
,
� � � � � � � � � � � � � � �¡� � � � � � � � � � � �
� � ------� � � � � � � --..------------,------------., �--- � -• - ---------1- ____________,
,
,
,
-¡-----------,
,
,
,
� � � � � � � � � � � � � � � � � � � � � � � � � � �:� � � � � � � � � � � �
-.. -._-_._-_._-..._._---_....,_......... _.
-,_._---------.... --_._.._.._.,
_1_.
___• ___ ••• ,'
.
,
,
.
,
10
30
20
' ' �'
��
�
10 5 "
' ''
�
o
Polinomial - log/log
" �,,�
�
,� T
.�
�
o
,
�
�, �
,o�
,�'''�
�,,�''
40
50
x
., - - - �
,
,
.... .., .. ,
� � ..
,
,
.. - . . � .
,
:::: : :::::::::: :: :::: :::: :::: :::::::::::::::::::: ::::::::::::::: :::::::
:
... ,... � � ..
.... . .. .. .. .... - �
___'_J_'.LI.I._. ___J __.I._.'-_'-.J.'_',
.', _.'' " ' "
,
t
"
, I '
"
'
"
'
"
,
.
,
!_ '
! � _.... 1 ••• !. •• '
••'..
' !. ! !. ••• _••' =:o=::c
.
' ..
' .'. !.
_'
=>==,= �=,=�:<� == ===:>=::=�= - ::c=>=c� %� =::=::= "'==
=c =>= �
:
� __1- _1- -1_ •
...,:; ., .,_ • + + • - - • _.. - • - -1- _1- -1_1-" + .. _____-1
.... --, . ,
- r r , --- -- , --- ,. - ' r -"" ... -,... ,., ,. -----..,- -- ,--.... -,. .., -r
..,--,
.- " r r, r - - - -- .., --- , --,... -,... .., - ,.
.,._,_,
."'
"
"
"
, , ' "
, ' "
,
"
'
'
'��----'
----�
100 �------�--��--10-1
x
Figura 5.17
-!iJMOS·'i-
-- ---
,
Gráficas lineales y logarítmicas.
Idea clave: dado
que MATLAB ignora
los espacios en blanco,
úselos para hacer su
código más legible.
"�
�¡� � -------� � � � -� � � � � � � -..� i� �-..� � -� � � � � ----� ��� � � �¡ -� � -� � --� � � -� �---�--.� � �-.� � � � � � �.�¡�-�¡.� � �¡.-� � t � ---.
,
: �:: :: :: : �: :::� :::: :::::::: :
��
' �'�'
''--�-----'-O ����
10-1
Las sangrías tienen la intención de hacer el código más fácil de leer: MATLAB ignora los es­
pacios en blanco. Como cuestión de estilo, note que sólo las dos subgráficas inferiores tienen
etiquetas en el eje x.
Tasas de difusió n
Con frecuencia, los metales se tratan para hacerlos más fuertes y en consecuencia más du­
rables. Un problema con la elaboración de una pieza metálica fuerte es que se vuelve difícil
darle la forma deseada. Una estrategia que resuelve este problema es formar un metal suave
con la forma que se desea y luego se endurece la superficie. Esto hace que el metal se use bien
sin hacerlo quebradizo.
Un proceso de endurecimiento común se llama carburación. La parte metálica se expo­
ne a carbono, que se difunde en la pieza, haciéndola más dura. Éste es un proceso muy lento
:: : :: ::::: ::
------
______
----_._-.----,-
. , -,
.. _._-
Sección
Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
5.3
si se realiza a bajas temperaturas, pero se puede acelerar al calentar la pieza. La difusividad es
la medida de cuán rápido ocurre la difusión y se puede modelar como
donde
D
=
Do =
Q
R
T
=
=
difusividad, cm2/s,
coeficiente de difusión, cm2/s,
energía de activación, J/mol, 8.3 1 4 J/mol K,
constante de gas ideal, J/mol K, y
temperatura, K.
Conforme el hierro se calienta, cambia su estructura y sus características de difusión. Los
valores de Do y Q se muestran en la siguiente tabla para difusión de carbono a través de cada
una de las estructuras de hierro:
Q (J/mol K)
TIpo de metal
.0062
Fe alfa (BCC)
Fe gamma (FCC)
80,000
148,000
0.23
Con los datos proporcionados, cree una gráfica de difusividad contra temperatura inversa
(l/D. Intente las gráficas rectangular, semi10g y lag-lag para ver cuál puede representar mejor
los resultados. Haga que la temperatura varíe de temperatura ambiente (25 oC) a 1200 oc.
J . Establezca el problema.
Calcular la difusividad del carbono en hierro.
2. Describa las entradas y salidas.
Entrada
Para C en hierro alfa, Do 0.0062 cm2/s y Q = 80,000 J/mol K
Para C en hierro gamma, Do = 0.23 cm2/s y Q 148,000 J/mol K
R 8.3 14 J/mol K
T varía de 25 oC a 1 200 oC
=
=
=
Salida
Calcular la difusividad y graficarla
3. Desarrolle un ejemplo a mano.
La difusividad está dada por
A
temperatura ambiente, la difusividad para el carbono en hierro alfa es
D
D
)
= .0062 ex ( 8.3 1 4-80,000
· (25 273 )
=
5.9 X
P
1 0-17
+
(Note que la temperatura tuvo que cambiarse de Celsius a Kelvin.)
157
158
Capítulo 5
Graficación
http://jurgensoft.co.cc
4. Desarrolle una solución MATLAB.
% Ej empl o 5 . 3
% Cal cul a l a di fus i vi dad de carbono en h i erro
cl ear , cl c
% Defi ne l as constantes
DOal pha = . 0062 ;
0 . 23 ;
DOgamma
Qal pha
80000 ;
Qgamma = 148000 ;
R = 8 . 3 14 ;
2 5 : 5 : 1200 ;
T
% Cam b i a T de C a K
.T
T+2 7 3 ;
% Cal cul a l a d i fusjvi dad
Dal pha
DOal pha*exp ( -Qal pha . / (R"'T) ) ;
Dgamma = DOgamma*exp (-Qgamma . /(R*T) ) ;
% Grafi ca l os resul tados
subpl ot ( 2 , 2 , 1)
pl ot ( l . jT , Dal pha , l . jT , Dgamma)
t i tl e ( ' Di fu s i vi dad de C en Fe ' )
xl abel ( ' Temperatura i nversa , KA - l ' ) , yl abel ( ' Di fu s i vi dad ,
cmA2/s ' )
gri d on
=
=
=
=
=
subpl ot(2 , 2 , 2)
semi l ogx ( l . jT , Dal pha , 1 . /T , Dgamma)
t i tl e ( ' Di fu s i vi dad de C en Fe ' )
xl abel ( ' Temperatura i nversa , KA- l ' ) , yl abel ( ' Di fu s i vi dad ,
cmA2/s ' )
gri d on
subpl ot (2 , 2 , 3)
semi l ogy ( I . /T , Dal pha , l . jT , Dgamma)
t i tl e ( ' Di fusi vi dad de C en Fe ' )
xl abel ( ' Temperatura i nversa , KA- l ' ) , yl abel ( ' Di fus i vi dad ,
cmA2/s ' )
gri d on
subpl ot (2 , 2 , 4)
1 0gl og ( 1 . jT , Dal pha , 1 . /T , Dgamma)
t i tl e ( ' Di fu s i vi dad de C en Fe ' )
xl abel ( ' Temperatura i nversa , KA- l ' ) , yl abel ( ' Di fu s i v i dad ,
cmA2/s ' )
gri d on
En la figura 5. 1 8 se usaron subgráficas, de modo que todas las variaciones de la gráfica
están en la misma figura. Note que las etiquetas x se agregaron sólo en la parte inferior
de dos gráficas, para reducir el amontonamiento, y que sólo a la primera gráfica se agre­
gó una leyenda. La gráfica semilogy resultó en líneas rectas y permite al usuario leer los
valores de la gráfica fácilmente sobre un amplio rango de temperaturas y difusividades.
Éste es el esquema de graficación que usualmente se usa para presentar los valores de
difusividad en libros de texto y manuales.
5. Ponga a prueba la solución.
Compare los resultados MATLAB con los del ejemplo a mano.
5.3
Sección
Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
Difusividad de e en Fe
0.8 - - -
- -
Difusividad de e en Fe
.
·
,
,
datos 1
- - - - - - - - - t - - - - - - - - - -;- - - - - - - - -
- -
--
datos
2
0.8
)
0.6 - - -
ro
-
.
.
_ _ _ _ _ _ _ _ _ 1 _ _ _ _ _ _ _ _ _ _,_ _ _ _ _ _ _ _ _ _ ,, _ _ _ _ _ _ _ _ _ _ '- _ _ _ _ _ _ _ _ _
,
,
,
·
,
,
,
,,,
.",
,
]
,
________ _ ! ___ _ ___ _____________ l _ ____ ____
·
.
·
.
.
.E
en
,,
.
O
0.6
,
,,
,,
. '.
__ __ __ ___
0.4
,
,
--------�-----
---
,
,
,
0.2
1 0- 1
N-
.002
.0015
.0025
"
___
U
"O"
ro
:g
.�
.E
O
"
,
,
_. _
:
10
- 20
1 0-
25
'
I
I
: - -:- � -:- - - - - - - - - ; - - - - - � - - -;- - - � - ;- -
- - -
-
"
.
"
,
"
I
,
_ _, _ _
,,
,
"
,
,
•
,
,
.
"
"
,
'
"
,
,
.
,,
,
,
"
'
"
"
"
.
' . ! .'. . . . . _ . .
' "
. "
"
,
•'.
,
,
, '
,
_ .1 _
,
,
"
"
t
.
-
,
•
I
I
I
..1 _ " _ , _ _ _ _ _ _ _ _ _ � _ _ _ _ . 0. _ _ _ L.. _ _ L _
' "
.
,
t
,
.
,
, t I
_
I
I
,
,
"
.! _ _ • • _ 1.. _ _
,
,
"
,,
,
t
. '•
'
'
"
• _ '. _
,
,
_ _, _
I
I
,
,
,
"
_ _ � _ _'_ .1 _ ..1
•
•
"
.'
,
I
¡ _' • . _ . _ _ _ • _ J _ • _ _ _ '- _ _ _'- _ _ .._
"
'"
I
,
,
,
,
"
,
,
"
::
_
I
.I
,
,
,
_
_
��������======����
10 - 3
,
,
- - -
- -
- - -
- - :-
,
,
,
+
- -
- - - - -
,
,
;--
,
.
-
�
- - -
.
,
- - - - - - - - - -'- - - - - - - - - - ' - - - - - - - - - -'- - - - - - - - - I
,
,
,
•
I
,
.
.
,
,
,
,
I
,
,
-
- -
--
----
---------
f
---------
,
,
+
---------
l
.
10 -
- - - - - - - -'- - - - - - - - - •
•
:
,
,
.
,
,
,
----------
�
--
0
1 0-2
,
,
,
,
------
�
Temperatura inversa, K -1
10 -
.
.
,
"
,
,
'
"
,
'
25
______•_
·
,.J _
,
,
____
,
,
.
"
336 X
'
I
'
"
"
,
,.J _ J. _'_ _ _ • _ _ _ _ _ J _ _ _ _ _
"
.
"
"
I
I
"
'
'
"
,
,
'�
__
__
�
__
__
�
'
�
__
__
�
__
�
'�
��
�
�
1 0 -30 L-__
10 - 3
10 - 4
para carbono en hierro alfa. Para verificar su respuesta, necesitará cambiar
kelvins y sacar el i nverso:
-
"
"
'
,
,
Temperatura inversa, K -1
Se calculó que la difusividad era
_
"
"
"
,
"
Datos de difusividad graficados en diferentes escalas.
1
-
I
, ,, , ,
,,
I
,
,
,
,
.
"
I,
,
"
,
,
.
_ _ _ � _ _ � _ _ _ _'_
"
,
,
"
I
,
,
,
I
,
,
,
,
,
Figura 5.18
( 25 + 273)
"
"
15
,
,
1 0 -30 L-____�____�____J______L____�____
.002
.0015
.0025
.0035
.0005
.001
.003
25 oC
a
10-3
partir de la gráfica semilogy (esquina inferior izquierda), se puede ver que la difusi­
vidad para el hierro alfa es aproximadamente 10-17.
A
"
"
.
.
- - · - - - - - r - - - - - - - r - - : - T T -:- I T - - - - - - - - - - -r - -
0
5
I
,
: : : \Ui :
"
,
1 0- 1
"
"
I
"
,
O L-
,
,
I
I
,
• • • t • • � • •'•
,
"
"
,
,
"
..
I
• _ _ _ _ • • • .J _ _ _ _ •
10 - 4
__
"
"
.
en
8
,
"
,
•
,
,
_ _ _ _ • • _ • •' . .
,
,
•
,,
.0035
.003
- -
,�,
"
·
,
________ j___ __
•
I
,
•
I
,
--
.001
�
,
.
.
,
,
_ _ _ _ _ _ _ _ _ � _ _ _ _ _ _ _ _ _ _'. _ _ _ _ _ _ _ _ _ J _ _ _ _ _ _ _ _ _ _ ,_ _ _ _ _ _ _ _ _ _
.
,
,
•
,
I
,
,
.
,
,
I
,
,
,
,
I
,
,
·
,
- -- -
1 59
1 60 Capítulo 5 Graficación
http://jurgensoft.co.cc
E i e r c i c io d e p r á c t i c o 5 . 4
Cree arreglos x y y adecuados para usar en gráfica cada una de las expresiones que
siguen. Use el comando
subplot para dividir sus
figuras en cuatro secciones y cree
cada una de estas cuatro gráficas para cada expresión:
•
rectangular
•
semilogx
•
semilogy
1.
loglog
•
y
=
2. Y
=
3.
y
4. y
5x
+
3
3x2
l2e(x+2)
l/x
Usualmente, los datos físicos se grafican de modo que caen en una línea recta.
¿ Cuál de los tipos de gráficas precedentes resultan en una línea recta para cada
problema?
5.3.3 Gráficas de barras y de pastel
Las gráficas de barra, histograma y de pastel son formas populares para reportar datos. En la
tabla
5.5
se mencionan algunas de las funciones MATLAB usadas comúnmente para crear
En la figura 5.19 se muestran ejemplos de algunas de estas gráficas. Las gráficas usan la
gráficas de barra y de pastel.
función
subplot para permitir cuatro
gráficas en la misma ventana de figura:
el ear , el e
x=[l , 2 , S,4,8] j
y= [x ; 1 : 5] ;
Tabla 5.5 Gráficas de barra y de pastel
bar (x)
Cuando x es un vector, bar genera una gráfica de barras vertical. Cuando x
es una matriz bidimensional, bar agrupo los datos por fila
barh(x)
Cuando x es un vector, barh genera una gráFica de barras horizontal
Cuando x es una matriz bidimensional, barh agrupa los datos por fila
bar3(x)
Genera una gráfica de barras tridimensional
bar3h(x)
Genera una gráfica de barras horizontal tridimensional
p i e(x)
Genera una gráfica de postel. Cada elemento en la matriz se representa
como una rebanado de postel
p i e3 (x}
General una gráfico de pastel tridimensional. Cada elemento en la matriz
representa como una rebanada de pastel
se
h i st(x}
Genero un histograma
http://jurgensoft.co.cc
Sección 5.3 Otros tipos de gráficas bidimensionales
Una gráfica de barras del vector x
8 ,------
Una gráfica de barras de la matriz y
8 �-------..r_-----------,
6
6
4
4
2
2
o
1
2
3
4
5
o
161
2
Una gráfica de barras tridimensional
Una gráfica de pastel de x
5%
10
40%
5
25
O
1
20%
Figura 5. 1 9
Ejemplo de gráficas
bidimensionales que usan
lo función subplot para
dividir lo ventana en
cuadrantes.
subplot(2,2,1)
bar(x) , t i tl e( ' Una gráfica de barras del vector x ' )
subplot(2 . 2 . 2)
bar(y) . ti tl e('Una gráfica de bar ras de l a mat r i z y ' )
subplot(2,2 , 3)
bar3 (y) . ti tl e('Una gráfi ca de barras t r i d i mensional ' )
subplot(2,2,4)
p i e(x) , t i tl e('Una gráfi ca de pastel de x ' )
5.3.4 Histogramas
Un histograma es un tipo especial de gráfica particularmente útil para el análi sis estadístico
Idea clave: los
de datos. Es una gráfica que muestra la distribución de un conjunto de valores. En MATLAB,
histogramas son útiles en
el histograma calcula el número de valores que caen en 10 depósitos (categorías) que están
análisis estadístico.
igualmente espaciadas entre los valores mínimo y máximo. Por ejemplo, si se define una ma­
triz
x
como el conj unto de ealificaciones del Final de Introducción a la ingeniería, las califica­
ciones se podrían representar en un histograma, que se muestra en la figura 5.20 y se genera
con el siguiente código:
x= [100,9 5 . 74 , 8 7 , 22 , 78 . 34 . 3 5,93 . 88 . 86 . 42 . 5 5 . 48] ;
hi st(x)
El número por defecto de depósitós (bins) es 10, pero si se tiene un gran conjunto de
datos, se pueden dividir los datos en más depósitos. Por ejemplo, para crear un histograma con
25 depósitos, el comando sería
h i st(x, 2 5)
162 Capítulo 5
http://jurgensoft.co.cc
Graficación
Final de Introducción a la ingeniería
3
2.5
2
1.5
1
0.5
Figura 5.20
H istograma de datos de
calificación.
50
40
30
60
70
80
90
100
Si establece la función hist igual a una variable, como en
A
h i st (x)
=
los datos que se usan en la gráfica se almacenan en A:
A
1
·¡"MAI·'i-
2
1
1
1
o
1
1
3
3
Distribuciones de p eso
El varón estadounidense promedio de 1 8 años de edad pesa 1 5 2 libras. Se pesa a un grupo de
100 jóvenes y los datos se almacenan en un archivo llamado weight.dat. Cree una gráfica para
representar los datos.
Establezca el problema.
Usar el archivo de datos para crear una gráfica lineal
mejor representación de los datos?
2. Describa las entradas y salidas.
l.
Entrada
y
un histograma. ¿Cuál es una
weigbt.dat, un archivo de datos ASCII que contiene datos de peso
Salida
Una gráfica lineal de los datos
Un histograma de los datos
3. Desarrolle un ejemplo a mano.
Dado que ésta es una muestra de pesos reales, se esperaría que los datos se aproximaran
a una distribución aleatoria normal (una distribución gaussiana). El histograma debería
tener forma de campana.
4. Desarrolle una solución MATLAB.
El siguiente código genera las gráficas que se muestran en la figura 5 . 21:
" Ej empl o 5 . 4
" Uso de datos de peso
"
l oad wei ght . dat
Sección
Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
5.3
% Crea l a gráfi ca l i neal de datos de peso
subpl ot (1 , 2 , 1)
pl ot(wei ght)
t i tl e ( ' Peso varones cl ase p r i mer año ' )
xl abel ( ' Estudi ante número ' )
yl abel ( ' Peso , l b ' )
gri d on
% Crea el h i stograma de l os datos
subpl ot ( 1 , 2 , 2)
h i st (wei ght)
xl abel ( ' Peso , l b ' )
yl abel ( ' Número de estudi antes ' )
ti tl e ( ' Peso varones cl ase p r i mer año ' )
5.
Ponga a prueba la solución.
Las gráficas satisfacen las expectativas: El peso parece promediar aproximadamente
1 50 lb Y varía en lo que parece ser una distribución nonnal. Se puede usar MATLAB
para encontrar el promedio y la desviación estándar de los datos, así como los pesos
máximo y mínimo en el conjunto de datos. El código MATLAB
average_wei ght
mean (wei ght)
standard_devi at i on = std(we i ght)
maxi mum_wei ght
max(we i ght)
m i n i mum_wei ght
m i n (wei ght)
=
=
regresa
average_wei ght
1 5 1 . 1 500
standard_dev i at i on
3 2 . 9411
maxi mum_wei ght
228
m i n i mum_wei ght
74
=
Peso varones clase primer año
Peso varones clase primer año
25 .-----�
250 .------,--�
200 . - . - - - . -
....-
..
-
. .... - . . - . . - . . . .
-
�
V>
'"
'"
�- .
�
V>
O)
8 10
O)
S
'::1
Z
50
Figura 5.21
15
.g
100 - .. - - - -
Estudiante número
20
100
5
100
150
Peso, lb
200
Los histogramas y las grá�cas de línea son dos formas diferentes de visualizar información numérica.
250
1 63
164 Capítulo 5 Groficoción
http://jurgensoft.co.cc
5.3.5 Gráficas x-y con dos ejes y
A veces es útil sobreponer d o s gráficas x-y en la misma figura. Sin embargo, sí los órdenes
de magnitud de los valores y son muy diferentes, puede ser difícil ver cómo se comportan los
datos. Considere, por ejemplo, una gráfica de sen(x) y e' dibujadas en la misma figura.
Los resultados, obtenidos con el siguiente código , se muestran en la figura 5.22:
x=O : pi /20 : 2*pi :
y1=s; n (x) ;
y2=exp(x) ;
subpl ot(2, 1, 1)
pl ot(x,y1,x,y2)
La gráfica de s en(x) parece que corre en línea recta a lo largo de x = O, debido a la escala.
L a función
plotyy le permite crear una gráfica con dos
ejes y, el de la izquierda para el primer
conjunto de pares ordenados y el de la derecha para el segundo conjunto de pares ordenados:
subpl ot(2,1,2)
pl otyy(x,yl,x,y2)
Los títulos y etiquetas se agregaron en la forma usuaL El eje y no se etiquetó, porque los
resultados son adimensionales.
La función
plotyy
puede crear algunos tipos diferentes de gráficas al agregar una ea­
dena con el nombre del tipo de gráfica después del segundo conjunto de pares ordenados.
En la figura
logarítmica:
5.23,
las gráficas se crearon con el siguiente código y tienen un eje con escala
subpl ot(2 , l,1)
pl otyy(x,yl,x,y2 , ' semi l ogy ' )
subpl ot(2 ,l,2)
pl otyy(x,y1,x,y2, ' sem i l ogx ' )
Ejes Y con escala sencilla
600
.----�-----�--,
400
200
O �------��-200
L-__-'--__--'--__--'__----l
O
2
4
6
8
Dos ejes Y escalados
1 .---��----�--� 1000
Figura 5.22
MATLAB permite que el
eje y se escale de manera
diferente a lo izquierda y
derecha de la figura.
500
O
2
4
Ángulo
http://jurgensoft.co.cc
Sección
Otros tipos de gráficas bidimensionales
5.3
1 65
Gráfica semilog en el eje y
10-10
_
_
-'-_
_
_
-'-_
_
--' 100
10-20 IL...___-'--_
O
2
4
6
8
Gráfica semilog en el eje x
r-------��--� 1000
O
-1
500
100
O
Prop iedades p erió dicas de los elementos
Las propiedades de los elementos en la misma fila o columna en la tabla periódica, por lo ge­
neral, muestran una tendencia reconocible conforme uno se mueve a través de una fila o por
una columna. Por ejemplo, el punto de fusión, por lo general, baja conforme se desciende
por una columna, porque los átomos están más separados y, por tanto, los enlaces entre los
átomos son más débiles. De igual modo, el radio de los átomos aumenta conforme desciende
por una columna, porque existen más electrones en cada átomo y en correspondencia orbi­
tales más grandes. Es instructivo graficar estas tendencias contra peso atómico en la misma
gráfica.
1.
Establezca el problema.
Graficar el punto de fusión y el radio atómico de los elementos del Grupo 1 contra el
peso atómico y comentar acerca de las tendencias que se observen.
2. Describa las entradas y salidas.
Entrada
Salida
Los pesos atómicos, puntos de fusión y radios atómicos de los elementos del
Grupo l, que se mencionan en la tabla 5 . 6
Graficar punto de fusión y radio atómico en la misma gráfica
3. Desarrolle un ejemplo a mano.
Se esperaría que la gráfica se parezca al bosquejo que se muestra en la figura 5 . 24.
Figura 5.23
La función plotyy puede
generar varios tipos
de gráficas, incluidas
semilogx, semilogy y
loglog.
·'''MUi·llt
1 66
Capítulo 5
http://jurgensoft.co.cc
Graficación
Tabla 5.6 Elementos del Grupo I y propiedades físicas seleccionadas
Elemento
Número atómico
1 81
0. 1 520
19
63
0.2270
98
11
Sodio
Potasio
37
Rubidio
0. 1 860
0.2480
34
0. 2650
28.4
55
Cesio
Radio atómico, pm
3
Litio
4.
Punto de fusión, oc
Desarrolle una solución MATLAB.
El siguiente código produce la gráfica que se muestra en la figura 5 . 2 5 :
% Ej empl o 5 . 5
cl ear , cl c
% Defi ne l as vari abl es
atomi c_number
[ 3 , 1 1 , 19 , 3 7 , 5 5 ] :
[181 , 98 , 6 3 , 3 4 , 28 . 4] ;
mel t i ng_poi nt
atom i c_rad i u s
[0 . 1 5 2 , 0 . 186 , 0 . 2 2 7 , 0 . 2480 , 0 . 2 6 50] :
% Crea l a gráfi ca con dos l í neas en l a mi sma escal a
subpl ot (1 , 2 , 1)
pl ot (atomic_numbe r , mel ti ng_poi nt , atomi c_number , atomi c_radi us)
ti tl e( ' Pe r i od i c Propert i es ' )
xl abel ( ' Atom i c Number ' )
yl abel ( ' Propert i es ' )
% Crea l a segunda gráfi ca con dos d i ferentes escal as y
subpl ot ( 1 , 2 , 2)
pl otyy (atomi c_number , mel ti ng_poi nt , atomi c_number ,
atom i c_radi us)
t i tl e ( ' Pe r i odi c Proper t i es ' )
xl abel ( ' Atom i c Numbe r ' )
yl abel ( ' Mel t i ng Poi nt , C ' )
=
=
Figura 5.24
Bosquejo del
comportam iento predicho
de los datos.
erlies
0.35
0.3
'"
'"
'-2
'"
o.
o
o:
Figura 5.25
El uso de dos ejes y le
permite graficar d atos con
unidades d iferentes en l a
misma gráfica.
C'
'0
1 00
50
00
o..
'"
'';:;
a;
c:
Los va
radio desap
en el eje x
�
20
:2:
s de
cen
40
Atomic Number
60
�
Oí
E
w
'-'
o
100
5
0
OO
�----�
...---
/
20
.--"'-
--.r.
-------
40
2i..
0.25 '?!,0,2
600. 1 5
:os
."
o::
ü
'E
o
;,¡'
Secci ón 5.3 Otros tipos de gráficas bidimensionales
http://jurgensoft.co.cc
1 67
En la segunda gráfica, que tiene dos diferentes escalas y, se usó la función
lugar de la función
plotyy en
plot. Esto forzó la adición de una segunda escala, en el lado derecho
de la gráfica. Fue necesario porque el radio atómico y el punto de fusión tienen dife­
rentes unidades y los valores para cada uno tienen diferentes magnitudes . Note que, en
la primera gráfica, casi es imposible ver la línea de radio atómico; está arriba del ej e x
porque los números son muy pequeños. Es posible, pero difícil, agregar la etiqueta del
eje y derecho desde la línea de comando. En vez de ello, se usó la opción
Insert de la
barra de menú. Sólo recuerde: si vuelve a correr su programa, perderá la etiqueta del
lado derecho.
5.
Ponga a prueba la solución.
Compare los resultados MATLAB con los del ejemplo a mano. La tendencia se ajusta
a la predicción. Claramente, la gráfica con dos ejes y es la representación superior, por­
que se pueden ver las tendencias de la propiedad.
5.3.6 Gráficas de función
La función
fplot le permite graficar una función sin definir arreglos de valores x y y corres­
pondientes. Por ejemplo,
fpl ot ( ' s i n (x) ' , [ - 2 *pi , 2 *pi ] )
crea una gráfica (figura
5.26) de x contra sen(x) para valores x desde
- 217 hasta
217. MATLAB
calcula automáticamente el espaciamiento de los valores x para crear una curva suave. Note
que el primer argumento en la función fplot es una cadena que contiene la función y el segun­
do argumento es un arreglo.
Ej e r c i c i o d e p r á c t i c a 5. 5
Cree una gráfica de las funciones que siguen. Necesitará seleccionar un rango
apropiado para c ada gráfica. No olvide poner título y etiquetas a sus gráfic as.
1.
2.
3.
4.
f(t) = 5t2
f(t) = 5 sen2(t) + t cos2(t)
f(t) = ter
f(t) = ln (t) + sen (t)
Gráfica de función de sen(x)
0.5
o
Figura 5.26
-0.5
-
1
�-----L----��--�-
-6
-4
-2
O
2
4
6
Las gráficas de función no
requieren que el usuario
defina arreglos de pares
ordenados.
168
Capítulo 5
Graficación
http://jurgensoft.co.cc
�
Su g e r e n c i a
La sintaxis correcta para la expresión matemática sen2(t) es
5.4
sin(t).1\2.
GRÁFICAS TRIDIMENSIONALES
MATLAB ofrece una variedad de comandos para gráficas tridimensionales, muchas de las
cuales se mencionan en la tabla 5. 7 .
5.4.1
Gráfica lineal tridimensional
La función plot3 es similar a la función plot, excepto que acepta datos en tres dimensiones. Sin
embargo, en lugar de sólo proporcionar vectores x y y. el usuario también debe proporcionar un
vector z. Entonces estas tripletas ordenadas se
conectan con líneas rectas. Por ejemplo
en un
de tres dimensiones y se
el ear , el e
x = l i nspaee(O , lO*pi , lOOO) ;
eos(x) ;
y
z = s i n {x) ;
plot3 {x , y , z)
grid
xl abel { ' ángul o ' ) , yl abel { ' eos(x) ' ) , zl abel { ' sen {x) ' ) ,
t i tl e { ' Un resorte ' )
=
El título, las etiquetas y la retícula se agregaron a la gráfica de la figura
usual, con la adición de
zlabel para el
El sistema coordenado usado con
z.
5.27 en la forma
plot3 se orienta mediante el sistema coordenado de la
mano derecha familiar a los ingenieros.
Tabla 5.7 Gráficas tridimensionales
pl ot3 {x , y , z)
Crea una gráfica lineal tridimensional
eomet 3 (x , y , z)
Genera una versión animada de plot3
mesh (z) o mesh (x , y , z)
Crea una gráfica de superficie de malla
surf(z) o surf(x , y , z)
Crea una gráfica de superficie; similar a l a función
mesh
shadi n g i nterp
Interpola entre los colores usados para ilustrar
gróficas de superficie
shadi ng fl at
Colorea cada sección de retícula con un color sólido
eol ormap{map_name)
Permite al usuario seleccionar el patrón de color a
usar en las gróficas de superficie
eontou r {z) o eontou r {x , y , z)
Genera una gráfica de contorno
surfc (z) o surfe {x , y , z)
Crea una gráfica de superficie combinada con una
gráfica de contorno
peol o r{z) o peol or (x , y , z)
Crea una gróFica en pseudocolor
http://jurgensoft.co.ccSección 5.4
Gráficas tridimensionales
169
Un resorte
0.5
x
'"
O
<=
O)
<lO
-0.5
-1
1
z
40
Figura 5.27
Gráfico tridimensional de
u n resorte.
Idea clave:
S ug e r e n c i a
que se muestra en la figura
S610 por diversión, vuelva a crear la
esta vez con la función
5.27, pero
comet3:
en una secuencia animada. Si su
Esta función de graficación "dibuja" la
animación corre demasiado rápido, agregue más puntos de datos. Para gráficas
lineales bidimensionales, use la función
comet.
5.4.2 Gráficas de superficie
Las gráficas de superficie le permiten representar datos como una superficie. Se experimenta­
rá con dos tipos de gráficas de superficie: gráficas
mesh y gráficas sud.
Gráficas mesh
Existen muchas formas de usar las gráficas
a una matriz bidimensional sencilla
el valor z en la gráfica. Los valores
m
mesh (malla). Se pueden usar para dar buen efecto
X n. En esta aplicación, el valor en la matriz representa
x y y se basan en las dimensiones de la matriz. Tome, por
ejemplo, la siguiente matriz muy simple:
=
[1, 2 , 3 , 4 ,
5, 6,
7 , 8 , 9 , 10 ;
2 , 4 , 6 , 8 , 10 , 1 2 , 14 , 1 6 , 18 , 20 ;
3 , 4, 5, 6,
7, 8,
9 , lO , 1 1 , 12] ;
El código
mesh (z)
xl abel ( ' ej e x ' )
yl abel ( ' ej e y ' )
zl abel ( ' ej e z ' )
genera la gráfica de la figura
5.28.
graficación tridimensional
corresponden a la regla
de la mano derecha.
comet 3 (x , y , z)
z
los ejes
que se usan para la
1 70
Capítulo 5
http://jurgensoft.co.cc
Graficación
20
N
15
10
5
Figura 5.28
Elemento 1,5
o
3
Mollo simple creado con
una matriz bidimensional
simple.
1
O
La gráfica es una "malla" creada al conectar los puntos definidos en z en una retícula
rectilínea. Note que el eje x va de O a 10 y Y va de O a 3. Los números índice de matriz se usa­
ron para los valores de eje. Por ejemplo, note que Z1.5' el valor de z en la fila 1 columna 5, es
5.28.
igual a 5. Este elemento está en un círculo en la
La función mesh también se puede u sar con tres argumentos: mesh(x,y,z). En este
caso, x es una lista de coordenadas x, y es una lista de coordenadas y, y z es una lista de
coordenadas z.
x
y
z
l i nspace ( 1 , 5 0 , 10)
1 i nspace( 5 0 0 , 1000 , 3 )
[1 , 2 , 3 , 4 ,
5,
2 , 4 , 6 , 8 , 10 ,
3, 4, 5, 6,
7,
8,
9 , 10 ;
6,
7,
12 , 14 , 16 , 18 , 2 0 ;
8 , 9 , 10 , 1 1 , 12]
El vector x debe tener el mismo número de elementos que el número de columnas en
el vector z; el vector y debe tener el mismo número de elementos que el número de filas en el
vector z. El comando
mesh (x , y , z)
x varía de O a 60, con datos graficados de 1 a
crea la gráfica de la figura 5 .29a. Note que el
50. Compare este escalamiento con el de la figura 5.28, que los números índice de la matriz z
para los ejes x y y.
Gráficas surf
mesh, pero surf crea una superficie tridimensioLas gráficas surf son similares a las
nal colorida en lugar de una mesh. Los colores varían con el valor de z.
El comando surf toma la misma entrada que mesh: una sola entrada (por ejemplo,
surf(z), en cuyo caso usa los índices fila y columna como coordenadas x y y), o tres matrices.
La figura 5 .29b se generó con los mismos comandos que los usados para generar la figura
5.29a, excepto que surf sustituyó mesh.
El esquema sombreado para las gráficas de superficie se controla con el comando
shading. Por defecto, como en la figura 5.29b, es "plano faeetado". El sombreado interpo­
lado puede crear efectos interesantes. La gráfica que se muestra en la figura 5.2ge se creó al
agregar
shad i ng i nterp
http://jurgensoft.co.ccSección 5.4
(a) Gráfica mesh usando los valores x, y y z
20 . .
Gróficas tridimensionales
1 71
(b) Gráfica surf usando los valores x, y y z
.
. . . . � . .
'
o
1000
50
o
(e) Gráfica surf usando valores interpolados
Eje x
(d) Gráfica surf usando valores interpolados
, ',
20
� 10
i:U
� 10
i:U
o
1000
o
1000
50
Figura 5.29
50
o
y
Eje x
Eje x
Gráficas mesh y surf
creadas con tres
argumentos de entrada.
a la lista de comandos anterior. El sombreado plano sin retícula se genera cuando se usa
shad i ng fl at
como se muestra e n l a figura 5.29d.
El esquema de color usado en las gráficas de superficie se puede controlar con l a fun­
ción
colormap, Por ejemplo,
los colores usados en las
col ormap(gray)
gráficas de superficie.
fuerza una representación en escala de grises para gráficas de superficie. Esto puede ser adecua­
do si u sted usará copias en blanco y negro de sus gráficas, Otros
autumn
spring
summer
winter
jet (default)
Use el comando
bone
oolorcube
coo)
copper
flag
colormap disponibles son
hot
bsv
pink
prism
white
help para ver una descripción de las diversas opciones:
hel p col o rmap
Otro ejemplo
Se puede crear una superficie más complicada al calcular los valores de Z:
x= [- 2 : O 2 : 2] ;
y= [-2 : 0 . 2 : 2] ;
meshgri d (x , y) ;
[X , Y]
X . *exp(-X . A2 - Y . A2 ) ;
Z
.
=
=
Idea clave: La función
colormap controla
1 72 Capítulo 5 Graficación
http://jurgensoft.co.cc
En el código precedente, se usa la función meshgrid para crear las matrices bidimen­
sionales X y Y de los vectores unidimensionales x y y. Entonces se calculan los valores en Z.
El siguiente código grafica los valores calculados:
subpl ot (2 . 2 . 1)
mesh(X , Y , Z)
t i tl e ( ' Gráfi ca mesh ' ) , xl abel ( ' ej e x ' ) , yl abel ( ' ej e y ' ) ,
zl abel ( ' ej e z ' )
subpl ot (2 , 2 , 2)
surf(X , Y , Z)
t i tl e ( ' Gráfi ca de superfi ci e ' ) , xl abel ( ' ej e x ' ) , yl abel ( ' ej e y ' ) ,
zl abel ( ' eje z ' )
S uge r e nc ia
Si e n l a función meshgrid s e usa un solo vector, el programa l o interpreta como
[X , Y]
=
meshgri d (x , x)
También podría usar la definición del vector como entrada a meshgrid:
[X , Y]
=
meshgri d (-2 : 0 . 2 : 2)
Ambas líneas de código producirían el mismo resultado que los comandos
mencionados en el ejemplo.
Para definir los ejes x y y se pueden usar los vectores x, y o las matrices X, Y. La figura
5.30a es una gráfica mesh de la función dada, y la figura 5.39b es una gráfica surf de la misma
función.
(a) Gráfica mesh
(b) Gráfica de sup,ertllcle
2
eje y
-2 - 2
eje y
eje Ji:
,-------r--,
0.5
Figura 5.30
las gráficas de superficie y
de contorno son d iferentes
Formas de visualizar 105
mismos datos.
o
-0.5
2
-1
O
eje x
2
eje x
(d) Combinación de gráficas de
superficie y dc contorno
(e) Gráfica de contorno
2
-2 - 2
Sección 5,4
http://jurgensoft.co.cc
Gráficas tridimensionales
1 73
Gráficas de contorno
Las gráficas de contorno son representaciones bidimensionales de superficies tridimensionales.
Para crear la figura 5 .30c se usó el comando
contour,
y para crear l a figura 5.30d se usó el
comando surfc:
subpl ot (2 , 2 , 3)
contour(X , Y , Z)
xl abel ( ' ej e x ' ) , yl abel ( ' ej e y ' ) , t i tl e ( ' Gráfica de contorno ' )
subpl ot (2 , 2 , 4)
surfc (X , Y , Z)
xl abel ( ' ej e x ' ) , yl abel ( ' ej e y ' )
t i tl e ( ' Combi nac i ón de gráfi cas de superfi c i e y de contorno ' )
Gráficas en pseudoc:o/or
Las gráficas en pseudocolor son similares a las gráficas de contorno, excepto que, en lugar de
líneas que resaltan un contorno específico, se genera un mapa bidimensional sombreado sobre
una retícula. MATLAB incluye una función muestra llamada peaks que genera las matrices x,
yy
z
de una interesante superficie que parece una montaña:
[x , y , z]
=
peaks ;
Con el siguiente código se puede usar esta superficie para demostrar el uso de las gráfi­
cas de pseudocolor, quc se muestra en la figura 5.3 1 :
subpl ot ( 2 . 2 , 1)
pcol o r (x , y , z)
La retícula se borra cuando se usa sombreado interpolado:
subpl ot ( 2 , 2 , 2)
pcol o r (x , y , z)
shad i ng i nterp
(a) Gráfica en pseudocolor
(b) Sombreado interpolado
3
3
2
2
1
O
o
-1
-1
-2
-2
-3
-2
O
2
(c) Traslape pseudocolor y contorno
-3
-2
O
2
(d) Gráfica de contorno
2
O
Figura 5.3 1
En MATLAS están
-2
-2
O
2
-2
o
2
disponibles varias gráficas
de contorno.
174 Capítulo 5 Graficación
http://jurgensoft.co.cc
Puede agregar contornos a la imagen al traslapar una gráfiea de contorno:
subpl ot(2 . 2 . 3)
pcol or (x , y , z)
shad i ng i nterp
hol d on
contou r (x , y , z , 20 , ' k ' )
El número
20 especifiea que se dibujan 20 líneas de contorno, y la 'k' indica que las
líneas deben ser negras . Si no se hubiese especificado que las líneas deben ser negras, habrían
tenido el mismo color que la gráfica en pseudocolor y habrían desaparecido en la imagen.
Finalmente, para comparación, a la figura se agregó una gráfica de eontorno simple:
subpl ot (2 , 2 , 4)
contou r (x , y , z)
En la ventana de ayuda se incluyen opciones adicionales para usar todas las funciones
de grafieación tridimensional.
Idea clave: cuando
5.5 EDICiÓN DE GRÁFICAS DESDE LA BARRA D E MENÚ
Además de controlar la forma en que se ven sus gráficas con los comandos MATLAB, puede
se edita interactivamente
editar una gráfiea una vez que la creó. La gráfica de la figura 5 . 3 2 se creó con el comando
una gráfica, los cambios
sphere, que es una de las muchas funciones muestra, como peaks, que se usan para demostrar
se pierden si vuelve a
l a graficación.
correr el programa.
sphere
Figura 5.32
Gráfica de una esfera.
Sección 5.5 Edición de gráficas desde la borro de menú
http://jurgensoft.co.cc
En la figura, se seleccionó el
1 75
menú Insert. Note que puede insertar etiquetas, títulos, le­
menú Tools le permite
yendas, recuadros de texto, etcétera, todos con el uso de este menú. El
cambiar la forma en que se ve la gráfica, al acercarse o alejarse, eambiar la razón de aspecto,
etcétera. La figura toolbar (barra de herramÍentas), baj o el menú del mismo nombre, ofrece
La gráfica de la figura 5 .32 en realidad no parece una esfera; también carece de etique­
iconos que le permiten hacer las mismas cosas.
tas y un título, y puede no ser claro qué sÍgnifican los colores. Para editar esta gráfica, primero
se aj usta la forma:
Edit -7 Axis Properties en el menú toolbar.
Property Editor-Axis, seleccione Inspector
•
Seleccione
•
Desde la ventana
Mode.
•
Establezca el modo a manual. (Véase la figura
-7
Data Aspect Ratio
5.33.)
5.34) con
menú Insert en la barra de menú. Editar su gráfica de esta forma es más interactivo
De igual modo se agregaron etiquetas, un título y una barra de color (figura
la opción
y le permite afinar su apariencia. El único problema con editar interactivamente una figura es
que, si corre de nuevo su programa MATLAB, perderá todas sus mejoras.
Sugerencia
Puede forzar a una gráfica a espaciar los datos de manera igualitaria en todos Jos
ejes con el uso del comando axis equal. Este enfoque tiene la ventaj a de que puede
programar axis equal en un archivo-m y retener sus mejoras.
Figura 5.33
MAnAB le permite
editar gráficas con los
comandos de la barra de
herramientas (toolbar).
1 76 Capítulo 5 Groficación
http://jurgensoft.co.cc
Gráfica de una esfera
0.8
0.6
0.4
0.2
o
-0.2
-0. 4
-'
Eje y
O
-0.5
O
0.5
x
1
-0.6
- 0.8
-1
Figura 5.34
Gráfica editada de una esfera.
5.6 CREAC iÓN DE GRÁFICAS DESDE LA VENTANA DE TRABAJO
Una gran característica de MATLAB 7 es su habilidad para crear gráficas de manera interac­
tiva desde la ventana del área de trabajo. En esta ventana se selecciona una variable y luego
se selecciona el menú desplegable en el
icono graficación (que se muestra en la fi gura 5.35).
MATLAB mencionará las opciones de graficación que "considera" razonables para los datos
almacenados en su variable. Simplemente seleccione la opción adecuada y su gráfica se crea en
la ventana de figura actual. Si no le gusta alguno de los tipos de gráfica sugeridos, elij a More
plots en el menú desplegable y se abrirá una nueva ventana con la lista completa de opciones
...
de graficación disponibles para que usted elija. Esto es especialmente útil pues puede sugerir
opciones que no se le hayan ocurrido. Por ejemplo, la figura 5.36 es una gráfica de tallo de la
matriz
x
resaltada en la figura.
Si quiere graficar más de una variable, resalte la primera y luego mantenga .presionada
la tecla
Ctrl y seleccione las variables adicionales. Para anotar sus gráficas, use el proceso
de edición interactivo descrito en la sección 5.5. El ambiente interactivo es un recurso rico.
Obtendrá mucho si lo explora y experimenta con éL
5.7 CÓMO GUARDAR LAS GRÁFICAS
Existen muchas maneras de guardar las gráficas creadas en MATLAB :
•
Si creó la gráfica con código de programación almacenado en un archivo-m, simplemente
volver a correr el código recreará la figura.
•
También puede guardar la figura desde el menú de archivo, con la opción
Save As
...
Se le
presentarán varias opciones:
1 . Puede guardar la figura como un archivo .lig, que es un formato de archivo específico
de MATLAB . Para recuperar la figura, sólo dé doble die en el nombre del archivo en el
directorio actual.
Sección 5.7
http://jurgensoft.co.cc
Cómo guardar las gráficas
1 77
240 double
80 double
<.3x10 double> 3x10
240 double
Figura 5.35
Graficación desde la
ventana de área de
trabajo.
Figura 5.36
Gráfica de tallo creada
de manera interactiva desde
la ventana del área de
trabajo.
(.jpg) y
(.emf). Estas versiones de la figura se pueden insertar en otros
2. Puede guardar l a figura en diferentes [onnatos gráficos estándar, como jpeg
metarchivo mejorado
documentos, como un documento Word. Las figuras en este texto se guardaron como
3.
metarchivos mejorados.
Puede dar elic derecho en la figura, l uego seleccionar
copy y pegarlo en otro docu­
mento.
•
Puede usar el menú de archivo para crear un nuevo archivo-m que recreará la figura.
1 78 Capítulo 5 Graf¡eación
http://jurgensoft.co.cc
E i e rc i c i o d e p r á c t i c a 5.6
Cree una gráfica de y
=
cos(x). Practique guardando el archivo e insertándolo en un
documento Word .
•;I'\%MU.I---
---
--
-----
--
--
La gráfica usada con más frecuencia en ingeniería es la gráfica x-y. esta gráfica bidimensio­
nal se puede usar para graficar datos o visualizar funciones matemáticas. Sin importar qué
represente una gráfica, siempre debe incluir un título y etiquetas de los ejes x y y. Las etique­
tas de los ejes deben ser descriptivas y deben incluir unidades, como ftls o kJ/kg.
MATLAB incluye opciones extensas pata controlar la apariencia de sus gráficas. El
usuario puede especificar el color, estilo de línea y estilo de marcador para cada línea en una
gráfica. Se puede agregar una retícula a la gráfica y aj ustar el rango del eje. Los recuadros de
texto y las leyendas se emplean para describir la gráfica. La función subgráfica se usa para
dividir la ventana de gráfica en una retícula
m
X
n.
Dentro de cada una de estas subventanas,
se puede crear y modificar cualquiera de las gráficas MATLAB.
Además de las gráficas x-y, MATLAB ofrece una diversidad de opciones de graficación,
incluidas gráfica� polares, gráficas de pastel, gráficas de barras, histogramas y gráficas x-y con
dos ejes y. Es posible modificar la escala en las gráficas x-y para producir gráficas logarítmicas
en cualquiera o en ambos ejes x y y. Los ingenieros usan con frecuencia escala logarítmica para
representar datos como una línea recta.
La función fplot permite al usuario graficar una función sin definir un vector de valores
x y y. MATLAB elige automáticamente el número adecuado de puntos y espaciamiento para
producir una gráfica suave. En la caj a de herramientas simbólica hay disponibles capacidad
adicional de funciones de graficación.
Las opciones de graficación tridimensionales en MATLAB incluyen una gráfica lineal,
algunas gráficas de superficie y gráficas de contorno. La mayoría de las opciones disponi­
bles en la graficación bidimensional también se aplican a estas gráficas tridimensionales. La
función
meshgrid es
especialmente útil en la creación de gráficas de superficie tridimensio­
nales.
Las herramientas interactivas permiten al usuario modificar las gráficas existentes. Di­
chas herramientas están disponibles desde la barra de menú fi gura. También se pueden crear
gráficas con la opción de graficación interactiva de la ventana del área de trabajo. El ambiente
interactivo es un recurso rico. Obtendrá mucho si lo explora y experimenta con él.
Las fi guras creadas en MATLAB se pueden guardar en varias formas, para editarse más
tarde o para insertarse en otros documentos. MATLAB ofrece formatos de archivo propietario
que minimizan el espacio de almacenamiento requerido para almacenar figuras y formatos de
archivo estándar adecuados para importar hacia otras aplicaciones.
RESU MEN MATLAB
El siguiente resumen MATLAB menciona todos los caracteres, comandos y funciones espe­
ciales que se definieron en este capítulo:
http://jurgensoft.co.cc
Tipo de
línea
Indicador
Tipo de
punto
sólida
punto
punteada
círculo
raya-punto
marca x
rayada
más
estrella
cuadrado
diamante
triángulo abajo
triángulo arriba
triángulo
triángulo derecho
pentagrama
hexagrama
autumn
axi s
Color
Indicador
o
x
+
*
S
d
Indicador
azul
b
verde
g
rojo
r
cian
c
magenta
m
amarillo
negro
v
y
k
1\
<
>
p
h
color de mapa opcional usado en gráficas de superficie
congela la eseala del eje actual para
subsecuentes o especifica las
dimensiones del eje
axi s equal
bar
bar3
barh
bar3h
bone
col orcube
col ormap
comet
comet3
fuerza el mismo espaciamiento de escala para cada eje
genera una gráfica de barras
genera una gráfica de barras tridimensional
genera una gráfica de barras horizontal
genera una gráfica de barras tridimensional horizontal
mapa de color opcional usado en gráficas de superficie
mapa de color opcional usado en gráficas de superficie
esquema de color usado en
de superficie
dibuja una gráfica x-y en una secuencia de pseudoanimación
dibuja una gráfica lineal tridimensional en una secuencia de
pseudoanimación
contour
cool
copper
figure
fl ag
fplot
grid
gri d off
g r i d on
genera un mapa de contorno de una superficie tridimensional
mapa de color opcional usado en
de superficie
mapa de color opcional usado en
de superficie
abre una nueva ventana de figura
mapa de color opcional usado en
de superficie
crea una gráfica x-y con base en una función
agrega una retícula sólo a la gráfica actual
desactiva la retícula
agrega una retícula a la gráfica actual y a todas las subsecuentes en
la figura actual
h i st
hol d off
genera un histograma
instruye a MATLAB a borrar los contenidos de figura antes de agregar
nueva información
hol d on
instruye a MATLAB a no borrar los contenidos de figura antes de
agregar nueva información
hot
mapa de color opcional usado en
de superficie
(Continúa)
Resumen MATLAB
1 79
180
Capítu lo 5
http://jurgensoft.co.cc
Graficación
hsv
j et
l egend
l i nspaee
l ogl og
mesh
meshg r i d
mapa de color opcional usado en gráficas de superficie
mapa de color por defecto usado en gráficas de superficie
agrega una leyenda a una gráfica
crea un vector linealmente espaciado
genera una gráfica x-y con ambos ejes escalados logarítmicamente
genera una gráfica mesh de una superficie
coloca cada uno de dos vectores en matrices bidimensionales separadas,
cuyo tamaño se determina por los vectores fuente
pause
peol or
peaks
pie
pie3
pink
pl ot
pl ot3
pl otyy
pol ar
pri sm
sem i l ogx
sem i l ogy
shadi ng fl at
shadi ng i nterp
sphere
spr i ng
subpl ot
summer
surf
surfe
text
t i tl e
whi te
wi nter
xl abel
yl abel
zl abel
pausa la ejecución de un programa hasta que se presiona cualquier tecla
crea una gráfica de pseudocolor similar a un mapa de contorno
crea una matriz muestra usada para demostrar funciones de graficación
genera una gráfica de pastel
genera una gráfica de pastel tridimensional
mapa de color opcional usado en gráficas de superficie
crea una gráfica x-y
genera una gráfica lineal tridimensional
crea una gráfica con dos ejes y
crea una gráfica polar
mapa de color opcional usado en gráficas de superficie
genera una gráfica x-y con el eje x escalado logarítmicamente
genera una gráfica x-y con el eje y escalado logarítmicamente
sombrea una gráfica de superficie con un color por sección de retícula
sombrea una gráfica de superficie por interpolación
función muestra usada para demostrar graficación
mapa de color opcional usado en gráficas de superficie
divide la ventana de gráficas en secciones disponibles para graficación
mapa de color opcional usado en gráficas de superficie
genera una gráfica de superficie
genera una combinación de gráfica de superficie y de contorno
agrega un recuadro de texto a una gráfica
agrega un título a una gráfica
mapa de color opcional usado en gráficas de superficie
mapa de color opcional usado en gráficas de superficie
agrega una etiqueta al eje x
agrega una etiqueta al eje y
agrega una etiqueta al eje z
Gráficas bidimensionales
5.1
(x-y)
Cree gráficas de las siguientes funciones, desde x = O hasta 10.
(a) y = eX
(b) y
sen (x)
(e) y = ax2 + bx +
(d) Y
Vx
=
e,
donde
a=
5,
b=2
Y
e
= 4
=
Cada una de sus gráficas debe incluir título, etiqueta del eje x, etiqueta del eje y y una
retícula.
5.2
Grafique el siguiente conjunto de datos:
y
=
[ 12, 14, 12, 22, 8, 9]
http://jurgensoft.co.cc
5.3
Permita que MATLAB use el número de índice de matriz como el parámetro para el
eje x.
Grafique las siguientes funciones en la misma gráfica para valores de x desde -7T
hasta 7T, y seleccione el espaciamiento para crear una gráfica suave:
YI
=
sen(x»
Y2 = sen(2x)
Y3 = sen(3x)
5.4
(Sugerencia: recuerde que la sintaxis MATLAB adecuada para 2x es 2*x.)
Ajuste la gráfica creada en el problema 5.3 de modo que
•
•
•
5.5
la línea 1 sea roja y rayada.
la línea 2 sea azul y sólida.
la línea 3 sea verde y punteada.
No incluya marcadores en ninguna de ias gráficas. En general, los marcadores se in­
cluyen sólo en las gráficas de datos medidos, no para valores calculados.
Ajuste la gráfica creada en el problema 5 .4 de modo que el eje x vaya desde -4
hasta +4.
•
•
Agregue una leyenda.
Agregue un recuadro de texto que describa las gráficas.
Graficació n x-y con p royectiles
Use la siguiente información en los problemas del 5.6 al 5.9:
La distancia que recorre un proyectil cuando se dispara a un ángulo O es función
del tiempo y se puede dividir en distancias horizontal y vertical de acuerdo con las
fórmulas
Horizontal(t) = tVa cosCO)
y
Vertical(t)
donde
Horizontal
Vertical
Va
g
5.6
=
=
tVa sen(O)
-
�
gt2
distancia recorrida en la dirección x,
distancia recorrida en la dirección y,
velocidad inicial,
2
aceleración debida a gravedad, 9.8 rnls ,
tiempo, s.
Suponga que el proyectil descrito se dispara con una velocidad inicial de 1 00 rnls y un
ángulo de lanzamiento de 7T/4 (45°). Encuentre la distancia recorrida tanto horizontal
como verticalmente (en las direcciones x y y) para tiempos desde O hasta 20 s.
(a) Grafica distancia horizontal contra tiempo.
(b) En una nueva ventana de figura, grafique distancia vertical contra tiempo (con
tiempo en el eje x).
5.7
5.8
No olvide un título y etiquetas.
En una nueva ventana de figura, grafique distancia horizontal sobre el eje x y distancia
vertical sobre el eje y.
Calcule tres nuevos vectores para cada una de las distancias vertical (V I ' v2' v3) Y hori­
zontal (hl, h2, h3) recorridas, y suponga ángulos de lanzamiento de 7T/2, 7T/4 Y 7T/6.
Problemas
1 81
1 82
Capitulo 5
http://jurgensoft.co.cc
Graficación
•
En una nueva ventana de figura, grafique distancia horizontal en el eje x y distancia
vertical en el eje y, para los tres casos. (Tendrá tres líneas.)
•
Haga una línea sólida, una rayada y una punteada. Agregue una leyenda para identi­
ficar cuál lfnea es cuál.
5.9
Recree la gráfica del problema 5.8. Esta vez, cree una matriz theta de los tres ángulos,
1712, 1714 Y 1716. Use la función
meshgrid para crear una malla de theta y el vector
(t). Luego use las dos nuevas variables en malla que creó para recalcular la dis­
tancia vertical (v) y la distancia horizontal (h) recorridas. Cada uno de sus resultados
debe ser una matriz 20 X 30. Use el comando plot para graficar h en el eje x y v en el
tiempo
eje y .
Uso de subgráficas
5.10
En el problema 5 . 1 , usted creó cuatro gráficas. Combínelas en una
con cuatro
subventanas, con la función subplot de MATLAB.
5.11
En los problemas del 5.6 al 5.8, usted creó cuatro gráficas. Combínelas en una figura
con cuatro subventanas, con la función subplot de MATLAB .
Gráficas p olares
5.12
Cree un vector de ángulos desde O hasta 217. Use la función de graficación
polar para
crear gráficas de las funciones que siguen. Recuerde: las gráficas polares esperan e l
ángulo y el radio como l a s dos entradas a l a función
polar. U s e la función subplot
para poner sus cuatro gráficas en la misma figura.
(a) r = sen2(8) + cos2(8)
(b) r = sen(8)
(e) r = e 9/5
(d) r = senh(8)
5.13
En el ejercicio de práctica 5.3 usted creó algunas formas interesantes en coordenadas
polares. Use dichos ejercicios como ayuda para crear las siguientes figuras:
(a) Cree una "flor" con tres pétalos.
(b) Superponga su figura con ocho pétalos adicionales de la mitad del tamaño de los
tres originales.
(e)
Cree un corazón.
(d) Cree una estrella de seis puntas.
(e) Cree un hexágono.
Gráficas logarítmicas
5.14
Cuando el interés se compone continuamente, la siguiente ecuación representa el cre­
cimiento de sus ahorros:
En esta ecuación,
P
Po
r =
saldo actual,
saldo inicial,
constante de crecimiento, expresada como fracción decimal, y
tiempo invertido.
Determine la cantidad en su cuenta al final de cada año si usted invierte $ 1 000 a 8%
(0.08) durante 30 años. (Elabore una tabla.)
http://jurgensoft.co.cc
Cree una figura con cuatro subgráficas. Orafique tiempo en el ej e
en el eje y.
x
Problemas
1 83
y saldo actual P
t contra P en un sistema coordenado rectangular.
(a) En el primer cuadrante,
(b) En el segundo cuadrante, grafique t contra P, con escala logarítmica en el eje x.
(e) En el tercer cuadrante, grafique t contra P, con escala logarítmica en el ejé y.
(d) En el cuarto cuadrante, grafique t contra P, con escala logarítmica en ambos ejes.
¿Cuál de las cuatro técnicas de graficación considera que muestra mejor los datos?
5.15
De acuerdo con l a ley de Moore (una observación hecha en 1 965 por Oordon Moore,
eofundador de Intel Corporation; véase la figura P5 . 1 5), el número de transistores
que encaj aría por pulgada cuadrada en un circuito integrado semiconductor se du­
plica aproximadamente cada 1 8 meses. El año 2005 fue el 40 aniversario de La ley.
Durante los últimos 40 años, su proyección se ha satisfecho de manera consistente. En
1 965, la entonces tecnología de avanzada pemütía 30 transistores por pulgada cuadra­
da. La ley de Moare dice que la densidad de transistores se puede predecir mediante
d(t)
=
30( 2 6 ), donde t se mide en años.
(a) Sea t = O la representación del año 1 965 y t
45 la representación de 201 0. Use
este modelo para calcular el número predicho de transistores por pulgada cuadra­
da para los 45 años desde 1 96 5 hasta 201 0. Sea t el aumento en incrementos de
1 .5 años. Muestre los resultados en una tabla con 2 columnas, una p ara el año y
otra para el número de transistores.
(h) Con l a característica subplot,
gráfica x semilog, una gráfica y
los datos en una gráfica lineal x-y, una
y una gráfica log-log. Asegúrese de poner
título y etiqueta a los ejes.
5.16
Muchos fenómenos físicos se pueden describir mediante la ecuación Arrhenius. Por
ejemplo, las constantes de tasa de reacción para reacciones químicas se modelan como
k
donde ko
Q
R
T
=
=
=
=
koe ( - QIRT)
constante con unidades que dependen de la reacción,
energía de activación, kJ/kmol,
constante de gas ideal, kJ/kmol K, y
temperatura en
K.
Para cierta reacción química, los valores de las constantes son
Q
1000 J/mol,
ko = 1 0
Y
R = 8.3 1 4 J/mol K,
para T desde 300
K hasta 1 000 K. Encuentre los valores de k. Cree las
siguientes dos
gráficas de sus datos en una sola ventana de figura:
(a) Orafique T en el eje x y
k en el eje y.
(h) Orafique sus resultados como el lag1 0 de k en el eje y y
liT en el eje x.
Gráficas de barras, gráficas de p astel e histogramas
5.17
Sea el vector
CT
=
[68, 83, 6 1 , 70 , 75 , 82, 5 7, 5 , 76, 85 , 62, 71, 9 6, 78, 76, 68, 72, 75 , 83, 93]
que representa la distribución de calificaciones finales en un curso de ingeniería.
(a) Use MATLAB para ordenar los datos y cree una gráfica de barra s de la� calificaciones.
(b) Cree un histograma de las calificaciones.
Figura P5. 1 5
Gordon Moore. (Cortesía
de Intel Corporation. )
184
Capítulo 5
http://jurgensoft.co.cc
Graficación
5.18
En la clase de ingeniería mencionada en el problema 5 . 1 7 hay
2A
4B
8C
4D
2E
(a) Cree una gráfica de pastel de esta distribución. Agregue una leyenda que mencio­
ne los nombres de calificación (A, B, C, etcétera).
(b) Use la opción de menú texto para agregar un recuadro de texto a cada rebanada
de pastel en lugar de una leyenda, y guarde su gráfica modificada como un archi­
vo .Hg.
(e) Cree una gráfica de pastel tridimensional de los mismos datos. MATLAB 7 tiene
problemas con las leyendas para muchas figuras tridimensionales, así que no se
sorprenda si su leyend¡¡ no se ajusta a la gráfica de pastel.
5.19
En la siguiente tabla se menciona el inventario de cierto tipo de tornillo en un almacén
al final de cada mes:
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Diciembre
5.20
2004
MS
4363
32 1 2
5766
4534
4719
2345
4565
8776
7679
6532
2376
2238
4509
5643
1 1 37
2343
3422
2200
3454
7865
6543
4508
23 1 2
4566
Grafique los datos en una gráfica de barras.
Use la función randn para crear 1 000 valores en una distribución nonnal (gaussiana)
de números con una media de 70 y una desviación estándar de 3.5. Cree un histogra­
ma del conjunto de datos que calculó.
Gráficas con dos ej es y
5.21
En la introducción a los problemas del 5.6 al 5 .9, aprendió que las ecuaciones para la
distancia recorrida por un proyectil como función del tiempo son
Horizontal(t)
Vertical(t)
tVo cosCO)
¡Vo seneO)
Y2gf
Para tiempo desde O hasta 20 s, grafique distancia horizontal contra tiempo y dis­
tancia vertical contra tiempo en la misma gráfica, y use ejes y separados para cada
línea. Suponga un ángulo de lanzamiento de 45 grados (1T14 radianes) y una velocidad
inicial de 1 00 mis. Suponga también que la aceleración debida a la gravedad, g, es
9.8 mis.
http://jurgensoft.co.cc
5.22
Si la ecuación que modela la distancia vertical recorrida por un proyectil como función
del tiempo es
Vertical(t)
=
tVo sen(8)
-
l/2gt2
entonces, del cálculo, la velocidad en la dirección vertical es
Velocidad(t) =
Vo sen(8) gt
-
Cree un vector t desde O hasta 20 s y calcule la posición vertical y la velocidad en la
dirección vertical, si supone un ángulo de lanzamiento 8 de 1T/4 radianes y una velo­
cidad inicial de 100 mis. Grafique ambas cantidades en la misma gráfica con ejes y
separados.
La velocidad debería ser cero en .el punto donde el proyectil tiene la mayor altura
en la dirección vertical. ¿Su gráfica apoya esta predicción?
5.23
La deformación de muchos metales cambia sus propiedades físicas. En un proceso
llamado trabajo enfrío, el metal se deforma intencionalmente para hacerlo más fuerte.
Los siguientes datos tabulan tanto la fortaleza como la ductilidad de un metal que se
trabaj ó en frío a diferentes grados :
10
275
43
15
310
30
20
340
23
25
360
17
12
30
375
40
390
7
50
400
4
60
407
3
68
410
2
Grafique estos datos en una sola gráfica x-y con dos ejes y.
Gráficas lineales tridimensionales
5.24
Cree un vector x de valores desde O hasta 20 1T, con un espaciamiento de 1T/ l 00. Defi­
na los vectores y y z como
y
=
x sen (x)
y
z = x cos(x)
(a) Cree una gráfica x-y de x y y.
(b) Cree una gráfica polar de x y y.
(e)
5.25
Cree una gráfica lineal tridimensional de x, y y z. No olvide un título y etiquetas.
Imagine cómo puede ajustar su entrada a
plot3 en el problema 5.24 para crear una
gráfica que luzca como un tomado. (Véase la figura P5.25.)
Problemas
1 85
1 86
Capítulo 5
Grahcación
http://jurgensoft.co.cc
80
60
40
20
o
100
100
Figura P5.25
Gráfica de tornado.
- 1 00
- 100
Gráficas de superficie y contorno tridimensionales
5.26
Cree vectores x y y desde -5 hasta +5 con un espaciamiento de 0.5. Use la función
meshgrid para mapear x y y en dos nuevas matrices bidimensionales llamadas X y Y.
Use sus nuevas matrices para calcular el vector
Z
Z, con magnitud
sen (
(a) Use la función de graficación mesh para crear una gráfica tridimensional de Z.
(b) Use la función de graficación surf para crear una gráfica tridimensional de Z.
Compare los resultados que obtuvo con una sola entrada
con entradas para las tres dimensiones
(e)
(X, Y, Z).
(Z)
con los obtenidos
Modifique s u gráfica de superficie con sombreado interpolado. Intente usar dife­
rentes
eolormaps.
(d) Genere una gráfica de contorno de Z.
de
(e) Genere una combinación de
y de contorno de
Z.
http://jurgensoft.co.cc
Funciones definidas
por el usuario
INTRODUCCiÓN
El lenguaje de programación MATLAB se construye alrededor de funciones. UnaJun­
ción es una pieza de código de computación que acepta un argumento de entrada del
usuario y produce salida al programa. Las funciones le ayudan a programar eficiente­
mente, lo que le permite evitar reescribir el código de computación para cálculos que se
realizan con frecuencia. Por ejemplo, la mayoría de los programas de cómputo contie­
nen una función que calcula el seno de un número. En MATLAB,
sin es el nombre de
la función que se usa para llamar una serie de comandos que realizan los cálculos nece­
sarios. El usuario necesita proporcionar un ángulo y MATLAB regresa un resultado. No
es necesario que el programador sepa cómo MATLAB calcula el valor de sin(x).
6.1
CREACiÓN DE ARCHIVOS-M DE FUNCiÓN
Ya se exploraron muchas de las funciones internas de MATLAB, pero es posible que
usted quiera definir sus propias funciones, aquellas que usted usa más comúnmente en
su programación. Las funciones definidas por el usuario se almacenan como archivos-m
y MATLAB puede acceder a ellas si están almacenadas en el directorio actual.
6.1.1 Sintaxis
Tanto las funciones internas de MATLAB como las definidas por el usuario tienen la
misma estructura. Cada una consiste en un nombre, una entrada proporcionada por el
usuario y una salida calculada. Por ejemplo, la función
cos(x)
•
se llama cos,
•
toma la entrada del usuario dentro de paréntesis (en este caso, x), y
•
calcula un resultado.
El usuario no necesita ver los cálculos realizados, sino que sólo acepta la respuesta.
Las funciones definidas por el usuario funcionan de la misma forma. Imagine que
usted creó una función llamada
my_function(x)
IDy-function. Al usar
188
Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
en un programa o desde la ventana de comandos regresaría un resultado, en tanto
x
esté defi­
nida y funcione la lógica en la definición de función.
Idea clave: las
funciones le penniten
programar más
eficientemente.
Las funciones definidas por el usuario se crean en archivos-m. Cada una debe comenzar
con una línea de definición de función que contenga
•
•
la palabra funetion,
una variable que defina la salida de función,
•
un nombre de función, y
•
una variable que se use para el argumento de entrada.
Por ejemplo,
function
output =my_function(x)
es la primera línea de la función definida por el usuario llamada my_function. Requiere un
argumento de entrada, que el programa llamará
x,
y calculará un argumento de salida, que el
programa llamará output. El nombre de función y los nombres de las variables de entrada
y salida son arbitrarios y los selecciona el programador. He aquí un ejemplo de una primera
línea adecuada para una función llamada ca1culation (cálculo):
function
result = calculation(a)
En este caso, el nombre de función es calculation, el argumento de entrada se llamará
a en cualquier cálculo que realice el programa function y la salida se llamará result. Aunque
se puede usar cualquier nombre MATLAB válido, es buena práctica de progrdJIlación usar
nombres significativos para todas las variables y para nombres de función.
.....
función: pieza de
código de computación
Suger e n cia
Los estudiantes se confunden frecuentemente con el uso de la palabra input
que acepta una entrada,
(entrada) cuando se refiere a una función. Aquí se le usa para describir el argumento
realiza un cálculo y
de entrada, el valor que va adentro de los paréntesis cuando se llama una función.
proporciona una salida
En MATLAB, los argumentos de entrada son diferentes del comando input.
He aquí un ejemplo de una función MATLAB muy simple que calcula el valor de un polino­
•
mio particular:
function output = poly(x)
%Esta función calcula el valor de un polinomio
%de tercer orden
output = 3*x.A3 + 5*x.A2 - 2*x +1;
El nombre de la función es poly, el argumento de entrada es
output.
x
y la variable de salida se llama
Antes de poder usar esta función, se debe guardar en el directorio actual. El nombre
de archivo debe ser el mismo que el nombre de función con la finalidad de que MATLAB lo
encuentre. Todas las convenciones de nomenclatura de MATLAB que se aprendieron para
nombrar variables se aplican para nombrar funciones definidas por el usuario. En particular
•
El nombre de la función debe comenzar con una letra.
•
Puede formarse con letras, números y el guión bajo.
•
No se pueden usar nombres reservados.
•
Pennite cualquier longitud, aunque los nombres largos no son una buena práctica en pro­
gramación.
Sección 6.1
Creación de archivos-m de función
http://jurgensoft.co.cc
Una vez guardado el archivo-m, la función está disponible para usar desde la ventana
de comando, desde un archivo-m script o desde otra función. Considere la función poly recién
creada. Si en la ventana de comando se escribe
poly(4)
entonces MATLAB responde con
ans
=
265
Si a se hace igual a 4 y se usa a como en argumento de entrada, se obtiene el mismo
resultado:
a = 4;
poly(a)
ans
=
265
Si se define un vector, se obtiene un vector de respuestas. Por ende,
y = 1:5;
poly(y)
produce
ans
=
7
41
121
265
491
Sugerencia
Mientras crea una función, puede ser útil permitir que los eálculos intermedios
se impriman en la ventana de comandos. Sin embargo, una vez que complete su
"depuración", asegúrese de que toda su salida se suprime. Si no lo hace, verá
información extraña en la ventana de comandos.
Ejercicio de práctica 6.1
Cree funciones MATLAB para evaluar las siguientes funciones matemáticas
(asegúrese de seleccionar nombres de función significativos):
1. y(x)
2.
3.
y(x)
y(x)
x2
=
=
e1h
sen(x2)
Crec funciones MATLAB para las siguientes conversiones de unidades (es posible que
necesite consultar un manual o Internet para los factores de conversión adecuados):
4. pulgadas a pies
5. calorías ajoules
6. watts a BTUIh
7. metros a millas
8. millas por hora (mph) a pies/s
189
Idea clave: los
nombres de funciones
usan las convenciones de
nomenclatura MATLAB
estándar para las
variables.
190
Capítulo 6
Funciones definidas por el usuario
http://jurgensoft.co.cc
Conversión entre grados y radianes
Los ingenieros usualmente miden los ángulos en grados, aunque la mayoría de los programas
de cómputo y muchas calculadoras requieren que la entrada a las funciones trigonométri­
DR que cambia grados a radianes y otra
RD que cambia radianes a grados. Sus funciones deben tener capacidad de aceptar
cas esté en radianes. Escriba y pruebe una función
función
entrada escalar y matricial.
l. Establezca el problema.
Crear y poner a prueba dos funciones, DR y RD, para cambiar grados a radianes y ra­
dianes a grados (véase la figura
2.
6. 1).
Describa las entradas y salidas.
Entrada
Salida
Un vector de valores grado
Un vector de valores radián
Una tabla que convierte grados a radianes
Una tabla que convierte radianes a grados
3. Desarrolle un ejemplo a mano.
grados
=
radianes
radianes X 1801 TT
=
grados x TT/180
Grados a radianes
Radianes
Grados
o
30
60
90
•
o
30( 7T/180)
60( 7T/180)
90( 7T1180)
=
=
=
7T/6
7T/3
7T/2
=
=
=
0.524
1.047
1.571
4. Desarrolle una solución MATLAB.
Figura
6.1
las funciones
trigonométricas requieren
que los ángulos se
expresen en radianes.
%Ejemplo 6.1
%
clear, clc
%Defina un vector de valores grado
degrees = 0:15:180;
% Llame la función DR y úsela para encontrar radianes
radians = DR(degrees);
%Cree una tabla para usar en la salida
degrees_radians = [degrees; radians],
Sección 6.1
http://jurgensoft.co.cc
Creación de archivos-m de función
%Defina un vector de valores radián
radians = 0:pi/12:pi;
%llame la función RO y úsela para encontrar grados
degrees = RD(radians);
radians_degrees = [radians; degrees],
Las funciones llamadas por el programa son
function output=DR(x)
%Esta función cambia grados a radianes
output=x*pi/180;
y
function output=RO(x)
%Esta función cambia radianes a grados
output=x*180/pi;
Recuerde que, con la fmalidad de que el archivo-m script encuentre las funciones, deben
estar en el directorio actual y se deben llamar DR.m y RD.m. El programa genera los
siguientes resultados en la ventana de comandos:
degrees_radians =
O
0.000
15
0.262
30
0.524
0.785
45
1.047
60
75
1.309
90
1. 571
1.833
105
2.094
120
2.3 56
13 5
2.618
150
2.880
165
180
3.142
radians_degrees =
0.000
0.000
0.262
1 5.000
0.524
30.000
0.785
4 5.000
1.047
60.000
75.000
1.309
90.000
1.571
1.833
105.000
2.094
120.000
2.3 56
13 5.000
2.618
1 50.000
2.880
165.000
3.142
180.000
191
192
Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
5. Ponga a prueba la solución.
Compare la solución 'MATLAB con la solución a mano. Dado que la salida es una tabla,
es fácil ver que las conversiones generadas por MATLAB corresponden a las calculadas
a mano.
-jUMAI·'D
Tamaño de grano ASTM
Tal vez no esté acostumbrado a pensar que los metales son cristales, pero lo son. Si observa
un trozo pulido de metal bajo un microscopio, la estructura se vuelve clara, como se ve en
la figura
6.2.
Como puede ver, cada cristal (llamado grano en metalurgia) es de un tamaño y
forma diferentes. El tamaño de los granos afecta la fortaleza del metal: cuanto más finos sean
los granos, más fuerte será el metal.
Puesto que es difícil determinar un tamaño de grano "promedio", la A STM (anterior­
mente conocida como la A merican Society for Testing and Materials, pero ahora conocida
Figura
6.2
Microestructuras típicas de
hierro (400x). (De Meta/s
Handbook, 9a edición,
volumen 1, American
Society of Metals, Metals
Park, Ohio, 1978.)
sólo por sus siglas en inglés) desarrolló una técnica estándar. Una muestra de metal se exami­
na bajo un microscopio a una amplificación de
100,
y se cuenta el número de granos en una
pulgada cuadrada. La ecuación relevante es
donde
n
es el tamaño de grano A STM y N es el número de granos por pulgada cuadrada a
100X . La ecuación se puede resolver para
n=
n,
lo que produce
Uog(N) + log(2»
log(2)
Esta ecuación no es difícil de usar, pero es complicada. En vez de ello, cree una función
MATLAB llamada
graio_size (tamaño de grano).
1. Establezca el problema.
Crear y poner a prueba una función llamada
graio_size para determinar el tamaño de
grano A STM de un trozo de metal.
2.
Describa las entradas y salidas.
Para poner a prueba la función, necesitará elegir un número arbitrario de granos. Por
ejemplo:
Entrada
1 6 granos por pulgada cuadrada a
Salida
tamaño de grano A STM
lOOX
3. Desarrollo un ejemplo a mano.
n=
n=
4.
( log(N) + log(2»
log(2)
( log(16) + 10g(2»'
=
log(2)
Desarrolle una solución MATLAB.
La función, que se crea en un archivo-m separado, es
5
Sección 6.1
http://jurgensoft.co.cc
Creación de archivos-m de función
193
function output
grain_sizeCN)
%Calcula el tamaño de grano ASTM n
Clog10CN) + 1og10(2))./10g10C2)¡
output
=
=
que se guardó como
grain_size.m en el directorio actual. Para usar esta función, se le
puede llamar desde la ventana de comandos:
grain_size(16)
ans
=
5
5. Ponga a prueba la solución.
La solución MATLAB es la misma que la solución a mano. Puede ser interesante ver
cómo el tamaño de grano A STM varía con el número de granos por pulgada cuadrada.
Se podría usar la función con un arreglo de valores y graficar los resultados en la figura
6.3.
%Ejemplo 6.2
%Tamaño de grano ASTM
N
1:lO0¡
n
grain_sizeCN)¡
plotCN,n)
titleC'Tamaño de grano ASTM')
xlabelC'Número de granos por pulgada cuadrada a 100x')
ylabelC'Tamaño de grano ASTM')
grid
=
=
Como se esperaba, el tamaño de grano aumenta conforme aumenta el número de granos
por pulgada cuadrada.
Tamaño de grano ASTM
8 .-----�----�---.--__.
.
- -- - - -- - -- --;- - - - - - - - - - - - - .
- - - - - - - - - - - - - � - -------- ----- ..¡ --- - --- -----.
.
- - - -- - - - - - - . ,- -- - -- - ------- - ,-------- ------ , -- --- - -------- ,- -- ---- -- ---.
-
.
.
.
.
,
.
,
.
,
,
,
,
I
•
20
•
I
·
·
·
·
·
·
·
40
•
,
.
.
60
I
•
.
.
.
.
.
.
.
80
Número de granos por pulgada cuadrada a 100x
100
Figura
6.3
la gráfica del
comportamiento de una
función es una buena
forma de ayudar a
determinar si la programó
correctamente.
194
Capítulo 6
Funciones definidas por el usuario
http://jurgensoft.co.cc
Idea clave: los
comentarios de función
se despliegan cuando se
usa la característica help.
6.1.2 Comentarios
Como con cualquier programa de cómputo, debe comentar libremente su código de modo que
sea más fácil de seguir. Sin embargo, en una función MATLAB, los comentarios en la línea
inmediatamente siguiente a la primera línea tienen un papel especial. Dichas líneas se recu­
peran cuando se solicita la función help en la ventana de comandos. Considere, por ejemplo,
la siguiente función:
function results = f(x)
%Esta función convierte segundos a minutos
results = x./60j
Cuando se solicita la función help desde la ventana de comandos, se regresa la línea de
comentario. Por ende,
help f
regresa
This function converts seconds to minutes
6.1.3 Funciones con entradas y salidas múltiples
Tal como las funciones MATLAB predefinidas pueden requerir múltiples entradas y pue­
den regresar múltiples salidas, se pueden escribir funciones más complicadas definidas por
el usuario. Recuerde, por ejemplo, la función remainder (residuo). Esta función predefinida
calcula el residuo en un problema de división y requiere que el usuario ingrese el dividendo y
el divisor. Para el problema
t, la sintaxis correcta es
rell(5.3)
que produce
ans ::::
2
De manera similar, se podría escribir una función definida por el usuario para multipli­
car dos vectores:
•
function output=g(x,y)
% Esta función multiplica x y y
% x y y deben ser matrices del mismo tamaño
a = x .*Yi
output=a:
Cuando x y y se definen en la ventana de comandos y se llama la función g, se regresa
un vector de valores de salida:
x=1:5j
y=5:9;
g(x,y)
ans =
5
12
21
32
45
Puede usar las líneas de comentario para hacer que los usuarios sepan qué tipo de entra­
da se requiere y para describir la función. En este ejemplo se realizó un cálculo intermedio (a),
pero la única salida de esta función es la variable que se llamó output. Esta salida puede ser
una matriz que contenga una diversidad de números, pero aún así es sólo una variable.
Sección 6.1
Creación de archivos-m de función
http://jurgensoft.co.cc
También puede crear funciones que regresen más de una variable de salida. Muchas de
las funciones MATLAB predefinidas regresan más de un resultado, por ejemplo, max regresa
tanto el valor máximo en una matriz como el número de elemento en el que ocurre el máximo.
Para lograr el mismo resultado en una función definida por el usuario, haga la salida una ma­
triz de respuestas en lugar de una sola variable, como lo hace la siguiente función:
function
[dist, vel, accel] ;; mot;on(t)
% Esta función calcula la distancia, velocidad y
% aceleración de un automóvil para un valor dado de t
accel = 0.5 .*t;
vel = accel .* t;
dist = vel.*t;
Una vez que la guarde como motion en el directorio actual, puede usar la funcÍón para
encontrar valores de distance, velocity y acceleration en tiempos específicos:
[distance, velocity, acceleration] = motion(10)
distance =
500
velocity =
50
acceleration
5
Si llama la función motion sin especificar las tres salidas, sólo se regresará la primera
salida:
motion(10)
ans =
500
Recuerde: todas las variables en MATLAB son matrices, así que es importante usar el
operador.* en el ejemplo anterior, que especifica la multiplicación elemento por elemento.
Por ejemplo, usar un vector de valores de tiempo desde O hasta 30 en la función motion
time = 0:10:30;
[distance, velocity, acceleration] = motion(time)
regresa tres vectores de respuestas:
distance ;;
O
500
velocity =
O
50
acceleration
O
5
4000
13500
200
450
10
15
Es más fácil ver los resultados si agrupa los vectores, como en
results = [time' ,distance' ,veloc;ty',acceleration']
lo que regresa
results
O
10
20
30
o
o
o
500
4000
13500
50
200
450
5
10
15
195
196
Capítulo 6
Funciones definidas por el usuario
http://jurgensoft.co.cc
Puesto que
time, distance, velocity y acceleration fueron vectores fila, se usó el ope­
rador transpuesto para hacerlos columnas.
Ejer cicio d e práctic a 6.2
Si supone que las dimensiones de la matriz concuerdan, cree y ponga a prueba
funciones MATLAB para evaluar las siguientes funciones matemáticas simples con
vectores de entrada múltiple y un vector de salida sencilla:
1. z(x, y)
x +y
=
2.
z(a,b,c)
3.
z(w,x,y)
4.
z(p, t)
=
abe
=
we(xly)
plsen(t)
=
Si supone que las dimensiones de la matriz concuerdan, cree y ponga a prueba
funciones MATLAB para evaluar las siguientes funciones matemáticas simples con
un vector de entrada sencilla y vectores de salida múltiple:
5. f(x)
cos(x)
f(x) = sen(x)
=
6. f(x)
=
f(x)
=
7. f(x)
f(x)
=
=
5x2 + 2
V5x2 + 2
exp(x)
ln(x)
Si supone que las dimensiones de la matriz concuerdan, cree y ponga a prueba
funciones MATLAB para evaluar las siguientes funciones matemáticas simples con
vectores de entrada múltiple y vectores de salida múltiple:
8.
f(x, y)
f(x, y)
9. f(x, y)
f(x, y)
=
x
= x
=
=
+
-
y
y
yeX
xeY
•
·iOMél·" ·
Cómo el tamaño de grano afecta la fortaleza del metal:
Una función con tres entradas
Los metales compuestos de pequeños cristales son más fuertes que los metales compuestos de
menos cristales grandes. Una fórmula que relaciona la resistencia a la compresión (la cantidad
de tensión a la que el metal comienza a deformarse permanentemente) con el diámetro de
grano promedio se llama ecuación Hall-Petch:
. u = uo
donde los símbolos
uo
+ Kd-l12
y K representan constantes que son diferentes para cada metal.
Sección 6.1
Creación de archivos-m de función
http://jurgensoft.co.cc
Cree una función llamada
HP que requiera tres entradas (uo' K y el) y calcule el valor de
la resistencia a la compresión. Llame esta función desde un programa MATLAB que propor­
cione valores de uo y K, Y luego grafique el valor de la resistencia a la compresión para valores
de
d desde 0. 1
1.
hasta
1 0 mm.
Establezca el problema.
Crear una función llamada HP que determine la resistencia a la compresión de un trozo
de metal, con el uso de la ecuación Hall-Petch. Usar la función para crear una gráfica de
resistencia a la compresión contra diámetro de grano.
2.
Describa las entradas y salidas.
Entrado.
K
=
9600 psi/Ymm
uo = 12,000
d = 0.1 a 10
3.
Salida
psi
mm
Gráfica de resistencia a la compresión contra diámetro
Desarrolle un ejemplo a mano.
La ecuación Hall-Petch es
1 2,000
Al sustituir los valores de
se obtiene
u=
Parad=
1
psi y
9600 psi! Ymm para
Uo
y K, respectivamente,
1 2,000 + 9600d-l12
mm,
(J
=
1 2,000 + 9600
=
2 1 ,600
4. Desarrolle una solución MATLAB.
La función deseada, que se crea en un archivo-m separado, es
function output
HP(sigmaO,K,d)
%Ecuación Hall-Petch para determinar la resistencia a
%la compresión de metales
output = sigmaO + K*d.A(-0.5);
=
y se guardó como
HP.m en el directorio actual:
%Ejemplo 6.3
clear,clc
format compact
sO=12000
K=9600
%Defina los valores de diámetro de grano
d=0.1:0.1:10;
yield=HP(sO,K,d);
%Grafique los resultados
figure(l)
197
198
Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
plot(d,yield)
title('Resistencias a la compresión encontradas con la ecuación
Hall-Petch')
xlabel('Diámetro, mm')
ylabel('Resistencia a la compresión, psi')
El programa generó la gráfica que se muestra en la figura 6.4.
5. Ponga a prueba la solución.
Se puede usar la gráfica para comparar los resultados con la solución a mano.
Resistencias a la compresión encontradas
4.5
X
con la ecuación Hall-Petch
104
---,--,
,-
4
'"
'"
'ü
c:
B
en
'V;
'"
�
3
2.5
2
Figura
6.4
Resistencias a la
compresión predichas con
la ecuación Hall-Petch.
2
4
6
Diámetro, mm
10
8
•
+jijftqi.'j+
Energía cinética: una funci ón con dos entradas
La energía cinética de un objeto en movimiento (figura 6.5) es
Cree y ponga a prueba una función llamada KE para encontrar la energía cinética de un auto­
móvil en movimiento si se conocen la masa
1. Establezca el problema.
m
y la velocidad
v
del vehículo.
Crear una función llamada KE para encontrar la energía cinética de un automóvil.
Sección 6.1
Creación de archivos-m de función
http://jurgensoft.co.cc
199
2. Describa las entradas y salidas.
Entrada
Masa del automóvil, en kilogramos
Velocidad del automóvil, en mis
Salida
Energía cinética, en joules
3. Desarrolle un ejemplo a mano.
Si la masa es 1000 kg Y la velocidad es 25 mis, entonces
KE
=
%
X 1000 kg X (25
m/s)2
=
312,500 J
=
312.5 kJ
4. Desarrolle una solución MATLAB.
function
output =ke(m,v)
output = 1/2*m*v.A2;
5. Ponga a prueba la solución.
v = 25;
m = 1000;
ke(m,v)
ans =
312500
Este resultado coincide con el ejemplo a mano, lo que confirma que la función funciona
correctamente y ahora se puede usar en un programa MATLAB más grande.
Figura
6.5
Los autos de carreras
almacenan una cantidad
significativa de energía
cinética.
6.1.4 Funciones sin entrada o salida
Aunque la mayoría de las funciones necesitan al menos una entrada y regresan al menos un
valor de salida, en algunas situaciones no se requieren ni entradas ni salidas. Por ejemplo,
considere esta función, que dibuja una estrella en coordenadas polares:
function [] = star( )
theta = pi/2:0.8*pi:4.8*pi;
r=ones(l,6);
polar(theta,r)
Los corchetes de la primera línea indican que la salida de la función es una matriz vacía
(es decir: no se regresa valor). Los paréntesis vacíos dicen que no se espera entrada. Si desde
la ventana de comandos usted escribe
star
200 Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
90
180
Figura
o
6.6
La función star definida
por el usuario no requiere
entrada y no produce
valores de salida¡ pero
dibuja una estrella en
coordenadas polares.
270
entonces no regresa valores, sino que se abre una ventana de figura que muestra una estrella
dibujada en coordenadas polares. (Véase la figura 6.6.)
.....
Sugerencia
Es posible que se pregunte si la función star realmente es un ejemplo de una
función que no regresa una salida; después de todo, dibuja una estrella. Pero la
salida de una función se define como un valor que se regresa cuando usted llama
la función. Si se pide a MATLAB realizar el cálculo
A= star
se genera un enunciado de error, ¡porque la función star no'regresa nada! Por ende,
no hay nada con lo que se pueda igualar a A
Idea clave: no todas
las funciones requieren
Existen muchas funciones internas MATLAB que no requieren entrada alguna. Por
ejemplo,
una entrada.
A=c1ock
regresa la hora actual:
A =
1.Oe+003 '*
Columns 1 through 4
0.0030
2.0050
Columns 5 through 6
0.0277
0.0250
Además,
A=pi
0.0200
0.0150
Sección 6.1
Creación de archivos-m de función
http://jurgensoft.co.cc
regresa el valor de la constante matemática 1T:
A =
3.1416
Sin embargo, si se intenta establecer la función MATLAB tic igual a un nombre de va­
riable, se genera un enunciado de error porque tic no regresa un valor de salida:
A=tic
??? Error using ==> tic
Too many output arguments.
(La función tic inicia un cronómetro para su uso posterior en la función toe.)
6.1.5 Determinación del número de argumentos de entrada y salida
En alguna ocasión usted querrá conocer el número de argumentos de entrada o valores de salida
asociados con una función. MATLAB proporciona dos funciones internas para este propósito.
La función nargin determina el número de argumentos de entrada o en una función
definida por el usuario o en una función interna. El nombre de la función se debe especificar
como una cadena, como, por ejemplo, en
nargin('sin')
ans =
1
La función residuo, rem, requiere dos entradas; por tanto,
nargin(' rem')
ans =
2
Cuando nargin se usa dentro de una función definida por el usuario, determina cuántos
argumentos de entrada se ingresaron en realidad. Esto permite a una función tener un número
variable de entradas. Recuerde las funciones de graficación como surf. Cuando surf tiene una
sola entrada matriz, se crea una gráfica, que usa los números de índice de matriz como las
coordenadas x y y. cuando existen tres entradas, x, y y z, la gráfica se basa en los valores x y
y especificados. La función nargin permite al programador determinar cómo crear la gráfica,
con base en el número de entradas.
La función surf es un ejemplo de una función con un número variable de entradas. Si se
usa nargin desde la ventana de comandos para determinar el número de entradas declaradas,
no hay una respuesta correcta. La función nargin regresa un número negativo para hacer saber
que es posible un número variable de entradas:
nargin('surf')
ans =
-1
La función nargout es similar a nargin, pero determina el número de salidas de una
función:
nargout(' sin ')
ans =
1
El número de salidas se determina mediante cuántas matrices se regresan, no cuántos
valores hay en la matriz. Se sabe que size regresa el número de filas y columnas en una matriz,
así que se puede esperar que nargout regresa 2 cuando se aplica a size. Sin embargo,
Idea clave: usar
las funciones nargin
o nargout es útil
en funciones de
programación con
entradas y salidas
variables.
201
202 Capítulo
6
Funciones definidos por el usuario
http://jurgensoft.co.cc
nargout(' size')
ans =
1
regresa sólo una matriz, que tiene sólo dos elementos, como por ejemplo, en
x=1:10j
size(x)
ans =
1
10
Un ejemplo de una funeión con salidas múltiples es max:
nargout(' max' )
ans =
3
Cuando se usa dentro de una función definida por el usuario, nargout determina cuán­
tas salidas solicitó el usuario. Considere este ejemplo, en el que se reescribió la funeión de l a
sección 6.1.4 para crear una estrella:
function A=starl( )
theta = pi/2:0.8*pi:4.8*pij
r=ones (1,6) j
polar(theta, r)
if nargout==l
A='Twinkle twinkle little star';
end
Si se usa nargout desde la ventana de comando, como en
nargout('starl')
ans =
1
MATLAB indica que se especificó una salida. No obstante, si se llama la función sim­
plemente como
star1
nada regresa a la ventana de comandos, aunque se dibuje la gráfica. Si se llama la función al
igualarla a una variable, como en
x=starl
x =
Twinkle twinkle little star
se regresa un valor para x, con base en el enunciado if incrustado en la función, que usó nar­
gout para determinar el número de valores de salida.
6.1.6 Variables locales
Las variables que se usan en los archivos-m de función se conocen como
variables locales. La
única forma en que una función puede comunicarse con el área de trabajo es a través de los
argumentos de entrada y la salida que regresa. Cualesquiera variables definidas dentro de la
Sección 6.1
Creación de orchivos-m de función
203
http://jurgensoft.co.cc
función existen sólo para uso de la función. Por ejemplo, considere la función g descrita an­
teriormente:
function output=g(x, y)
% Esta función multiplica x y y
% x y y deben ser matrices del mismo tamaño
a = x .*Yi
output=a;
Las variables a, x, y y output son variables locales. Se pueden usar para cálculos adi­
variable local: una
cionales dentro de la función g, pero no se almacenan en el área de trabajo. Para confirmar
variable que sólo tiene
esto, limpie el área de trabajo y la ventana de comandos y luego llame la función g:
significado dentro de un
programa o función
clear, clc
g(10, 20)
La función regresa
g(10,20)
ans =
200
Note que la única variable almacenada en la ventana del área de trabajo es ans, que se
caracteriza del modo siguiente:
double array
Tal como los cálculos realizados en la ventana de comandos o desde un archivo-m
script no pueden tener acceso a variables definidas en funciones, las funciones no pueden
tener acceso a las variables deflnidas en el área de trabajo. Esto significa que las funciones
deben estar completamente autocontenidas: la única forma en que pueden obtener informa­
ción de su programa es a través de los argumentos de entrada, y la única forma en que pueden
entregar información es a través de la salida de la función.
Considere una función escrita para encontrar la distancia que un objeto cae debido a la
gravedad:
function result = distance(t)
%Esta función calcula la distancia que un objeto en caída
%recorre debido a la gravedad
g = 9.8
%metros por segundo al cuadrado
result = lj2*g*t.A2;
El valor de g debe incluirse
adentro
de la función. No importa si g se usa o no en el
programa principal. Cómo se defina g está oculto a la función distance, a menos que g se es­
pecifique adentro del programa.
Desde luego, también podría pasar el valor de g a la función como un argumento de
entrada:
function result = distance(g,t)
%Esta función calcula la distancia que un objeto en caída
%recorre.debido a la gravedad
result = lj2*g*t.A2j
204 Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
Sugerencia
Para referirlas, se pueden usar los mismos nombres de matriz tanto en una función
como en el programa. Sin embargo, no
tienen que ser los mismos. Dado que los
nombres de variable son locales a la función o al programa que llama la función, las
variables están completamente separadas. Como programador principiante, debería
usar diferentes nombres de variable en sus funciones y. sus programas, sólo para que
no se confunda
usted mismo.
6.1.7 Variables globales
Idea clave: por lo
general es mala idea
definir variables globales.
A difereneia de las variables locales, las variables globales están disponibles para todas las
partes de un programa de eómputo. En general, es mala idea definir variables globales. Sin
embargo, MATLAB protege al usuario del uso no previsto de una variable global al requerir
que se identifique tanto en el ambiente de la ventana de comandos (o en un archivo�m script)
como en la función que la usará.
Considere la función distance una vez más:
variable global:
variable que está
disponible a partir de
programas múltiples
function result = distance(t)
%Esta función calcula la distancia que un objeto en caída
%recorre debido a la gravedad
global (;
result = 1/2*G*t.A2;
El comando global alerta a la función para que busque en el área de trabajo el valor
de G. G también se debe definir en la ventana de comandos (o archivo-m script) como una
variable global:
global G
G=9.8;
Este enfoque le permite cambiar el valor de G sin necesidad de redefinir la función dis�
tance o proporcionar el valor de G como un argumento de entrada a la función distance.
Sugerencia
Como cuestión de estilo, siempre ponga los nombres de las variables globales en
mayúsculas. A MATLAB no le importa, pero es más fácil identificar las variables
globales si usa una convención de nomenclatura consistente.
Sugerencia
Puede parecer buena idea usar variables globales porque ellas pueden simplificar sus
programas. No obstante, considere este ejemplo de uso de variables globales en su
vida diaria: sería más fácil comprar un libro en una tienda en línea si publicara
la información de su tarjeta de crédito en un sitio donde cualquier vendedor sólo
tuviera que buscarla. Entonces el librero no tendría que pedirle que escriba su
número. Sin embargo, esto podría producir algunas consecuencias no previstas
(¡como que otra persona use su taIjeta de crédito sin su permiso o conocimiento!).
Cuando usted crea una variable global, queda disponible a otras funciones y dichas
funciones la pueden cambiar, lo que a veces conduce a consecuencias 110 previstas.
I
: ,
Sección 6,1
Creación de archivos-m de función
http://jurgensoft.co.cc
6.1.8 Acceso a código de archivo-m
Las funciones proporcionadas con MATLAB son de dos tipos. Un tipo es interno y el có­
digo no es accesible para que el usuario lo revise. El otro tipo consiste en archivos-m, que
se almacenan en cajas de herramientas proporcionadas con el programa. Estos archivos-m
(o los archivos-m que uno escribe) se pueden ver eon el comando type. Por ejemplo, la fun­
ción sphere crea una representación tridimensional de una esfera; por tanto,
type sphere
o
type('sphere')
regresa los contenidos del archivo sphere.m:
function [xx,yy,zz] = sphere(varargin)
%SPHERE genera una esfera.
[X,Y,Z] = SPHERE(N) genera tres matrices
%
(N+l)-por-(N+l) de modo que SURF(X,Y, Z) produzca una
%
esfera unitaria.
%
%
[X, Y,Z] = SPHERE usa N = 20.
%
%
SPHERE{N) Y SPHERE sol a grafican l a esfera como
%
una SUPERFICIE y no regresan nada.
%
%
) grafiea en AX en lugar de GCA.
SPHERE(AX
%
%
Vea también ELLIPSOID, CYLINDER.
%
• . • •
Cl ay M. Thompson 4-24-91, CBM 8-21-92.
Copyright 1984-2002 The MathWorks, Ine.
$Revision: 5.8.4.1 $ $Date: 2002/09/26 01:55:25 $
%
%
%
% Posible división (parse) de entrada Axes
error(nargchk(O, 2,nargin»;
[cax,args,nargs] = axescheck(varargin{:});
n = 20;
if nargs
>
O, n
=
args{I}: end
% -pi <= theta <= pi es un vector fila.
% -pi/2 <= phi <= pi/2 es un vector col umna.
theta = (-n:2:n)/n*pi¡
phi = (-n:2:n)'/n*pi/2;
cosphi = cos{phi)¡ cosphi(l) = O; cosphi(n+l) = O:
sintheta = sin(theta): sintheta(1) = O: sintheta(n+l)
x
y
z
=
=
=
cosphi*cos(theta);
eosphi*sintheta:
sin(phi)*ones(l.n+l);
if nargout == O
cax = newpl ot(cax):
surf(x,y,z. ' parent',cax)
else
xx = Xi yy = yj zz = Z¡
end
O;
205
206 Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
Sugerenc ia
Note que la función
sphere usa varargin para indicar que aceptará un número
nargin
variable de argumentos de entrada. La función también utiliza las funciones
y
nargout. Estudiar esta función le puede dar ideas acerca de cómo programar sus
propios archivos-m de función.
6.2
CREACiÓN DE SU PROPIA CAJA DE HERRAMIENTAS DE FUNCIONES
'dea clave: agrupe
Cuando llama una función en MATLAB, el programa busca primero en el directorio actual
sus funciones en cajas de
para ver si la función está definida. Si no puede encontrar la función ahí, comienza a recorrer
herramientas.
una ruta de búsqueda predefinida en busca de un archivo con el nombre de la función. Para
ver la ruta que el programa sigue conforme busca los archivos, seleccione
File
�
Set Path
de la barra de menú o escriba
pathtool
en la ventana de comandos (figura
6.7).
Conforme cree más y más funciones para usar en su programación, querrá modificar la
ruta para buscar en un directorio donde haya almacenado sus propias herramientas personales.
Por ejemplo, suponga que almacenó las funciones grados a radianes y radianes a grados crea­
das en el ejemplo 6.1 en un directorio llamado
My_functions.
Puede agregar este directorio (carpeta) a la ruta al seleccionar Add
Folder de la lista de
botones de opción en la ventana de diálogo Set Path (establecer ruta), como se muestra en la
figura 6.7. Se le solicitará proporcionar la ubicación de la carpeta o navegar para encontrarla,
como se muestra en la figura 6.8.
Ahora MATLAB busca las definiciones de [unción primero en el directorio actual y
luego recorre la ruta de búsqueda modificada, eomo se muestra en la figura 6.9.
Una vez que agregue una carpeta a la ruta, el cambio se aplíca sólo a la sesión actual
de MATLAB, a menos que guarde sus cambíos de manera permanente. Está claro que nunca
•
C:\MATLAB7\toolbox'matlab\ops
[U C:\MATLAB7\toolbox'matlab\lang
i!f.l C:\MATLAB7\toolbox'matlab\elmat
" C:\MATLAB7\toolbox'matlab\elfun
C:\MATLAB7\toolbox'matlab\specfun
C:\MATLAB7\toolbox'matlab'matfun
C:\MATLAB7\toolbox\matlab\datafun
Figura
6.7
la herramienta path
(ruta) le permite cambiar
dónde MATLAB busca los
deFiniciones de Función.
G.iiI C:WlATLAB7\toolbox\ma1lab\polyfun
Sección 6.2
Creación de su propia caja de herramientas de funciones
207
http://jurgensoft.co.cc
Chapter 6 Pr actice
(HU
¡'Ha
'
·U
Ei
Chapter 7
Chapter 8
9
Figura 6.8
Ventana Browse for FoIder
(buscar carpeta).
debe hacer cambios pennanentes a una computadora pública. Sin embargo, si alguien más
hizo cambios que desea revertir, puede seleccionar el botón defauIt, como se muestra en la
figura 6.9, para regresar la ruta de búsqueda a su configuración original.
La herramienta path le permite cambiar interactivamente la ruta de búsqueda MATLAB;
sin embargo, la función addpath le permite insertar la lógica para agregar una ruta de búsque­
da a cualquier programa MATLAB. Consulte
help addpath
si desea modificar la ruta de esta fonna.
MATLAB proporciona acceso a varias cajas de herramientas desarrolladas en The Math
Works o por la eomunidad de usuarios. Para más infonnación, vea el website de la empresa,
www.mathworks.com.
C:\MATLAB7\toolbox\matlab\general
C:\MATLAB7\toolbox\matlab\ops
C:\MATLAB7\toolbox\matlab\lang
C:\MATLAB7\toolbox\matlab\elmat
C:\MATLAB7\toolbox\matlab\elfun
C:\MATLAB7\toolbox\n1atlab\specfun
C:\MATLAB7\toolbox\matlab\matfun
Figura 6.9
Rula de búsqueda MATLAB
modificada.
208
Capítulo 6 Funciones definidas par el usuario
6.3
http://jurgensoft.co.cc
FUNCIONES ANÓNIMAS
Por lo general, si se enfrenta al problema de crear una función, qucrrá almacenarla para usar
en otros proyectos de programación. Sin embargo, MATLAB incluye un tipo más simple de
función, llamadajUnción anónima. Nuevas en MATLAB 7, las funciones anónimas se definen
en la ventana de comandos o en un archivo-m script y están disponibles, en gran medida como
Idea clave: las
los nombres de variables, sólo hasta que se limpia el área de trabajo. Para crear una función
funciones anónimas se
anónima, considere el siguiente ejemplo:
pueden incluir en los
1n
programas de archivo-m
con otros comandos, o se
pueden definir desde la
ventana de comandos.
•
•
•
@(x) log(x)
=
El símbolo @ alerta a MATLAB que
In es una función.
Inmediatamente después del símbolo @, se menciona la entrada a la función.
Finalmente, se define la función.
El nombre de función aparece en la ventana de variables, mencionada como una function_
handle (manipulador de función):
Clase
@(x) log(x)
@ ]n
function_handle
16
1x1
Las funciones anónimas se pueden usar como cualquier otra función; por ejemplo,
1n(1O)
ans
=
2.3026
Una vez que se limpia el área de trabajo, la función anónima ya no existe más. Las
funciones anónimas y los manipuladores de función relacionados son útiles en funciones que
requieren otras funciones como entrada (funciones de función).
Las funciones anónimas se pueden guardar como archivos .mat, tal como cualquier
variable, y se pueden restaurar con el comando
load.
MATLAB también soporta un tipo de función similar llamado función en línea. Al ac­
ceder al menú help se puede encontrar información acerca de las funciones en línea:
help in1ine
•
Las funciones en línea no ofrecen ventajas sobre las funciones anónimas y tienen una
sintaxis ligeramente más complicada.
6.4
FUNCIONES DE FUNCiÓN
Idea clave: las
Un ejemplo de una función de función interna MATLAB es la gráfica de función,
funciones de función
función requiere dos entradas: una función o un manipulador de función, y un rango sobre
requieren quc las
el cual graficar. Se puede demostrar el uso de
funciones o función se
define como
manipulen como entrada.
1n
=
fplot con el manipulador de función In, que se
@(x) log(x)
El manipulador de función se puede usar ahora como entrada a la función fplot:
fplot(ln, [0.1. 10])
El resultado se muestra en la figura
fplot. Esta
6.1 0.
Resumen
209
http://jurgensoft.co.cc
2
1.5
0.5
o
-0.5
-1
�
Figura
1.5
-2.5
1
2
3
4
5
6
7
8
9
'--_-'-__'--_--'-__-L-_----'__-L__-'-_----'__--'-_---'
10
6.10
Los manipuladores de
función se pueden usar
como entrada a una
función de función, como
fplot.
-------1.¡'fi"MU.
MATLAB contiene una gran variedad de funciones internas. Sin embargo, con frecuencia es
útil crear las propias funciones MATLAB. El tipo más común de función MATLAB definida
por el usuario es el archivo-m de función, que debe comenzar con una línea de definición de
función que contenga
•
la palabra function,
•
una variable que defina la salida de función,
•
un nombre de función, y
•
una variable que se use para el argumento de entrada.
Por ejemplo,
funct;on
output
=
my_function(x)
El nombre de función también debe ser el nombre del archivo-m en el que la función se alma­
cena. Los nombres de función siguen las reglas de nomenclatura MATLAB estándar.
Al igual que las funciones internas, las funciones definidas por el usuario pueden acep­
tar entradas múltiples y pueden regresar resultados múltiples.
Se pueden acceder a los comentarios que siguen inmediatamente a la línea de definición
de función desde la ventana de comandos con el comando help.
Las variables que se definen dentro de una función son locales a dicha función. No se
almacenan en el área de trabajo y no se puede acceder a ellas desde la ventana de eomandos.
Las variables globales se pueden definir con el comando global que se usa tanto en la ventana
de comandos (o archivo-m script) como en una función MATLAB. El buen estilo de progra­
mación sugiere que las variables globales se definan con letras mayúsculas. Sin embargo, en
general, no es aconsejable usar variables globales.
Los grupos de funciones definidas por el usuario, llamados "cajas de herramientas", se
pueden almacenar en un directorio común y acceder a ellas mediante la modificación de la
ruta de búsqueda MATLAB. Esto se logra interactivamente con la herramienta path, o desde
la barra de menú, como en
File _ Set Path
210
Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
o desde la línea de comando, con
pathtool
MATLAB proporciona acceso a numerosas cajas de herramientas desarrolladas en The
MathWorks o por la comunidad de usuarios.
Otro tipo de función es la función anónima, que se definc en una sesión MATLAB o
en un archivo-m script y existe sólo durante dicha sesión. Las funciones anónimas son espe­
cialmente útiles para expresiones matemáticas muy simples o como entrada a las funciones de
función más complicadas.
RESU M E N MATLAB
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
addpath
function
meshgrid
narg i n
nargout
pathtool
varargi n
TÉRMI NOS CLAVE
@
identifica un manipulador de función, como
%
comentario
agrega
se usa con las funciones en línea
un directorio a la ruta de búsqueda MATLAB
identifica un archivo-m como función
mapea dos vectores de entrada en dos matrices bidimensionales
determin a el número de argumentos de entrada en una función
determina el número de argumentos de salída de una función
abre la herramienta de ruta interactiva
indica que un número variable de argumentos puede ser entrada a una función
anónima
comentarios
archivo-m
directorio
nombre de
argumento
en línea
variable global
argumento de entrada
caja de herramientas
•
el que
carpeta
función
función
nombre de archivo
función
variable local
de función
manipulador de función
Archivos-m de función
6.1
Conforme cree funciones en esta sección, asegúrese de comentarlas de manera ade­
cuada. Recuerde que, aunque muchos de estos problemas se podrían resolver sin una
función, el objetivo de este capítulo es aprender a escribir y usar funciones.
Como se describió en el ejemplo 6.2, los metales en realidad son materiales cristali­
nos. Los cristales metálicos se llanlan granos. Cuando el tamaño de grano promedio
es pequeño, el metal es fuerte; cuando es grande, el metal es más débil. Dado que cada
cristal en una muestra particular de metal es de un tamaño diferente, no es obvio cómo
se podría describir el tamaño de cristal promedio. La American Society for Testing and
Materials (ASTM) desarrolló la siguiente correlación para estandarizar las mediciones
de tamaño de grano:
Problemas
El tamaño de grano ASTM
(n)
http://jurgensoft.co.cc
se determina al observar una muestra de metal bajo un
microscopio a una amplíficación de 1 00 X (potencia 1 00). Se estima
(N)
el número
de granos en un área de 1 pulgada cuadrada (dimensiones reales de 0.01 pulgada X
0.01 pulgada) y se usa en la ecuación precedente para encontrar el tamaño de grano
ASTM.
(a) Escriba una función MATLAB llamada num...grains para encontrar el número de
granos en un área de 1 pulgada cuadrada (N) a una amplificación de 1 00 X cuando
el tamaño de grano ASTM se conoce.
(b) Use su función para encontrar cl número de granos para tamaños de grano ASTM
n 1 0 a 1 00.
(e) Cree una gráfica de sus resultados.
6.2
Acaso la ecuación más famosa en física sea
E = mc2
que relaciona la energía E con la masa
m.
La rapidez de la luz en el vacío,
la propiedad q u e vincula a las dos. L a rapidez de la l u z en e l vacío e s
e,
2.9979
es
X
1 08 mis.
(a) Cree una función llamada energy para encontrar la energía correspondiente a una
masa dada en kg. S u resultado estará en joules, pues 1
(b)
m2/s2 = 1 joule.
U se su función para encontrar la energía correspondiente a masas desde 1 kg hasta
1 06 kg. Use la [unción logspaee (consulte help/logspaee) para crear un vector
masa adecuado.
(e) Cree una gráfica de sus resultados. Intente usar diferentes enfoques de graficación
logarítmica (por ejemplo: semilogy, semilogx y IogIog) para deterrÍlinar la mejor
forma de graficar sus resultados.
6.3
En química de primer año, se introduce la relación entre moles y masa
m
n =
MW
donde
n
m
MW
=
número de moles de una sustancia,
masa de la sustancia, y
peso molecular (masa molar) de la sustancia.
(a) Cree un archivo-m de funcÍón llamado nmoles que requiera dos entradas vecto­
riales (la masa y el peso molecular) y que regrese el correspondiente número de
moles. Puesto que proporciona entrada vectorial, será necesario usar l a función
meshgrid en sus cálculos.
(b)
Ponga a prueba su función para los compuestos que se muestra en la tabla siguien­
te, para masas desde 1 hasta 1 0 g:
Peso molecUlar \""_;·"""_'1
Benceno
Alcohol etílico
Refrigerante R134a
(t et raflu oroetano)
Su resultado debe ser una matriz de 1 0 X 3.
78.115 glmol
46.07 glmol
102.3 glmol
211
2 1 2 Capítulo 6 Funciones deBnidos por el usuario
6.4
http://jurgensoft.co.cc
Al reordenar la relación anterior entre moles y masa, puede encontrar l a masa si cono­
ce el número de moles de un compuesto:
m = n
X MW
(a) Cree un archivo-m de función llamado mass que requiere dos entradas vectoriales
(el número de moles y el peso molecular) y que regrese la masa correspondiente.
Puesto que proporciona entrada vectorial, será necesario usar la función meshgrid
en sus cálculos.
(b) Ponga a prueba su función con los compuestos que se mencionan en el problema
anterior, para valores de
6.5
n
desde 1 hasta 10.
La distancia hasta el horizonte aumenta conforme usted asciende una montaña (o una
colina). La expresión
donde
d
=
h
distancia hasta el horizonte,
radio de la Tierra, y
r
=
altura de la colina
se puede usar para calcular dicha distancia. La distancia depende de cuán alta sea la
colina y del radio de la Tierra (u otro cuerpo planetario).
(a) Cree un archivo-m de función llamado distance para encontrar la distancia hasta
el horizonte. Su función debe aceptar dos entradas vectoriales (radio y altura) y
debe regresar la distancia hasta el horizonte. No olvide que necesitará usar mesh­
grid porque sus entradas son vectores .
(b) Cree un programa MATLAB que u s e su función distance para encontrar l a dis­
tancia en millas hasta el horizonte, tanto en la Tierra como en Marte, para colinas
desde O hasta 1 0,000 pies. Recuerde usar unidades consistentes en sus cálculos.
Note que
•
Diámetro de l a Tierra
•
Diámetro de Marte
=
7926 millas .
42 17 millas.
Reporte sus resultados en una tabla. Cada columna debe representar un planeta dife­
6.6
rente y cada fila debe representar una altura de eolina diferente.
Un cohete se lanza verticalmente. En el tiempo t
O, el motor del cohete se apaga.
En ese momento, el cohete ha alcanzado una altura de 500 metros y se eleva con una
velocidad de 125 metros por segundo. Entonces la gravedad toma el control. La altura
del cohete como función del tiempo es
h(t)
_
-
9.8
2
+ 125t + 5 00 para t > O
(a) Cree una función l lamada height que acepte tiempo como entrada y regresa l a
altura del cohete. U s e su función e n s u s soluciones a l a s partes b y c.
(b) Grafique height contra tiempo para tiempos desde O hasta 30 segundos. Use un
incremento de 0.5 segundo en su vector tiempo.
(e)
Encuentre el tiempo cuando el cohete comienza a caer de vuelta al suelo. (En este
ejercicio será útil la función max.)
6.7
La distancia que recorre un cuerpo en caída libre es
x =
1
2
Problemas 21 3
http://jurgensoft.co.cc
donde
g
=
=
x
aceleración debida a la gravedad, 9.8 mls2,
tiempo en segundos,
distancia recorrida en metros .
Si ya cursó cálculo, sabe que se puede encontrar l a velocidad del objeto al tomar l a
derivada d e la ecuación anterior. Esto es,
dx
v
dt
gt
Se puede encontrar la aceleración al tomar la derivada de nuevo:
dv
dt
(a)
Cree una función llamada
a
g
free_falI con un solo vector de entrada t que regrese
g.
valores para distancia x, velocidad v y aceleración
(b) Ponga a prueba su función con un vector tiempo que varíe desde O hasta 20 se­
gundos.
6.8
Cree una función llamada
polygon que dibuje un polígono con cualquier número de
lados. Su función debe requerir una sola entrada: el número de lados deseado. No debe
regresar valor alguno a l a ventana de comandos, sino que debe dibuj ar el polígono
solicitado en coordenadas polares.
Creación de su propia caja de herramientas
6.9
Este problema requiere que usted genere tablas de conversión de temperatura. U se
las siguientes ecuaciones, que describen las relaciones entre temperaturas en grados
Fahrenheit (TE)' grados Celsius
(Tc)' grados Kelvin (T) y grados Rankine (TR), respec­
tivamente:
T¡; = TR
T¡; =
�
-
459.67 "R
Te + 32 °F
9
TR = 5
Necesitará reordenar estas expresiones para resolver algunos de los problemas.
(a) Cree una función llamada F_to_K que convierta temperaturas en Fabrenheit a
Kelvin. Use su función para generar una tabla de conversión para valores desde
(b)
O °F hasta 200 0F.
Cree una función llamada
C_to_R que convierta temperaturas en Celsius a Ranki­
neo Use su función para generar una tabla de conversión desde O OC hasta
Imprima 25 líneas en la tabla. (Use la función
1 00 oC.
linspace para crear su vector de
entrada. )
(e)
(d)
Cree una función llamada
C_to_F que convierta temperaturas e n Celsius a
Fahrenheit. Use su función para generar una tabla de conversión desde O oC hasta
1 00 oC Elija un espaciamiento adecuado.
Agrupe sus funciones en una carpeta (directorio) llamado
rny_temp30nversio­
ns. Ajuste la ruta de búsqueda MATLAB de modo que encuentre su carpeta. ( ¡ No
guarde cambios en una computadora pública ! )
214
Capítulo 6 Funciones definidas por el usuario
http://jurgensoft.co.cc
Fun ciones an óni mas
6.10
Los barómetros se han usado durante casi 400 años para medir cambios de presión en
la atmósfera. El primer barómetro conocido lo inventó Evangelista Torricelli (16081 647), quien fue estudiante de Galileo en Florencia, Italia, durante sus años finales.
La altura de un líquido en un barómetro es directamente proporcional a la presión
atmosférica, o
P = pgh
donde P es la presión, p es la densidad del fluido del barómetro y h es la altura de la
columna de líquido. Para barómetros de mercurio, la densidad del fluido es 1 3,560
kglm3• En la superficie de la Tierra, la aceleración debida a la gravedad, g, es 9.8 mls2•
Por tanto, la única variable en la ecuación es la altura de la columna de fluido, h, que
debe tener la unidad de metros.
(a) Cree una función anónima P que encuentre la presión si se proporciona el valor de h.
Las unidades de su respuesta serán
kg
m
1
-
82
=
Pa
(b) Cree otra función anónima para convertir presión en Pa (pascales) a presión en
atmósferas (atm). Llame a la función Pa_to_utm. Note que
1 atm
1 0 1 ,325 Pa
(e) Use sus funciones anónimas para encontrar la presión para alturas de fluido desde
0.5 m hasta 1 .0 m de mercurio.
(d)
6.11
Guarde sus funciones anónimas como archivos
.mat.
La energía requerida para calentar agua a presión constante es aproximadamente igual a
donde
m
e
p
!J.T
(a)
=
=
masa del agua en gramos,
c apacidad calorífica del agua, 1 cal/g
c ambio en temperatura,
0K.
°K, y
Cree una función anónima llamada heat para encontrar la energía requerida para ca­
lentar 1 gramo de agua si el cambio en temperatura se proporciona como entrada.
(b) Su resultado estará en calorías:
cal 1
g_
········ K
g K
cal
Los joules son la unidad de energía usada con más frecuencia en ingeniería. Cree
otra función anónima
caCto_J para convertir su respuesta de la parte (a) en jou­
les. (Existen 4.2 joules/cal.)
(e) Guarde sus funciones anónimas como archivos
.mat.
http://jurgensoft.co.cc
Entrada y salida
controladas por el usuario
INTRODUCCiÓN
Hasta el momento, MATLAR se ha usado de dos maneras: como una memoria de
trabajo auxiliar (scratch pad) en la ventana de comandos y para escribir programas
simples (archivos-m script y funeiones) en la ventana de edición. En ambos casos se
supuso que el programador era el usuario. En este eapítulo se avanzará hacia los pro­
gramas más complicados, escritos en la ventana de edición, suponiendo que el progra­
mador y el usuario pueden ser personas diferentes. Esto hará neeesario comunicarse
con el usuario a través de comandos de entrada y salida, en lugar de reescribir el có­
digo real para resolver problemas similares. MATLAB ofrece funciones internas para
permitir al usuario comunicarse con un programa conforme se ejeeuta. El comando
input detiene el programa y conmina al usuario a ingresar una entrada; los comandos
disp y fprintf proporcionan salida a la ventana de comandos.
7.1
ENTRADA DEFINIDA POR El USUARIO
Aunque se han escrito programas en archivos-m script, se supuso que el programador
(usted) y el usuario eran la misma persona. Para correr el programa con diferentes va­
lores de entrada, en realidad se cambió parte del código. Se pueden recrear programas
más generales al permitir al usuario ingresar valores de una matriz desde el teclado
mientras el programa corre. La función input le permite hacer esto. Despliega una
cadena de texto en la ventana de comando y luego espera que el usuario proporcione la
entrada solicitada. Por ejemplo,
z
=
input('Ingrese un valor')
despliega
Ingrese un valor
en la ventana de comandos. Si el usuario ingresa un valor como
5
216
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controlados por el usuario
el valor 5 a la variable
el programa
z.
Sí el comando
input no
termina con un punto y
coma, el valor ingresado se despliega en la pantalla:
z =
5
una matriz uni o bidimensional. El usua-
El mismo enfoque se puede usar para
rio debe proporcionar los paréntesis y delimitadores adeeuados (comas y puntos y coma). Por
ejemplo,
z = input(' Ingrese valores para z entre corchetes' )
Idea clave: la función
input se puede usar para
comunicarse con el
usuario del programa.
pide al usuario que ingrese una matriz como
[ 1, 2, 3; 4, 5
6]
J
y responde con
z =
1
4
2
5
3
6
Este valor de entrada de
Z
se puede usar entonces en cálculos subsecuentes por el archi­
vo-m script.
Los datos ingresados con input no necesitan ser información numérica. Suponga que se
conmina al usuario con el comando
x=input('Ingrese su nombre en apóstrofes')
e ingrese
' Holly'
cuando se le indique. Puesto que no se usó punto y coma al final del comando input, MATLAB
responderá
x
Holly
Note en la ventana del área de trabajo que x se menciona como un
abe x
'Holly'
Tamaño
Bytes
1 x S
6
carácter de
1 X 5:
char
Si ingresa una cadena (en MATLAB, las cadenas son arregios carácter), debe encerrar
los caracteres en apóstrofes. Sin embargo, una forma alternativa del comando input alerta a
la función a esperar entrada carácter sin los apóstrofes, al especificar entrada cadena en el
segundo campo:
x=input(' Ingrese su nombre' , ' s')
Ahora sólo necesita ingresar los caracteres, como
Ralph
y el programa responde con
X =
Ralph
Sección
http://jurgensoft.co.cc
7.1
Entrada definida por el usuario
217
d e práctica 7.1
Ejercici o
1. Cree un archivo-m para calcular el área A de un triángulo:
A
=
� base altura
Conmine al usuario a ingresar los valores para la base y la altura.
2. Cree un archivo-m para encontrar el volumen V de un cilindro circular recto:
V= 7Trh
Conmine al usuario a ingresar los valores de r y h.
3. Cree un vector desde
1 hasta n, y permita al usuario ingresar el valor de n.
a, termine en b y tenga un espaciamiento de c.
Permita al usuario ingresar todos estos parámetros.
4. Cree un vector que comience en
-j"MA!-D-
Objetos en caída libre
Analice el comportamiento de un objeto en caída libre. (Véase la figura 7. 1.) La ecuación
relevante es
d=
donde d
1. gt2
2
distancia que recorre el objeto,
aceleración debida a la gravedad, y
tiempo en que el objeto recorre la distancia d.
g
Se debe permitir al usuario especificar el valor de g, la aceleración debida a la gravedad, y un
vector de valores de tiempo.
1. Establezca el problema.
Encontrar la distancia que recorre un objeto en caída libre y graficar los resultados.
2. Describir las entradas y salidas.
Entrada
Salida
Valor de g, la aceleración debida a la gravedad, proporcionada por el usuario
Tiempo, proporcionado por el usuario
Distancias
Gráfica de distancia contra tiempo
3. Desarrolle un ejemplo a mano.
d=
d=
� gt2, de modo que, en la luna, a 100 segundos,
� X l.6 mls2 X 1002 52
d= 8000 m
4 . Desarrolle una solución MATLAB.
%Example 7.1
%Free fall
Figura 7.1
Torre inclinada de Pisa.
(Cortesía de Tim Galligan.)
21 8
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
clear, clc
%Solicite entrada del usuario
9 = input('¿Cuál es el valor de aceleración debida
a gravedad?')
start=input('¿Qué tiempo de inicio le gustaría? ')
finish = input('¿Qué tiempo final le gustaría? ')
incr = input('¿Qué incrementos de tiempo le gustaría
calcular? ')
t=start:incr:finish;
%Calcula la distancia
d=1/2*g*t.A2;
%Grafica los resultados
loglog(t,d)
title('Distancia recorrida en caída libre')
x�abel('tiempo, s') ,ylabel('distancia, m')
%Encuentra la distancia máxima recorrida
final_distance = max(d)
La interacción en la ventana de comandos es la siguiente:
¿Cuál es el valor de aceleración debida a gravedad? 1.6
9 =
1.6000
¿Qué tiempo de inicio le gustaría? O
start =
O
¿Qué tiempo final le gustaría? 100
finish =
100
¿Qué incrementos de tiempo le gustaría calcular? 10
incr =
10
final_distance
8000
En la figura 7.2 se grafican los resultados del ejemplo 7.1.
Distancia recorrida en caída libre
•
Figura 7.2
Distancia recorrida cuando
la aceleración es 1.6 m/52.
----�--�--����
101 L101
Tiempo, s
http://jurgensoft.co.cc
Sección 7.2
Opciones de salida
219
solución a maIlQ. Dado �ue el 1:I..-;• .pueOO
lIil.1lsatí�',snlasolieror.fa J.n3IIo. MA�.dfce
m.lacmH �mTe8poode a la distancia�c�
ingresó 100 segund.oo 00100 el tiempoaiíal.
7.2
OPCIONES DE SALIDA
Existen muchas fOImas de desplegar los contenidos de una matriz. La más simple es ingresar
el nombre de la matriz, sin punto y coma. El nombre de la matriz se repetirá y los valores de
la matriz se desplegarán comenzando en la línea siguiente. Por ejemplo, defina primero una
matriz x:
x
=
1: 5 ;
Puesto que hay punto y coma al final del enunciado d e asignación, los valores e n x no
se repiten en la ventana de comandos. Sin embargo, si quiere desplegar x más tarde en su pro­
grama, simplemente escriba en el nombre de variable
x
lo que regresa
x
=
1
2
3
4
5
MATLAB ofrece otros dos enfoques para desplegar resultados: la función disp y la
función fprintf.
7.2.1
Fundón despliegue (display)
La función despliegue (display, disp) se puede usar para desplegar los contenidos de una ma­
triz sin imprimir el nombre de matriz. Por lo tanto,
disp(x)
regresa
1
2
3
4
5
El comando display también se puede usar para desplegar una cadena (texto encerrado
en marcas de comilla simple o apóstrofe). Por ejemplo,
dispC'Los valores en la matriz x son:');
regresa
Los valores en la matriz x son:
Cuando ingresa una cadena como entrada en la función disp, cn realidad ingresa un
arreglo de información carácter. Intente ingresar lo siguiente en la línea de comando:
'Los valores en la matriz x son:'
Idea clave: la función
disp puede desplegar
arreglos carácter o arreglos
numéricos.
220
Capítulo 7
http://jurgensoft.co.cc
Entrado y solido controlados por el usuario
MATLAB responde
ans
'los valores en la matriz x son:'
=
arreglo carácter:
almacena ínfonnación
carácter
La ventana del área de trabajo cita ans como un arreglo carácter 1 X 32.
��e
abe ans
TaJDañó
Bytes
Clase
1 x 32
90
ehararray
Los arreglos carácter almacenan infonnación carácter en arreglos similar a los arreglos
numéricos. Los caracteres pueden ser letras, números, puntuación e incluso algunos caracte­
res no desplegables. Cada carácter, incluidos espacios, es un elemento en el arreglo carácter.
Cuando se ejecutan las dos funciones de despliegue
disp('los valores en la matriz x son:');
disp(x)
Idea clave: los
caracteres pueden
ser letras, números o
símbolos.
MATLAB responde
los valores en la matriz x son:
1
2
3
4
5
Note que las dos funciones disp se despliegan en líneas separadas. Puede evitar esta
característica al crear una matriz combinada de sus dos salidas, con el uso dc la función
num2str (número a cadena). El proceso se llama concatenación y crea un solo arreglo carác­
ter. Por ende,
disp(['los valores en el arreglo x son: ' num2str(x)])
regresa
los valores en el arreglo x son: 1 2 3 4 5
La función num2str cambia un arreglo de números en un arreglo dc caracteres. En el
ejemplo anterior se usó num2str para transfonnar la matriz x a un arreglo carácter, que enton­
ces se combinó con la primera cadena (mediante corchetes []) para hacer un arreglo carácter
más grande. Puede ver la matriz resultante al escribir
A
=
['los valores en la matriz x son: ' num2str(x)]
que regresa
A
=
los valores en el arreglo x son: 1 2 3 4 5
Al verificar en la ventana del área de trabajo, se ve que A es una matriz 1 X 45 . La
ventana del área de trabajo también indica que la matriz contiene datos carácter en lugar de
infonnacíón numérica. Esto se evidencia tanto por el icono en frente de A como en la columna
class.
Nomme
abe A
TaJDaño
Bytes
Clase
1 x 4S
90
char array
http://jurgensoft.co.cc
Sección 7.2
Sugerencia
Si quiere incluir un apóstrofe en una cadena, necesita ingresar el apóstrofe dos
veces. Si no lo hace, MATLAB interpretará el apóstrofe como terminación de la
cadena. Un ejemplo del uso de dos apóstrofes es
disp('The moon"s gravity is l/6th that of the earth')
Puede usar una combinación de funciones input y disp para imitar una conversación.
Intente crear y correr el siguiente archivo-m:
disp('Hi There');
disp('I"m your MATLAS program');
name=;nput('Who are you?','s');
disp(['Hi ',name] );
answer=input('Oon"t you just love computers?', 's');
disp([answer,'?'] );
disp('Computers are very useful');
disp('You"ll use them a lot in college!!');
disp('Good luck with your studies')
pause(2)j
disp('Bye bye')
7.2.2
Salida formateada
La función fprintf (función impresión formateada) le da incluso mayor control sobre la sali­
da de la que tiene con la función disp. Además de desplegar valores tanto texto como matriz,
puede especificar el formato a usar al desplegar los valores, y puede especificar cuándo saltar
a una nueva línea. Si usted es programador C, estará familiarizado con la sintaxis de esta fun­
ción. Con pocas excepciones, la función MATLAB fprintf usa las mismas especificaciones
de formateo que la función fprintf C. Esto difícilmente es sorprendente, pues MATLAB se
escribió en C. (MATLAB originalmente se escribió en FORTRAN y más tarde se rescribió
en C.)
La forma general del comando fprintf contiene dos argumentos, uno cadena y otro una
lista de matrices:
fprintf(format-string, var,o .. )
Considere el siguiente ejemplo:
cows = 5 ;
fprintf(" Hay %f vacas e n el pastizal', vacas)
La cadena, que es el primer argumento dentro de la función fprintf, contiene un mar­
cador de posición (placeholder) (%) donde se insertará el valor de la variable (en este caso,
vacas). El marcador de posición también contiene información de formateo. En este ejemplo,
%f le pide a MATLAB desplegar el valor de vacas en un formato de punto fijo por defecto. El
formato por defecto despliega seis lugares después del punto decimal:
Hay 5 .000000 vacas en el pastizal
Además del formato de punto fijo por defecto, MATLAB le permite especificar un for­
mato exponencial, %e, o le permite a MATLAB elegir el que sea
Opciones de salida 221
222
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
Tabla 7.1 Formato de tipo de campo
TipO de campo
Resultado
%f
notación punto fijo o decimal
%e
notación exponencial
%g
la que seo más corta, %f o % e
%c
información carácter
%s
cadena de caracteres
En la característica help se describen tipos de campos adicionales.
más corto, punto fijo o exponencial (%g). También le permite desplegar información carácter
(%c) o una cadena de caracteres (%s). La tabla
Idea clave: la función
7. 1
ilustra varios formatos.
MATLAB no comienza automáticamente una nueva línea después de ejecutar una fun­
fprintf le permite controlar
ción fprintf. Si usted intentó el ejemplo de comando fprintf anterior, probablemente notó que
cómo se despliegan los
el prompt del comando está en la misma línea que la salida:
números.
Hay 5.000000 vacas en el pastizal
»
Si ejecuta otro comando, los resultados aparecerán en la misma línea en lugar de mo­
verlos abajo. Por tanto, si se emiten los nuevos comandos
cow = 6;
fprintf(" Hay %f vacas en el pastizal', vacas) ;
desde un archivo-m, MATLAB continúa el U""�Jll"'el'v de ventana de comandos en la misma línea:
Hay 5.000000 vacas en el pastizal Hay 6.000000
vacas en el pastizal
Idea clave: la función
fprintf le permite desplegar
tanto caracteres como
información numérica
con un solo comando.
Para hacer que MATLAB inicie una nueva línea, necesitará usar
línea (linefeed), al final de la cadena. Por
\n,
llamado salto de
el código
cows=5¡
fprintf('Hay %f vacas en el pastizal \n', vacas)
cows = 6 ;
fprintf('Hay %f vacas en el pastizal \n' , vacas)
•
regresa la siguiente salida:
Hay 5.000000 vacas en el pastizal
Hay 6.000000 vacas en el pastizal
Suger e ncia
La diagonal inversa (\) y la diagonal normal (f) son caracteres diferentes. Es un error
común confundirlas, ¡y luego el comando linefeed no funciona! En vez de ello, la
salida en la ventana de comandos será
Hay 5.000000 vacas en el pastizal In
En la tabla 7.2 se mencionan otros comandos de formato especiales. El tabulador, tab
(\t) es especialmente útil para crear tablas en las que todas las líneas ajusten limpiamente.
http://jurgensoft.co.cc
Sección 7.2
Tabla 7.2 Comandos de formato especial
\n
salto de línea {linefeedl
\r
regreso de carro (similar a linefeed)
\t
tabulador
\b
retroceder un espacio (backspace)
Puede controlar aún más cómo se despliegan las variables al usar los optativos width
field y precision field con el comando formato El width field controla el número mínimo de
caracteres a imprimir. Debe ser un entero decimal positivo. El precision field está precedido
por
un
punto (.) y especifica el número de lugares decimales después del punto decimal para
tipos exponencial y punto fijo. Por ejemplo, %8.2f especifica que el ancho total mínimo dis­
ponible para desplegar su resultado es ocho dígitos, dos de los cuales están después del punto
decimal. Por tanto, el código
voltage
3.5;
fprintfe'El voltaje es %8.2f milivolts \n',voltaje);
=
regresa
El voltaje es
3.50 milivolts
Note el espacio vacío antes del número
3.50.
Esto ocurre porque se reservaron seis es­
pacios (oeho en total, dos después del decimal) para la porción del número a la izquierda del
punto decimal.
Muchas veces, cuando usa la función fprintf, su variable será una matriz, por ejemplo,
x
=
1:5;
MATLAB repetirá la cadena el comando fprintf hasta que use todos los valores en la
matriz. Por tanto,
fprintfe'%8.2f \n' , x);
regresa
1.00
2.00
3.00
4.00
5.00
Si la variable es una matriz bidimensional, MATLAB usa los valores una columna a
la vez, comenzando por la primera columna, luego la segunda columna. etcétera. He aquí un
ejemplo más complicado:
feet
1:3;
feet.*12;
inches
=
=
Combine estas dos matrices:
table
=
[feet;inches]
Opciones de salida
223
224
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
Entonces MATLAB regresa
table
==
1 2 3
12 24 3 6
Ahora se puede usar la función fprintf para crear una tabla que sea más fácil de inter­
pretar. Por ejemplo,
fprintf('%4.0f %7.2f \n' , table)
envía la siguiente salida a la ventana de comandos:
1
2
3
12.00
24.00
3 6.00
La función fprintf puede aceptar un número variable de matrices después de la cade­
na. Usa todos los valores en cada una de dichas matrices, en orden, antes de moverse hacia
la siguiente matriz. Como ejemplo, suponga que se quiere usar las matrices feet e inches sin
combinarlas en la matriz tabla. Entonces se podría escribir
fprintf('%4.0f %7.2f \n', feet, inches)
1
2.00
12.00
3
24 3 6.00
La función opera a través de los valores de feet primero y luego usa los valores en in­
ches. Es improbable que esto sea lo que usted realmente quería que hiciera la función (no lo
era en este ejemplo), de modo que los valores de salida casi siempre se agrupan en una sola
matriz para usar en fprintf.
El comando fprintf le da considerablemente más control sobre la fomla de su salida
que los comandos de formato simple de MATLAB. Sin embargo, requiere cierto cuidado y
prudencia usarlo.
Sugerencia
Uno de los errores más comunes cometido por los nuevos programadores es
olvidar incluir la f en la secuencia del marcador de posición. La función fprintf no
funciona, pero tampoco se envía mensaje de error.
Sugerencia
Si quiere incluir un signo de porcentaje en un enunciado fprintf, necesita ingresar
% dos veces. Si no lo hace, MATLAB interpretará % como un marcador de posición
para datos. Por ejemplo,
fprintf('La tasa de interés es %5.2f %% \n'. 5 )
resulta en
La tasa de interés es 5.00 %
http://jurgensoft.co.cc
Sección 7.2
Vuelva a hacer el ejemplo 7.1, pero esta vez cree una tabla de resultados en lugar de una gráfi­
ca, y use los comandos disp y fprintf para controlar la apariencia de la salida.
l. Establezca el problema.
Encontrar la distancia recorrida por un objeto en caída libre.
2. Describa las entradas y salidas.
Entrada
Valor de g, la aceleración debida a la gravedad, proporcionada por el usuario
Tiempo, t
Salida
Distancias calculadas para cada planeta y la Luna
3. Desarrolle un ejemplo a mano.
=
d
=
d
=
!
!X
gt2, de modo que, en la Luna, a 100 segundos,
1.6 rnls2
225
·'''MOI·R-
Caída libre: salida formateada
d
Opciones de salida
X 1002 S2
8000 m
4. Desarrolle una solución MATLAB.
%Ejemplo 7.2
%Caída libre
clear, clc
%Solicite entrada del usuario
g = input('¿Cuál es el valor de aceleración debida
a gravedad?')
start=input('¿Qué tiempo de inicio le gustaría?')
finish = input('¿Qué tiempo final le gustaría?')
incr = inputC'¿Qué incrementos de tiempo le gustaría
calcular?')
t=start:incr:finish;
%Calcula la distancia
d=1/2*g*t.A2;
%Crea una matriz de los datos de salida
table=[t;d];
%Envía la salida a la ventana de comandos
fprintf('Para una aceleración debida a la gravedad de %5.1f
segundos \n se calcularon los siguientes datos \n', g)
disp('Distancia recorrida en caída libre')
disp('tiempo, s distancia, m')
fprintf('%8.0f %10.2f\n',table)
Este archivo-m produce la siguiente interacción en la ventana de comandos:
¿Cuál es el valor de aceleración debida a gravedad?1.6
g =
1.6000
226
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
¿Qué tiempo de inicio le gustaria?O
start
O
=
¿Qué tiempo final le gustaría?100
finish
100
=
¿Qué incrementos de tiempo le gustaría calcular?10
incr
10
=
Para una aceleración debida a la gravedad de 1.6 segundos
se calcularon los siguientes datos
Distance Traveled in Free Fall
tiempo, s
distancia, m
O
10
20
30
40
50
60
70
80
90
100
0.00
80.00
320.00
720.00
1280.00
2000.00
2880.00
3920.00
5120.00
6480.00
8000.00
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. Dado que la salida es una tabla,
es fácil ver que la distancia recorrida a 100 segundos es 8000 m. Intente usar otros datos
como entrada y compare sus resultados con la gráfica producida en el ejemplo 7. 1.
Ej ercicio
d e p ráct ica 7.2
En un archivo-m
l. Use el comando
disp para crear un título para una tabla que convierte
pulgadas a pies.
2. Use el comando disp para crear encabezados de columna para su tabla.
3. Cree un vector inehes desde O hasta 120 con un incremento de 10.
Calcule los correspondientes valores de feet.
Agrupe el vector ineh y el vector feet en una matriz tableo
Use el comando fprintf para enviar su tabla a la ventana de comandos.
7.3
ENTRADA GRÁFICA
MATLAB ofrece una técnica para ingresar gráficamente pares ordenados de valores x y y. El
comando ginput permite al usuario seleccionar puntos desde una ventana de figura y convier­
te los puntos en las coordenadas apropiadas x y y. En el enunciado
[x,y]
=
ginput(n)
Sección 7.4 Uso del modo celda en archivos-m de MATlAS
http://jurgensoft.co.cc
227
Figura 7.3
La función ginput permite
al usuario escoger puntos
de una gráfica.
MATLAB pide al usuario seleccionar n puntos de la ventana de figura. Si el valor de n no se
incluye, como en
[x,y]
=
ginput
entonces MATLAB acepta puntos hasta que se ingresa la tecla retum.
Esta técnica es útil para escoger puntos de una gráfica. Considere la gráfica en la figura
7.3. La figura se creó al definir x desde 5 hasta 30 y calcular y:
x = 5:30;
y
x.AZ - 40.*x + 400;
plot(x, y)
axis([5 , 30,-50.ZS0])
=
Los valores de eje se definieron de modo que sería más fácil trazarlos.
Una vez que se ejecuta la función ginput, como en
[a,b]
=
ginput
MATLAB agrega un retículo flotante a la gráfica, como se muestra en la figura 7.3. Luego
que este retículo se posiciona a satisfacción del usuario, seleccionar retum (enter) envía los
valores de las coordenadas x y y al programa:
a
=
24.4412
b
=
19.7368
7.4
USO DEL MODO CELDA EN ARCHIVOS-M DE MAlLAB
MATLAB 7 tiene una utilidad nueva que permite al usuario dividir los archivos-m en seccio­
nes, o celdas (celi), que se pueden ejecutar una a la vez. Esta característica es particularmente
228
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controlados por el usuario
útil conforme usted desarrolla programas MATLAB. El modo cell también permite al usuario
Idea clave: el modo
crear reportes en varios formatos que muestran 105 resultados del programa.
Para activar el modo cell, seleccione
cell (celda) es nuevo a
MATLAB7.
Cell -» Enable Cell Mode
en la barra de menú de la ventana de edición, eomo se muestra en la figura7.4. Una vez habi­
litado el modo cell, aparece la barra de herramientas ccll, como se muestra en la figura7.5.
Para dividir su programa archivo-m en celdas, puede crear divisores de celda con un
doble signo de porcentaje seguido por un espacio. Si quiere nombrar la celda, sólo agregue
un nombre en la misma línea del divisor de celda:
"" Cell Name
Idea clave: el modo
Una vez que los divisores de celda están en su lugar, si mueve el cursor a alguna parte
cell (celda) le permite
adentro de la celda, toda la celda se torna amarillo pálido. Por ejemplo, en la
ejecutar porciones del
primeras tres líneas del programa archivo-m constituyen la primera celda. Ahora se pueden
7.5, las
código incrementalmente.
usar los iconos de evaluación en la barra de herramientas de celda para evaluar una sola sec­
ción, evaluar la sección actual y moverse a la siguiente sección, o evaluar toda la fila. También
en la barra de herramientas de celda hay un icono que menciona todos los títulos de celda en el
archivo-m, como se muestra en la figura 7.6. La tabla7.3 muestra los iconos disponibles en
la barra de herramientas de celda, junto con sus funciones.
Figura 7.4
Puede acceder al modo
celda desde la barra de
menú en la ventana
de edición.
Barra de
herramientas
de celda
Figura 7.5
La barra de herramientas
de celda permite al usuario
ejecutar una celda o
sección a la vez.
http://jurgensoft.co.cc
Sección
Uso del modo celda en archivos-m de MATLAB
7.4
229
Homework
clear¡clc
Problem 2.1
%%
+ 3/4
5*6*4/2
5/2*6*4
5A2*3
S" (2*3)
1 + 3 + S / 5 + 3 + 1
(1 + 3 + 5)/(5 + 3 + 1)
1
Problem 2.2
%%
%
The leqitimate
%
f:r.:ed
Figura 7.6
El icono Show Cell Titles
(mostrar títulos de celda)
menciona todas las celdas
en el archivo-m.
Tabla 7.3 Barra de herramientas de celda
evalúa celda actual
evalúa celda y avanza
evalúa toda la fila
muestra títulos de celda
11
guarda y publica a HTMl
La figura 7.6 muestra las primeras 14 líneas de un archivo-m escrito para resolver algu­
nos problemas de tarea. Al dividir el programa en celdas fue posible trabajar en cada problema
por separado. Asegúrese de guardar cualquier archivo-m que desarrolle de esta forma al selec­
cionar Save o Save As del menú archivo:
File --'> Save
o
File --'> Save As
La razón para usar estos comandos es que el programa no se guarda automáticamente
cada vez que lo corre.
Dividir en celdas un archivo-m de tarea ofrece una gran ventaja a quien deba calificar el
ensayo. Al usar la función evaluar celda y avanzar, el calificador pucde pasar un problema a
la vez a través del programa.
La barra de herramientas de celda también permite al usuario publicar un programa
archivo-m a un archivo HTML. MATLAB corre el programa y crea un reporte que muestra
el código en cada celda, así como los resultados del cálculo que se enviaron a la ventana de
celda: sección de
código MATLAB
ubicado entre divisores
de celda (%%)
230
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
comandos. Cualquier figura creada también se incluye en el reporte. La primera porción del
Idea clave: el modo
celda le permite crear
reportes en HTML, Word
reporte creado a partir del archivo-m dc la figura 7.6 se muestra en la figura 7.7. Si prefiere
un reporte en un formato diferente, como Word o PowerPoint, puede usar la opción de barra
de menú
y PowerPoint.
File � Publish To
para enviar los resultados en su elección de muchos formatos diferentes.
Finalmente, la barra de herramientas de celda incluye un conjunto de herramientas de
manipulación de valor, como se muestra en la figura 7.8.
Contents
• Holly Moore
•
Problem 2.1
• Problem 2.2
• Problem 2.3
• Problem 2.4
• Problem 2.5
• Problem 2.6
•
Problem 2.7
• ...Problem
2.8
-----------------
• Problem 2.9
• Problem 2.10
•
Problem 2.11
• --_
Problem............
2.12
-
• Problem
2.13
.....-----------------
HollyMoore
clear,clc
1 + 3/4
5* 6* 4/2
512*6*4
5"2*3
5"
1 + 3 + 5 / 5 + 3 + 1
(1 + 3 + 5)/(5
Figura 7.7
Reporte HTML creado a
partir de un archivo-m
MATLAB.
+
3 + 1)
Sección 7.4 Uso del modo celda en archivos-m de MATLAB
http://jurgensoft.co.cc
.,
T2"15
231
De!!ug �esktop �indow tielp
decremento
e incremento
¡clc
��V7����blem 2.1
1 + 3/4
5*6*4/21
5/2*6*4
Valor de división
y multiplicación
Figura
Ln
E
Col
8
7.8
Las herramientas de
manipulación de valor
permiten al usuario
experimentar con diferentes
valores en los cálculos.
Cualquier número que esté más cerca del cursor (en la figura 7.8 es el número 2) se
puede ajustar por el factor que se muestra en la barra de herramientas al seleccionar el icono
apropiado ( - , +, -:- o X). Cuando esta característica se usa en combinación con la herramienta
evaluar celda, puede repetir un conjunto de cálculos muchas veces mientras ajusta fácilmente
una variable de interés.
Aiuste interactivo de parámetros
Sobre la base de un cálculo de equilibrio de energía, usted sabe que el cambio en entalpía
de una muestra de 1 kmol (29 kg) de aire que va del estado 1 al estado 2 es 8900 kJ. Usted
quisiera saber la temperatura final, pero la ecuación que relaciona el cambio en entalpía a
temperatura, a saber,
donde
eP
= a
+ bT + cT2 + dT3
es muy complicada de resolver para la temperatura final. Sin embargo, al usar técnicas apren­
dida en cálculo, se encuentra que
Si se conoce la temperatura inicial (TI) y los valores de a, b, e y d, se pueden adivinar
valores para la temperatura final (T) hasta obtener el valor correcto de t:.h. La habilidad
interactiva para modificar valores de variable en el modo celda hace sencilla la resolución
de este problema.
l. Establezca el problema.
Encontrar la temperatura final del aire cuando usted conoce la temperatura inicial y el
cambio en energía interna.
+'ij�q'.•+
232
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
2. Describa las entradas y salidas.
Entrada
Salida
Usados en la ecuación para Cp' los siguientes valores de
un valor de capacidad calorífica en kJlkmol K:
a =
28.90
b
0.1967 X 10-2
=
e =
0.4802 X 10-5
d
=
-1.966 X 10-9
flh
=
TI
=
a,
b,
e
y d le darán
8900 kJ
300 K
Para cada valor supuesto de la temperatura final, en la pantalla se debe im­
primir una estimación de flh
3. Desarrolle un ejemplo a mano.
Si supone una temperatura final de 400 K, entonces
flh
=
28.9(400
_
300)
+
�
.o.196 . 10-2 (4002
_
3002)
+
�
0.480 .10-5
que produce
M= 3009.47
•
4. Desarrolle una solución MATLAB.
%% Ejemplo 7.3
% Ajuste interactivo de parámetros
clear, clc
28.90;
a
0.1967e-2;
b
0.4802e-5;
c
d
-1.966e-9;
300
TI
%% suponga T2 y ajuste
Tl
400
format bank
delta_h
a*(T2-Tl) + b*(T2.A2 - Tl.AZ)j2
TI/3)j3 + d*(Tl.A4-Tl.A4)j4
=
=
=
=
=
=
=
+
c*(T2.A3-
Uso del modo celda en archivos-m de MATlAB
http://jurgensoft.co.cc
Sección 7.4
F re
rg¡.¡¡f.\;
.
233
.�
'
Sl'orIcuts !EHowroAdd 0 vma:'s N.ew
CunentOtrectory·qMy�s\
M..,.
;JI
X
Chapt
err 77 Exampl
e M-files 2
Chapt
e
Fi
g
ures
Chapt
err 77 Homework
Solustes'
io'l 43
Chapt
e
Pract
i
c
e
Exerci
tr.docer 7.doc
6
[)[)Al
Chapt
IIiExampl
e
_7_3.
m
a ter d
�,:"[);�� $�iPi�7�.iO�C���;;_:_'�;�'!11 109
11
.;
CJ
CJ
CJ
CJ
r
r,,_ _ _
.,.\-...7��
-
.�.
"""' _',_
_
,�
COIl'lITIanOHistor¡
'n .
""----'-'=!,a_
Fr;:,.:..;,;;;:;.;,..,..,
l'
�c
, -to-F(O)
0
��1::{��� )
x
:El
';'
% Interactively Adjusting Parameters
28.90;
0.1967e-2;
0.4802e-5;
-1.966e-9;
1
TI 300
T2
T2 4001
12
(T2-T1)
olear/cle
a
=
b
=
e
=
d
=
j:
=
%guess
and adjust
=
format bank
;;
delta_h
13
nil
=
a*
+ b*
(T2. '2 - T1. '2) 12
+ c*
(T2.'3-T1. '3
,.,..-
I
T� �r,,;, ;:..;;,;m;v;.;,; 'Irrm +.m 'xr�,"xJ�"'-""=" xJ�-"-'-;:,
- ",...
-..
¡P(5)
�_
�P(5)
. r��....-:. 300.0�
':":"'
�
r-1oad P
rClear,ole
-
__
o
�
-··, r
.1",,�
' �1
' x
� Pa_to_atm
¡-(214-520)
!
load P
Figura 7.9_
load
La suposición original le da
una idea de cuán alejado
está de la respuesta final.
Corra el programa una vez y MATLAB regresa
TI
T2
delta h
300.00
=
=
=
400.00
3009. 47
Ahora coloque el cursor cerca del enunciado T2
=
400, como se muestra en la figura
7.9. (En este ejemplo, la ventana de edición se acopló con el escritorio MATLAB.) Al
seleccionar el icono Increment Value, con el valor establecido a 100, se pueden intentar
rápidamente muchas temperaturas diferentes. (Véase la figura 7.10.) Una vez que cie­
rra, puede cambiar el incremento y el cero en la respuesta.
Un valor T2 de 592 K dio un valor D.h calculado de 8927, que está bastante cerca
de la meta. Se podría acercar más si creyera que la precisión añadida estaba justificada.
5. Ponga a prueba la solución.
Sustituya el valor calculado de T2 en la ecuación original y verifique los resultados con
una calculadora:
D.h
=
28.9(592 - 300) +
�
5
+ 0.480 .1OD.h
=
8927.4 6
(5923
�
0 196
.
_
'
10-2
3003) +
+
(5922 - 3002)
:
-1 96
.
10-9
.
(5924
_
3004)
234
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
de valor de incremento
%��e$$ '1'2
T2
=
m
and adjust
format I:>anl<:
delta_b
=
a*(T2-'I'l) + 1:>'"('1'2."2
-
Tl.h2J{2
+ <"«'1'2.'3-'1:1.
6067.49
7.5
•
Idea clave: MATLAB
puede importar datos
de archivos que usan
diversos formatos.
LECT URA Y ESCRIT URA DE DATOS DESD E ARCHIVOS
Los datos se almacenan en muchos formatos diferentes, dependiendo de los dispositivos y
programas que crean los datos y de la aplicación. Por ejemplo, el sonido se puede almacenar
en un archivo .wav, y una imagen se puede almacenar en un archivo .j pg. Muchas aplica­
ciones almacenan datos en hojas de cálculo Excel (archivos .xls). El más genérico de estos
archivos es el archivo ASCII, que usualmente se almacena como un archivo .dat o .txt. Quizá
usted quiera importar estos datos en MATLAB para analizar en un programa MATLAB, o tal
vez quiera guardar sus datos en uno de estos formatos para hacer el archivo más fácil de ex­
portar a otra aplicación.
7.5.1
Importación de datos
Importa Wi:z:ard (asistente de importación)
Si usted selecciona un archivo de datos del directorio actual y hace doble clic en el nombre
del archivo, se lanza ellmport Wizard (asistente de importación). Ellmport Wizard determina
qué tipo de datos hay en el archivo y
formas de representar los datos en MATLAB. La
tabla 7.4 es una lista de algunos de los tipos de datos reconocidos por MATLAB. MATLAB no
soporta todos los posibles formatos de datos. Puede encontrar una lista completa al escribir
doc fileformats
en la ventana de comandos.
http://jurgensoft.co.cc
Sección 7.5
lectura y escritura de datos desde archivos
Tabla 7.4 Tipos de archivo de datos soportados por MATLAB
Texto
.mat
.dal
áreo de trabajo MAlLAB
datos ASCII
datos ASCII
Otros formatos comunes
de datos científicos
.cdf
Jits
formato de datos común
datos en sistema flexible de transporte
de imagen
.hdF
formato de datos jerórquicos
.xls
.wkl
.tiff
hoja de cálculo Excel
lotus 123
formato de archivo de imagen etiquetado
Datos de imagen
.bmp
.jpeg o jpg
.gif
mapa de bits
grupo experto fotográFico unido
formato de intercambio grófico
Datos de audio
.au
.wav
audio
archivo wave Microsoft
Película
.avi
archivo intercalado audio/video
.Ixt
Datos de hoja de cólculo
El Import Wizard se puede usar para archivos ASCII simples y para archivos de hoja
de cálculo Excel. También puede lanzar el Import Wizard desde la línea de comando, con la
función uiimport:
uiimport(' nombre de archivo.extensión ')
Por ejemplo, para importar el archivo de sonido
decision.wav, escriba
uiimport(' decision .wav ')
Entonces se abre el Importa Wizard, como se muestra en la figura
7. 1 1.
Cualquier técnica para lanzar el Importa Wizard requiere una interacción con el usuario
Ca través del Wizard). Si quiere cargar un archivo de datos desde un programa
MATLAB,
necesitará un enfoque diferente.
Comandos de importación
las interacciones
Puede evitar
del Wizard con una de las funciones que están especialmente
diseñadas para leer cada uno de los formatos de archivo soportados. Por ejemplo, para leer un
archivo .wav, use la función
wavread:
[data,fsJ=wavread('decision .wav')
Claramente, necesita entender qué tipo de datos esperar, de modo que pueda nombrar
apropiadamente las variables creadas. Puede encontrar una lista de funciones de importación
al escribir
doc fileformats
235
236
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
Variables in C:'lDocuments and Settings\HollyVvly DocumentslMatlab 7 far F ...,,"í....,.. ,..·"'·\<
var ial:tle se lect.ed for
previeuT.
Figura 7.11
Ellm port Wizard se lanza
cuando se ejecuta el
comando uiimport.
-jUMA!·U-
•
200 J: una odisea espacial: archiv o s de so nido
Uno de los personajes más memorables de la película 2001: Odisea del espacio fue la compu­
tadora Hal. Los sonidos del diálogo de Hal en la película han sido populares durante años entre
los programadores de computadoras y los ingenieros que usan computadoras. Usted puede en­
contrar archivos .wav de algunos de los diálogos de Hal en http://www.palantir.net/2001ly en
otros websites de cultura popular. Inserte los comentarios de Hal en un programa MATLAB .
(Necesitará la funCión sound; consulte el tutoríal help para detalles acerca de su uso.)
1. Establezca el problema.
Cargar archivos de sonido en un programa MATLAB y reprodúzcalos en momentos
apropiados.
2. Describa las entradas y salidas.
Entrada
Archivos de sonidos descargados de Internet. Para este ejemplo, se supon­
drá que descargó los siguientes tres archivos:
dave.wav
errOf.wav
sure.wav
Salida
Reproducir los archivos de sonido dentro de un programa MATLAB
3. DesarrolJe un ejemplo a mano.
Aunque trabajar un ejemplo a mano no es apropiado para este problema, puede escu­
char los archivos de sonido de Internet antes de insertarlos en el programa.
http://jurgensoft.co.cc
Resumen
237
4. Desarrolle una solución MATLAB.
Descargue los archivos de sonido y guárde10s en el directorio actual antes de correr el
siguiente programa:
%% Ejemplo 7.4
% Archivos de sonido
%% Primer elip
[dave,fs_daveJ=wavread('dave.wav');
disp('Presione enter una vez que el clip de sonido deje de tocar')
sound(dave,fs_dave)
pause
%% Segundo clip
[error, fs_errorJ=wavread('error.wav');
disp('Presione enter una vez que el clip de sonido deje de tocar')
sound(error, fs_error)
pause
%% Tercer clip
[sure,fs_sureJ=wavread('sure.wav');
disp('Presione enter una vez que el clip de sonido deje de tocar')
sound(sure, fs_sure)
pause
disp('Ése fue el último clip')
5. Ponga prueba la solución.
Existen muchos archivos de audio disponibles para descargar de Internet. Muchos son
tan simples como éstos, pero algunos son piezas musicales completas. Navegue en In­
ternet e inserte un "byte sonoro" en otro programa MATLAB, como un mensaje de
error para sus usuarios. Algunos de los favoritos del autor son Star Trek (intente http://
services.tos.net/sounds/sound.html#tos) y Los Simpsons.
7.5.2 Exportación de datos
La forma más sencilla de encontrar la función adecuada para escribir un archivo es usar el tuto­
rial help para encontrar la función correcta para leerla y luego seguir las ligas hacia la función
write. Por ejemplo, para leer un archivo de hoja de cálculo Excel (.xls), se usaría xlsread:
xlsread('nombre de archivo.xls')
Al final de la página .tutorial se hace referencia a la función correcta para escribir un
archivo Excel, a saber,
xlswrite('nombre de archivo.xls', M)
donde M es el arreglo que quiere almacenar en la hoja de cálculo Excel.
--------1I11ijij" ft'i:�
MATLAB proporciona funciones que permiten al usuario interactuar con un programa archivo-m y que permiten al programador controlar la salida a la ventana de comand_os.
La función input pausa el programa y envía una incitación determinada por el progra­
mador a la ventana de comandos. Una vez que el usuario ingresó un valor o valores y oprime
la tecla return, continúa la ejecución del programa.
238
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
El co mando d ispl ay
(disp) permite al pro gramado r d espl egar lo s co ntenido s de una
disp es ad ecuado para
muchas tareas d e d espl iegue, el co mando fprintf da al pro gramado r co nsid erabl emente más
cad ena o una matriz en l a ventana de co mandos. A unq ue el co mando
co ntrol sob re la fonn a en q ue los resul tado s se d espl iegan en l a ventana de co mandos. Ello
perm ite al pro gramado r co mb inar tex to y resul tado s cal culado s en la misma l ínea y especifi ­
car el nú mero de fon nato usado.
Para apl icacio nes e n l as que se req uiere entrad a gráfi ca, el co mando
ginput permi te al
usua rio pro porcionar entrad a a un pro grama al sele ccionar punto s d e una ventana d e gráfi co s.
El modo celd a permite al pro gramado r agrupar código d e archivo -m en secciones y co ­
rrer cad a sección de manera individ ual . L a herr amienta publish
to HTML crea un repo rte que
co ntiene tanto el código d el archivo -m y los resul tados, así co mo cual esqui era fi guras genera­
d as cuando se ejecutó el pro grama. Los i co no s I nc remento y D ecremento en l a b arra de herra­
mientas d e celd a permiten al usuario camb iar automáticamente el valo r de un parámetro cada
vez q ue el códi go se ejecuta, lo que hace sencillo prob ar el resul tado de cambiar una va riable.
MATLAB i ncl uye funcio nes q ue pe rmite n al usuario i mpo rtar y ex po rtar d ato s en al gu­
no s fonnato s de arch ivo po pul ares. Una l ista co mpleta de d icho s fonnato s está d ispo nible en
el tuto rial
R E S U M E N MAlLAB
help en la pági na File Fon nats (doc fil efonnats).
El sigui ente resumen MATLAB mencio na todos los caracteres, co mando s y funcio ne s espe­
ciale s q ue se d efi ni ero n en este capítulo:
Caracteres especiales
%
%f
%e
%g
%s
%%
\n
\r
\t
\b
comie nza y tennina una c adena
marcado r de posició n us ado en el comando fprintf
no tació n punto fij o, o deci mal
no tació n expo ne nci al
no tación o punto fijo o expo ne nci al
no tació n c adena
divisor de celd a
s al to de l íne a (l inefeed)
re greso de c ar ro (similar a li nefeed)
tab ul ado r
re trocede r un espacio (b acks pace)
Co"'dos y funciones
di sp
desplie ga una cadena o una matriz e n
fprintf
gi nput
l a ve ntana d e co mandos
co ntrola el de splie gue de ve ntana de co mandos
permi te al us uario elegi r valo res de
i nput
num2str
pause
sound
ui i mport
wavread
xl si mport
xl swrite
una gráfic a
pe rmite al us uario i ngresar valo res
c ambi a un núme ro a una cadena
paus a el pro grama
re prod uce d atos MATLAB a través
de l as boci nas
l anz a el Impo rta Wiz ard
lee archi vos wave
i mpor ta archivos de d atos Excel
expo rta d ato s como un archi vo Excel
http://jurgensoft.co.cc
ancho de campo
campo precisión
arreglo carácter
celda
cadena
modo celda
salida formateada
Problemas 239
TÉRMINOS CLAVE
Función input
7.1
Cree un archivo-m que conmine al usuario a ingresar un valor de x y luego calcule el
7.2
Cree un archivo-m que conmine al usuario a ingresar una matriz y luego use la función
valor de sen(x).
max
T
para determinar el valor ingresado más grande. Use la siguiente matriz para pro­
bar su programa:
h
[1 ,5,3,8,9,22]
7.3
v=
r
�
X área_de_la_base X altura
Conmine al usuario a ingresar el área de la base y la altura del cono (figura P7.3).
Calcule el volumen del cono.
Función disp
7.4
Uno de los primeros programas de cómputo que muchos estudiantes escriben se llama
"Hola, mundo". Lo único que hace el programa es imprimir este mensaj e en la pantalla
de la computadora. Escriba un programa "Hola, mundo" en un archivo-m con la fun­
ción disp.
7.5
Use dos enunciados input separados para conminar al usuario a ingresar su nombre y
apellidos. Use la función disp para desplegar dichos nombres en una línea. (Necesitará
combinar los nombres y algunos espacios en un arreglo.)
7.6
Conmine al usuario a ingresar su edad. Luego use la función disp para reportar la edad
de vuelta a la ventana de comandos. Si, por ejemplo, el usuario ingresa 5 cuando se le
solicita la edad, su despliegue debe leerse
Su edad es 5
Esta salida requiere combinar tanto datos carácter (una cadena) como datos numéricos
en la función disp, l o que se puede lograr al usar la función num2sír.
7.7
I
El volumen de un cono es
Conmine al u suario a ingresar un arreglo de números. Use la función Iength para de­
terminar cuántos valores ingresó y use la función disp para reportar sus resultados a la
ventana de comandos.
fprintf
7.8
Repita el problema 7.7 y use fprintf para reportar sus resultados.
7.9
Use fprint f para crear las tablas de multiplicación de 1 a 13 para el número 6. Su tabla
se debe ver como esto
1 por 6 es 6
2
por
6 es
12
3 por 6 e s 1 8
Figura P7.3
Volumen de un cono.
10
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
7.10
Antes de que las calculadoras fueran fácilmente asequibles (alrededor de
1974),
los
estudiantes usaban tablas para determinar los valores de las funciones matemáticas
como seno, coseno y log. Cree una de tales tablas para seno, con los siguientes pasos:
•
Cree un vector de valores ángulo desde O hasta 2?T en incrementos de ?Til O.
•
Calcule el seno de cada uno de los ángulos y agrupe sus resultados en una tabla que
•
Use
incluya el ángulo y el seno.
disp
para crear un título para la tabla y un segundo comando
disp
para crear
encabezados de columna.
•
Use la [unción fprintf para desplegar los números. Despliegue sólo dos valores des­
pués del punto decimal.
7.11
Las dimensiones muy pequeñas, las que están a escala atómica, con frecuencia se
miden en angstroms. El símbolo para un angstrom es
de
1 0 - 10
A y corresponde a una longitud
metros . Cree una tabla de conversión de pulgadas a angstroms del modo si­
guiente, para valores de pulgadas desde
disp
1
hasta
1 0:
•
Use
•
Use fprintf para desplegar la información numérica.
•
para crear un título y encabezados de columna.
Puesto que la longitud representada en angstroms es demasiado grande, represente su
resultado en notación científica y muestre dos valores después del punto decimal. Esto
corresponde a tres cifras significativas (una antes y dos después del punto decimal).
7.12
Use su buscador favorito de Internet y navegue la red para identificar conversiones
monetarias recientes para libras esterlinas británicas, yen japonés y el euro europeo a
dólares estadounidenses. Use las tablas de conversión para crear las siguientes tablas
(use los comandos
•
disp
y fprintf en su solución, que debe incluir un título, etiquetas
de columna y salida formateada):
(a)
Genere una tabla de conversiones de yen a dólar. Comience la columna yen en
incremente por
5
yen. Imprima 25 líneas en la tabla.
5
e
(b)
Genere una tabla de conversiones de euros a dólares. Comience la columna euro
(e)
Genere una tabla con cuatro columnas. La primera debe contener dólares, la se­
en l euro e incremente por
2 euros. Imprima 30 líneas en al tabla.
gunda debe contener el número equivalente de euros, la tercera el número equi­
valente de libras y la cuarta el número equivalente de yen. Haga que la columna
dólar varíe de
1
a
10.
Problemas que combinan los comandos input.. disp y fprintf
7.13
Este problema requiere que usted genere tablas de conversión de temperatura. Use
las siguientes ecuaciones, que describen las relaciones entre temperaturas en grados
Fahrenhei t (TF), grados Celsius
tivamente:
(Tc)' grados Kelvin (TK) y grados Rankine (TR), respec­
TR
TF
TF
TR
-
9
= 5
459.67 °R
+ 32 °F
9
=
-?/K
¡ Necesitará reordenar estas expresiones para resolver algunos de los problemas !
(a) Genere una tabla de conversiones de Fahrenheit a Kelvin para valores desde O 0p
hasta
200 cF. Permita que el usuario ingrese los incrementos en grados F entre
disp y fprintf para crear una tabla con un título, encabezados de co­
lineas. Use
lumna y espaciamiento adecuado.
http://jurgensoft.co.cc
Problema�
(b) Genere una tabla de conversiones de Celsius a Rankine. Pennite que el usuario
ingrese la temperatura inicial y los incrementos entre líneas. Imprima
en la tabla. Use
disp
25
líneas
y fprintf para crear una tabla con un título, encabezados de
columna y espaciamiento apropiado.
(e) Genere una tabla de conversiones de Celsius a Fahrenheit. Pennita que el usuario
ingrese la temperatura inicial, el incremento entre líneas y el número de líneas
disp
para la tabla. Use
y fprintf para crear una tabla con un título, encabezados de
columna y espaciamiento apropiado.
7.14
Los ingenieros usan regularmente unidades tanto inglesas como S I (Systeme Inter­
national d' Unités). Algunos campos usan principalmente uno u otro, pero muchos
combinan los dos sistemas. Por ejemplo, la tasa de entrada de energía a una planta de
potencia de vapor a partir de la quema de combustibles fósiles usualmente se mide en
Btulhora. Sin embargo, la electricidad producida por la misma planta, por lo general,
se mide en joules/s (watts). En contraste, los motores de automóvil con frecuencia se
califican en caballos de fuerza o en pie lb /s . He aquí algunos factores de conversión
que relacionan estas diferentes mediciones de potencia:
1 kW = 3412.14 Btulh
1
(a)
hp
=
550
ft lb/ s
=
737.56 ft lb/s
2544.5
B tu/h
Genere una tabla de conversiones de kW a hp. La tabla debe comenzar en O kW y
tenninar en
1 5 kW.
Use la función
input para pennitir al usuario definir el incre­
disp y f'p rintf para crear una tabla con un
mento entre entradas de la tabla. Use
título, encabezados de columna y espaciamiento apropiado.
(b) Genere una tabla de conversiones de ft Ibis a Btulh. La tabla debe comenzar en
O kW, pero pennitir al usuario definir el incremento entre entradas de tabla y el
valor final de la tabla. U se
disp y f'printf para crear una tabla con
un título, enca­
bezados de columna y espaciamiento apropiado.
(e)
Genere una tabla que incluya conversiones de kW a Btufh y ft lb/ s. Permita al
usuario definir el valor inicial de kW, el valor final de kW y el número de entradas
en la tabla. Use
disp
y
f'p rintf
para crear una tabla con un título, encabezados de
columna y espaciamiento apropiado.
ginput
7.15
En el tiempo t = O, el motor de un cohete se apaga con el cohete habiendo alcanzado una
altitud de
500 metros
y elevándose con una rapidez de
125 metros
por segundo. En este
punto, la gravedad toma el controL La altura del cohete como función del tiempo es
h(t)
+ 125t + 500
Grafique la altura del cohete desde O hasta
•
U se la función
ginput
30
para
t >O
segundos y
para estimar la altura máxima que el cohete alcanza y el tiem­
po euando el cohete golpea el suelo.
•
7.16
Use el comando disp para reportar sus resultados a la ventana de comandos.
La función ginput es útil para eseoger distancias de una gráfica. Demuestre esta carac­
terística mediante la realización de 10 siguiente:
•
Cree una gráfica de
•
un
círculo mediante la definición de un arreglo de ángulos desde
2 1T, con un espaciamiento de 1TIlOO.
Use la función ginput para elegir dos puntos en la circunferencia del CÍrculo.
O hasta
241
242
Capítulo 7
http://jurgensoft.co.cc
Entrada y salida controladas por el usuario
•
Use hold on para evitar que la figura se refresque y grafique una línea entre los dos
puntos que eligió.
•
Use los datos de los puntos para calcular la longitud de la línea entre ellos. (Sugeren­
cia: use el teorema de Pitágoras en su cálculo.)
Modo celda
7.17
Cree un archivo-m que contenga sus soluciones a los problemas de tarea de este capí­
tulo. Use divisores de celda
(%%) para dividir su programa en celdas (secciones) y ti­
tule cada sección con un número de problema. Corra su programa con la característica
7.18
evaluar celda y avanzar de la barra de herramientas de celda.
Publique su programa y resultados del problema 7.17 en HTML, con la característica
puhIish to HTML de la barra de herramientas de celda. Desafortunadamente, dado
que la tarea de este capítulo requiere interacción con el usuario, los resultados publica­
dos incluirán errores .
•
http://jurgensoft.co.cc
Funciones lógicas y
estructuras de control
INTRODUCCiÓN
Una forma de pensar los programas de cómputo (no sólo MATLAB) es considerar
cómo se organizan los enunciados que componen el programa. Por lo general, las sec­
ciones del código de los programas de cómputo se pueden categorizar en una de tres
secuencias, estructuras de selección y estructuras de repetición. (Véase
8.1.) Hasta el momento. se ha escrito código que contiene secuencias, pero
estructuras:
la figura
ninguna de las otras estructuras:
•
Las secuencias son listas de comandos que se ejecutan una después de otra.
•
Una estructura de selección permite al programador ejecutar un comando (o con­
junto de comandos) si algún criterio es verdadero. y un segundo comando o conjun­
to de comandos si el criterio es falso. Un enunciado de selección proporciona los
medios de elegir entre dichas rutas, con base en una
condición lógica.
Las condi­
ciones que se evalúan con frecuencia contienen operadores tanto relacionales como
lógicos o funciones.
•
Una estructura de repetición, o bucle, hace que un grupo de enunciados se ejecute
varias veces. El número de veces que se ejecuta un bucle depende de un contador o
de la evaluación de una condición lógiea.
8.1
OPERADORES RELACIONALES Y LÓGICOS
Las estructuras de selección y repetición que se usan en MATLAB dependen de opera­
dores relacionales y lógicos. MATLAB tiene seis operadores relacionales para compa­
rar dos matrices de igual tamaño, como se muestra en la tabla
8.1.
Las comparaciones son verdaderas o falsas, y la mayoría de los programas de
cómputo (incluido MATLAB) usa el número
1
para verdadero (true) y e l O para falso
(false). (En realidad, MATLAB toma cualquier número distinto de cero como verdade­
ro.) Si se definen dos escalares
x
=
Y
=
5;
1;
244
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Secuencia
Selección
Repetición
(bucle)
Figura 8.1
Estructuras de
programación
en MATlAB.
usadas
y usa un operador relacional como
<,
el resultado de la comparación
x<y
es verdadero o falso. En este caso, x no es menor que y, por lo que MATLAB responde
ans
=
o
lo quc indica que la comparación fue falsa. MATLAB usa esta respuesta en enunciados de
selección y en estructuras de repetición para tomar decisiones.
Desde luego, las variables en MATLAB, por lo general, representan matrices comple­
tas. Si se redefinen x y y, se puede ver cómo MATLAB maneja las comparaciones entre ma­
trices. Por ejemplo,
x = 1:5 ;
y = x -4 ;
x<y
regresa
ans
=
O
O
O
O
O
MATLAB compara elementos correspondientes y crea una matriz respuesta de ceros y
unos. En el ejemplo previo, x fue mayor que y para cada comparación de elementos, de modo que
toda la comparación fue falsa y la respuesta fue una cadena de ceros. Si, en vez de ello, se tiene
x = [ 1, 2, 3 , 4 , 5] ;
Y = [-2, O, 2, 4 , 6] ;
x<Y
entonces
ans
=
O
O
O
O
1
El resultado indica que la comparación fue falsa para los primeros cuatro elemen­
tos, pero verdadera para el último. Para que una comparación sea verdadera para toda una
matriz, debe ser verdadera para
cada elemento en la matriz. En otras palabras, todos los
resultados deben ser unos.
Idea clave: los
operadores lógicos se
usan para combinar
enunciados de
comparación.
MATLAB también le permite combinar comparaciones con los operadores lógicos and,
not y oro (Véase la tabla 8.2.)
El código
x = [ 1, 2, 3 , 4 , 5] ;
Y = [-2, O, 2, 4 , 6] ;
z := [ 8 , 8 , 8 , 8 , 8 ] ;
z>x & Z>Y
Sección
http://jurgensoft.co.cc
8.2
Diagramas de flujo y seudocódigo
245
Tabla 8.1 Operadores relacionales
<
Interpretación
Idea e/ave:los
menor que
comparan valores.
menor que o igual a
<=
mayor que
>
mayor que o igual a
>=
igual a
no igual a
Tabla 8.2 Operadores lógicos
Interpretadón
and
&
not
or
or exclusiva
xor
regresa
ans
=
1
puesto que
z
es mayor que
x>y
se lee como
1
I
1
1
1
x y y para cada elemento.
El enunciado
x>z
"x es mayor que y o x es mayor que z" y regresa
ans
1
1
1
o
o
Esto significa que la condición es verdadera para los primeros tres elementos y falsa para los
últimos dos.
Estos operadores relacionales y lógicos se usan tanto en estructuras de selección como
en bucles para determinar qué comandos se deben ejecutar.
8.2
DIAGRAMAS DE FLUJO Y SEUDOCÓDIGO
Con la adición de las estructuras de selección y las estructuras de repetición a su grupo de
herramientas de programación se vuelve todavía más importante planear su programa antes
de que comience a codificar. Dos enfoques comunes son: usar diagramas de flujo o usar seu­
docódigo. Los diagramas de flujo son un enfoque gráfico para crear su plan de codificación, y
el seudocódigo es una descripción verbal de su plan. Tal vez quíera usar alguno o ambos para
sus proyectos de programación.
operadores relacionales
246
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Idea clave: los
diagramas de flujo y el
seudocódigo se usan
para planear tareas de
programación.
Para programas
menos el más simple):
•
•
•
el seudocódigo puede ser el mejor enfoque de planeación (o al
Resalte un conjunto de enunciados que describan los pasos que tomará para resolver un
problema.
Convierta estos pasos en comentarios en un archivo-m.
Inserte el código MATLAB apropiado en el archivo entre las líneas de comentario.
He aquí un ejemplo realmente simple: suponga que se le pide crear un programar para
convertir mph a pies/s. La salida debe ser una tabla completa con un título y eneabezados de
columna. He aquí una forma de resaltar los pasos que puede seguir:
•
•
•
•
•
•
Definir un vector de valores mph.
Convertir mph a pies/s.
Combinar los vectores mph y pies/s en una matriz.
Crear un título de tabla.
Crear encabezados de columna.
Desplegar la tabla.
Una vez que defina los pasos, póngalos en un archivo-m MATLAB como comentarios:
%Defini r un vector de val ores mph
%Converti r mph a pi es/s
%Combinar l os vectores mph y pi es/s en una mat r i z
%Crear un títul o de tabl a
%Crear encabezados de col umna
%Despl egar l a tabl a
Ahora puede insertar el código MATLAB apropiado en el archivo-m
%Defi ni r un vector de val o res mph
mph = 0:10:100;
%Converti r mph a pi es/s
fps = mph*S 2 80/3600;
%Combi nar l os vectores mph y pi es/s en una mat r i z
table = [mph;fps]
%Crear un titul o de tabl a
d i sp ( ' Tabl a de conversión de vel oci dad ' )
%Crear encabezados de col umna
mph
f/s')
d i sp ( '
%Despl egar l a tabl a
fpri ntf ( ' %8 . 0f %8.2f \n' , tabl e)
Si pone algo de tiempo en su planeación, probablemente no necesitará cambiar mucho
el seudocódigo una vez que inicie la programación.
Los diagramas de flujo solos o combinados con seudocódigo son especialmente apro­
piados para tareas de programación más complicadas. Puede crear un "gran cuadro" de su
programa gráficamente y luego convertir su proyecto a seudocódigo adecuado para ingresar
en el programa como comentarios. Antes de comenzar a hacer diagramas de flujo, necesitará
una introducción a algunos símbolos estándar de los diagramas de flujo. (Véase la tabla 8.3.)
La figura 8.2 es un ejemplo de un diagrama de flujo para el problema mph a pies/s. Para
un problema así de simple, probablemente en realidad nunca creada un diagrama de flujo.
Sin embargo, conforme los problemas se vuelven más complicados, los diagramas de flujo se
convierten en una herramienta invaluable que le permite orgauizar sus pensamientos.
Una vez que cree un diagrama de flujo debe transferir las ideas en líneas de comentario
en un archivo-m y luego agregar el código apropiado entre los comentarios.
http://jurgensoft.co.cc
Sección 8.3
funciones lógicas 247
Tabla 8.3 Diagramas de flujo para diseñar programas de cómputo
El óvalo se usa para indicar el comienzo
o final de una sección de código
El paralelogramo se usa para indicar
procesos de entrada o salida
Calcularel
vector píes/s
Combinaren
una tabla
Los cálculos se colocan en rectángulos
Figura 8.2
Recuerde: tanto los diagramas de flujo como el seudocódigo son herramientas que
tienen la intención de ayudarle a crear programas de cómputo. También se pueden usar de
manera efectiva para ilustrar la estructura de un programa a los no programadores, dado que
enfatizan la progresión lógica de ideas sobre los detalles de programación.
Los diagramas de flujo
facilitan la visualizacIón
de la estructura de un
programa.
diagrama de flujo:
representación pictórica
8.3
de un programa de
FUNCIONES LÓGICAS
cómputo
MATLAB ofrece tanto estructuras de selecci6n tradicionales por ejemplo la familia de fun­
ciones if como una serie de funciones lógicas que realizan en gran medida la misma tarea. La
función lógica principal es find, que con frecuencia se puede usar en lugar tanto de las estruc­
turas de selección tradicionales como de los bucles.
8.3.1
Find
El comando find busca una matriz e identifica cuáles elementos en dicha matriz satisfacen un
criterio dado. Por ejemplo, la Academia Naval de Estados Unidos requiere solicitantes que
tengan al menos 5'6" (66") de alto. Considere esta lista de alturas de solicitantes:
height = [63 , 6 7 , 65 , 72 , 69 , 78 , 75]
Puede encontrar los números índice de los elementos que satisfacen el criterio al usar
el comando find:
accept = find(height>=66 )
Este comando regresa
accept
4
2
5
6
7
seudocódigo: lista de
tareas de programación
necesarias para crear un
programa
248
Capítulo 8
Idea clave: con
frecuencia, las funciones
lógicas son herramientas
de programación
más eficientes que las
estructuras de selección
tradicionales.
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
La función find regresa los números índice de la matriz que satisfacen el criterio. Si quie­
re saber cuáles son las estaturas reales, puede llamar a cada elemento con el número índice:
height(accept)
ans =
67
72
69
78
75
También podría determinar cuáles solicitantes n o satisfacen el criterio. Use
decline
=
find(height<66)
que produce
decline
1 3
=
Podría usar el comando disp y fprintf para crear un reporte más legible:
disp('Los siguientes candidatos satisfacen el requisito de
estatura') ; fprintfC'Candidato # %4.0f mide %4.0f
pulgadas de alto \n' , [accept ; height(accept) ] )
Estos comandos regresan la siguiente tabla en la ventana de comandos:
Los siguientes
Candidato #
Candidato #
Candidato #
Candidato #
Candidato #
candidatos satisfacen
67 pulgadas
2 mide
4 mide
72 pulgadas
5 mide
69 pulgadas
6 mide
78 pulgadas
7 5 pulgadas
7 mide
el requisito de estatura
de alto
de alto
de alto
de alto
de alto
Obviamente, también podría crear una tabla de quienes no satisfacen el requisito:
disp('Los siguientes candidatos no satisfacen el requisito
de estatura')
fprintf('Candidato # %4.0f mide %4 . 0f pulgadas de alto \n',
[decline ; height(decline) ] )
Candidato #
1 mide
63 pulgadas de alto
Candidato #
3 mide
6 5 pulgadas de alto
Puede crear criterios de búsqueda bastante complicados que usen los operadores lógi­
•
cos. Por ej emplo. suponga que los solicitantes deben tener al menos 18 años de edad y menos
de 35. Entonces sus datos se pueden ver como esto:
Estatura, pulgadas
Edad, años
63
67
18
19
65
72
69
18
20
78
75
36
34
12
Ahora defina la matriz y encuentre los números Índice de los elementos en la columna 1
que sean mayores que 66. Entonces se encuentra cuáles de dichos elementos en la columna 2 son
también mayores que o iguales a 18 y menores que o iguales a 35. Se usan los comandos
applicants
=
[
63 , 18 ; 6 7 , 19 ; 6 5 , 18 ; 72 , 20 ; 69 , 36 ;
78 , 34 ; 7 5 , 12]
http://jurgensoft.co.cc
Sección 8.3
pass =fi nd (appl i cants ( : , 1» =66 & appl i cants (: , 2» =18
& appl i cants ( : , 2) < 3 5 )
que regresa
pass
2
4
6
la lista de solicitantes que satisfacen todos los criterios. Se podría usar fprintf para crear una
salida más agradable. Primero cree una tabla de los datos a desplegar:
resul t = [pass , appl i cants (pass , 1) , appl i cants(pass , 2) ] ' ;
Luego use fprintf para enviar los resultados a la ventana de comandos:
fprintf('Sol i c i tante # %4.0f mi de %4 . 0f pulgadas de al to
y %4.0f años de edad\n' , resul ts)
La lista resultante es
Candi dato #
Candidato #
Candidato #
2 mi de
4 m i de
6 m i de
67 pul gadas de al to y
72 pul gadas de al to y
78 pul gadas de al to y
19 años de edad
20 años de edad
34 años de edad
Hasta el momento se usó find sólo para regresar un solo número índice. Si se definen
dos salidas desde find, como en
[ row , col ] = fi nd ( criteria)
regresará los números de fila y columna adecuados (también llamados números índice o su­
bíndices fila y columna).
Ahora, imagine que ya tiene una matriz de valores de temperatura de paciente medidos
en una clínica. La columna representa el número de la estación donde se tomó la temperatura.
Por tanto, el comando
temp = [95 . 3 , 100.2 , 98 . 6 ; 97 . 4 , 99 . 2 , 98 . 9 ; 100 . 1 , 99 . 3 , 97]
produce
temp =
9 5.3000 100 . 2000
97.4000
99 . 2000
100 . 1000 99 . 3000
98 . 6000
98 . 9000
97 . 0000
y
element = fi nd (temp>98.6)
produce el número de elemento para la representación de índice sencillo:
el ement
3
4
5
6
8
Cuando se usa el comando find con una matriz bidimensional, usa un esquema de nu­
meración de elemento que opera en cada columna una a la vez. Por ejemplo, considere la
matriz 3 X 3. Los números índice de elemento se muestran en la figura 8.3. Los elementos que
contienen valores mayores que 98.6 se muestran en negrillas.
Funciones lógicas
249
250
Copítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Figura 8.3
Secuencia de numeración
de elementos para una
matriz 3 X 3.
Con la finalidad de determinar los números de fila y columna, se necesita la sintaxis
[row , col ] = fi nd (temp>98 . 6)
que produce los siguientes números de fila y columna:
row
Idea clave: MATLAB
3
1
2
3
2
es dominante en columna.
1,1
1,2
1,3
2,1
2,2
2,3
3,1
3,2
3, 3
col
1
2
2
2
3
Figura 8.4
Designación de fila,
elemento para una matriz
3 X 3. Los elementos que
satisfacen el criterio se
muestran en negrillas.
En conjunto, estos números identifican los elementos que se muestran en la figura 8.4.
Al usar fprintf se puede crear un reporte más legible. Por ejemplo,
fpr i ntf('Paci ente%3 . 0 f en estaci ón%3 . 0f tuvo una temp de%6.
1f \n ' , [row , col , temp(el ement) ] ' )
regresa
Paci ente
Paci ente
Paci ente
Paci ente
Paci ente
Definir un vector
de valores x
•
Encontrar los números
índice en la matriz x para
3
1
2
3
2
en
en
en
en
en
estaci ón
estaci ón
estaci ón
estación
estación
1
2
2
2
3
tuvo
tuvo
tuvo
tuvo
tuvo
una
una
una
una
una
temp
temp
temp
temp
temp
de 100.1
de 100.2
de 99.2
de 99.3
de 98 . 9
valores mayores que 9
Use los números índice
para encontrar los valores x
8.3.2
Diagrama de flujo y seudocódigo para comandos find
El comando
find
regresa sólo una respuesta: un vector de los números de elemento solici ­
tados. Por ej emplo, puede hacer un diagrama de flujo de una secuencia de comandos, como
se muestra en la figura 8.5. Si usa
puede
find
muchas veces para separar una matriz en categorías,
elegir emplear una forma diamante, que indica el uso de
find
como una estructura de
selección.
Figura 8.5
Diagrama de flujo que
ilustra el comando find.
%Defi na un vector de val ores x
x= [ 1 , 2 , 3 ; 10 , 5 , 1 ; 12 , 3 , 2 ; 8, 3 , 1]
%Encuentre l os números í nd i ce de l os val ores en x >9
el ement
find (x>9)
%Use l os números í nd i ce para encont rar l os val ores x
%mayores que 9 al ponerl os en x
val ues = x (el ement)
http://jurgensoft.co.cc
Sección 8.3
Funciones lógicas
25 1
% Cree una tabla de salida
d i sp ( ' Elementos mayores que 9')
d i sp ('Elemento #
Valor ' )
fpr i nt f ( ' %8 . 0f
%3 . 0f \n ' , [element ' ; values ' ])
-'ijMue·M:i-
Procesamiento de señal con el uso de la función sinc
La función sinc se usa en muchas aplicaciones de ingeniería, pero especialmente en proce­
samiento de señales (figura 8.6). Desafortunadamente, existen dos definiciones ampliamente
aceptadas de esta función:
!1(x) =
sen ( 7TX )
y
7TX
fz(x)
sen x
=
--
X
Estas dos funciones tienen una forma indeterminada de
O/O cuando x
=
O. En este caso,
se usó el teorema de I'H6pital del cálculo para probar que ambas funciones son iguales a
1
cuando x = cero. Para valores de x distintos a cero, las dos funciones tienen una forma similar.
La primera función,.t;(x), cruza el eje x cuando x es un entero; la segunda función cruza el eje
x cuando x es un múltiplo de 7T.
sinc_x que usa la segunda
x desde - 57T hasta +57T y
Suponga que a usted le gustaría defmir una función llamada
sinc_x
definición. Pruebe su función al calcular valores de
para
grafique los resultados.
l. Establezca el problema.
Crear y probar una función llamada
sinc_x, a partir de la segunda definición:
fz(x)
=
senx
x
2. Describa las entradas y salidas.
- 57T hasta 57T
Entrada
Sea x que varía desde
Salida
Crear una gráfica de sinc_z contra
x
3. Desarrolle un ejemplo a mano.
4. Desarrolle una solución MATLAB.
Destaque su función en un diagrama de flujo como se muestra en la figura 8.7. Luego
convierta el diagrama de flujo a comentarios seudocódigo e inserte el código MATLAB
apropiado.
Tabla 8.4 Cálculo de la función sine
x
sen(x)
O
O
sinc_x(x)
O/O
=
=
sen(x)/x
1
71'/2
1
1 /(71'/2)
71'
O
O
-71'/2
-1
=
-1 /(71'/2)
0.637
=
-0.637
Figura 8.6
Los osciloscopios se
usan ampliamente
en aplicaciones de
procesamiento de señal.
(Cortesía de Agilent
Teehnologies Ine.)
252
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Inicio
sinc_x(x)
t
Encontrar e l índice # s de
los elementos de x
cercanos a cero
�
x<abs(.OOOl)
/ Salida /
=
1
t
Encontrar el índice #s de
los elementos de x no
cercanos a cero
/Salida
Figura 8.7
Diagrama de Aujo de la
función sine,
� x>=abs(.OOOl)
V
= sen(x)
0
function output = s i nc_x (x)
%Esta fun c i ón encuentra el val or de s i nc ,
%con el uso de l a segunda defi n i ción
% s i n (x)/x
%Determi ne el í nd i ce #s de l os
%el ementos en el arregl o x cercanos a O
set 1 = find (abs (x)<O . OOOl) ;
%Establ ezca d i chos el ementos en l a sal i da
%del arregl o i gual a 1
output (set1) = 1 ;
%Determ i ne el í nd i ce #5 de l os
%el ementos en el arregl o x que no están
%cerca de O
set2 = fi nd (abs (x» =O.OOOl) ;
%Cal cul e sen (x)/x para l os el ementos
%que no están cerca de O,
% Y asi gne l os resul tados a l os correspondientes
% el ementos del ar regl o de sal i da
output (set2) = s i n (x (set2) ) . /x(set2) ;
Una vez que se crea la función se deberá probar en la ventana de comandos:
s i nc_x(O)
ans =
ans =
0 . 6 366
s i nc_x ( p i )
ans =
3.8982e-017
s i nc_x ( - p i /2)
ans =
0 . 6 366
Note que
sinc_x(pi/2)
MATLAB trata a
7T
es igual a un número muy pequeño, pero no cero, Por eso
como un número de punto flotante y usa una aproximación de su
valor real.
S. Ponga a prueba la solución.
Cuando se comparan los resultados con los'del ejemplo a mano, se ve que las respuestas
concuerdan. Ahora se puede usar la función con corifianza en el problema. Se tiene
%Ej empl o 8 . 1
cl ear, el c
%Defi na un arregl o de ángu l os
x=- 5*pi : pi /100: 5*pi ;
%Cal cul e s i nc_x
y=si nc_x(x) ;
%Cree l a gráfi ca
pl o t (x , y)
t i tl e ( ' Funeión si ne') , xl abel ('ángul o ,
radi anes ' ) , yl abel ('s i ne ' )
que genera la gráfica de la figura 8.8.
http://jurgensoft.co.cc
Sección 8.3
Funciones lógicas
Función sinc
1
0.8
0.6
0.4
u
::i
Vl
0.2
O
-0.2
0
- '�20
-10
20
10
O
Ángulo, radianes
La gráfica también soporta la creencia de que la función opera de manera adecuada. Poner
a prueba sinc_x con un valor a la vez valida sus respuestas para una entrada escalar; sin
embargo, el programa que generó la gráfica envía un argumento vectorial a la función. La
gráfica confirma que también se desempeña de manera adecuada con entrada vectorial.
Si tiene problemas para entender cómo funciona esta función, remueva los pun­
tos y coma que suprimen la salida y corra el programa. Entender la salida de cada línea
le ayudará a entender mejor la lógica del programa.
Además de find, MATLAB ofrece otras dos funciones lógicas: all y any. La función all
verifica si una condición lógica es verdadera para todo miembro de un arreglo, y la función
any verifica si una condición lógica es verdadera para algún miembro de un arreglo. Consulte
la función interna help de MATLAB para más información.
E j e r c i c i o d e p r ác t i c a 8. 1
Considere las siguientes matrices:
x
�
l}6
23
10
42
8
78
45
9
22
8
�
13
9
J
2
Y
=
[1 :z}
4
7
10
21
=
[10
5
22
13]
27
1. Con la notación de índice solo, encuentre los números índice de los elementos
en cada matriz que contengan valores mayores que 10.
2. Encuentre los números de fila y columna Ca veces llamados subíndices) de los
elementos en cada matriz que contengan valores mayores que 10.
3. Encuentre los valores en cada matriz que sean mayores que
10.
4. Con la notación de índice solo, encuentre los números Índice de los elementos
en cada matriz que contengan valores mayores que 10 y menores que 40.
S. Encuentre los números de fila y columna para los elementos en cada matriz
que contengan valores mayores que 1 0 y menores que 40.
6. Encuentre los valores en cada matriz que sean mayores que 10 y menores que 40.
Figura 8.8
La función sine.
253
254
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
7. Con la notación de índice solo, encuentre los números índice de los elementos
en cada matriz que contengan valores entres O y 10 o entre 70 y 80.
8. Use el comando length junto con los resultados del comando find para
determinar cuántos valores en cada matriz están entre O y 10 o entre 70 y 80.
8.4
ESTRUCTURAS DE SELECCiÓN
La mayoría de las veces, el comando find puede y debe utilizarse en vez de un enunciado if.
Sin embargo, hay situaciones en las cuales se requiere el enunciado if. Esta sección describe
la sintaxis que se emplea en los enunciados if.
8.4.1 El if simple
Un enunciado if simple tiene la siguiente forma:
i f enunciados de
comparación
end
Si la comparación (una expresión lógica) es verdadera, se ejecutan los enunciados entre
el enunciado ir y el enunciado end. Si la comparación es falsa, el programa salta inmedia­
tamente al enunciado que sigue a end. Una buena práctica de programación es sangrar los
enunciados dentro de una estructura ir para legibilidad. Sin embargo, recuerde que MATLAB
ignora el espacio en blanco. Sus programas correrán sin importar si usted sangró o no alguna
de sus líneas de código.
He aquí un ejemplo realmente simple de un enunciado if:
i f G< 50
count = count +1 ;
d i sp (G) ;
end
Idea clave: los
enunciados if, por lo
general, funcionan mejor
con escalares.
Este enunciado (desde if hasta end) es fácil de interpretar si G es un escalar. Si G es
menor que 50, entonces se ejecutan los enunciados entre las líneas if y end. Por ejemplo, si G
tiene un valor de 25, entonces connt aumenta por 1 y G se despliega en la pantalla. Sin embar­
go, si G no es escalar, entonces el enunciado if considera la comparación verdadera ¡sólo si es
verdadera para todo elemento! Por tanto, si G se define desde O hasta 80,
G = 0 : 10:80 ;
entonces la comparación es falsa iY se ejecutan los enunciados dentro del enunciado if! En
los enunciados ir funcionan mejor cuando tratan con escalares.
.S"'''''L'H,
8.4.2 la estructura if/else
El if simple le permite ejecutar una serie de enunciados si una condición es verdadera y sal­
tar dichos pasos si la condición es falsa. La cláusula else le permite ejecutar un conjunto de
enunciados si la comparación es verdadera y un conjunto diferente de enunciados si la compa­
ración es falsa. Suponga que usted quiere sacar el logaritmo de una variable x. Usted sabe, por
las clases dc álgebra básica, que la entrada a la función log debe ser mayor a O. A continuación
hay un conjunto de enunciados if/else que calculan el logaritmo si la entrada es positiva y
envía un mensaje de error si la entrada a la función es O o negativa:
i f x >0
y = log(x)
http://jurgensoft.co.cc
Sección 8.4
else
disp('La entrada a la función log debe ser positiva')
end
Cuando x es un escalar, esto es fácil de interpretar. Sin embargo, cuando x es una matriz, la
comparación es verdadera sólo si es verdadera para todo elemento en la matriz. De modo que, si
x
=
0:0.5:2;
entonces los elementos en la matriz no son todos mayores a O. Por tanto, MATLAB brinca a
la porción else del enunciado y despliega el mensaje de error. El enunciado if/else probable­
mente está mejor confinado para usar con escalares, aunque puede encontrar que es de uso
limitado con vectores.
�
Sugerencia
MATLAB incluye una función llamada beep que hace que la computadora "suene"
al usuario. Puede usar esta función para alertar al usuario de un error. Por ejemplo,
en la cláusula iflelse, podría agregar un beep a la porción del código que incluye un
enunciado de error:
if x >0
log(x)
y
else
beep
disp('La entrada a la función log debe ser
positiva')
end
8.4.3
la estructura elseif
Cuando se anidan varios niveles de enunciados iflelse, puede ser difícil determinar cuáles ex­
presiones lógicas deben ser verdaderas (o falsas) con la finalidad de ejecutar cada conjunto de
enunciados. La función elseif le permite comprobar criterios múltiples mientras se mantiene
el código fácil de leer. Considere las siguientes líneas de código que evalúan si se emite una
licencia oe conductor, con base en la edad del solicitante:
if age<l6
disp('Lo siento. Tendrá que esperar')
elseif age<18
disp('Puede obtener un permiso para conducir')
elseif age<70
disp('Puede obtener una licencia estándar')
else
disp('Los conductores mayores de 70 requieren una licencia
especial')
end
En éste, MATLAB primero verifica si age<16. Si la comparación es verdadera, el pro­
grama ejecuta la siguiente línea o conjunto de líneas, despliega el mensaje Lo siento. Tendrá
que esperar, y luego sale de la estructura if. Si la comparación es falsa, MATLAB se mueve
a la siguiente comparación elseif y esta vez verifica si age<18. El programa continúa a través
de la estructura if hasta que finalmente encuentra una comparación verdadera o hasta que
encuentra else. Note que la línea else no incluye una comparación, pues se ejecuta si el elseif
inmediatamente anterior es falso.
El diagrama de flujo para esta secuencia de comandos (figura
te para indicar una estructura de selección.
8.9) usa la forma diaman­
Estructuras de selección
255
256
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Inicio
ifage<16
age<18
Verdadero r----� ------,
Lo siento. Tendrá
que esperar
Verdadero
Puede obtener un
permiso para conducir
elseif
Puede obtener una
licencia estándar
age<70
Figura 8.9
Diagrama de flujo que usa
enunciados if múltiples.
Fin
Esta estructura es fácil de interpretar si age es un escalar. Si es una matriz, la compara­
ción debe ser verdadera para todo elemento en la matriz. Considere esta matriz de edad
age
=
[ 1 5 ,17,2 5, 5 5 , 7 5 ]
La primera comparación, is age<16, e s falsa, porque n o es verdad para todo elemento e n el
arreglo. La segunda comparación, elseif age<18, también es falsa. La tercera comparación,
elseif age<70, es falsa también, pues no todas las edades están por abajo de 70. El resultado
es Los conductores mayores de 70 requieren una licencia especial, un resultado que no les
gustará a los otros conductores.
Sugerencia
Un error común que cometen los nuevos programadores cuando usan enunciados ir
es especificar en exceso los criterios. En el ejemplo anterior es suficiente establecer
que age < 18 en la segunda cláusula if, porque age no puede ser menor que
16 Y
además satisfacer este enunciado. No necesita especificar age < 18 Y age >= 16. Si
especifica en exceso los criterios, se arrie sga a definir una ruta de cálculo para la que
no hay respuesta correcta. Por ejemplo, en el código
if age<16
disp('Lo siento . Tendrá que esperar')
elseif age<18 & age> 16
disp('Puede obtener un permiso para conducir')
elseif age<70 & age>18
disp('Puede obtener una licencia estándar')
elseif age>70
disp('Los conductores mayores de 70 requieren
una licencia especial')
end
no hay opción correcta para age
=
16, 18 070.
http://jurgensoft.co.cc
Sección 8.4
Estructuras de selección
257
En general, las estructuras elseif funcionan bien para escalares, pero probablemente
find es mejor opción para matrices. He aquí un ejemplo que usa find con un arreglo de edades
y genera una tabla de resultados en cada categoría:
age = [ 1 5 , 17 , 2 5 , 5 5 , 7 5] ;
setl
fi nd (age<16) ;
set2
fi nd (age>=16 & age<18) ;
set3
fi nd (age>=18 & age<70) ;
set4
fi nd (age>=70) ;
fpr i ntf ( ' Lo s i ento . Tendrá que esperar %3 . 0f
\n ' , age(setl»
fpr i ntf ('Puede obtener un perm i so para conduci r %3 . 0f
\n ' , age (set2»
fpr i ntf ( ' Puede obtener una l i cenc i a estándar
%3 . 0f \n ' , age (set3»
fpr i n tf ( ' Los conductores mayores de 70 requieren
una l i cenci a espec i al %3 . 0f \n ' , age (set4»
Estos comandos regresan
Lo s i ento . Tendrá que esperar. Sól o t i ene 1 5
Puede obtener u n permi so para conduci r porque t i ene 17
Puede obtener una l i cenc i a estándar porque ti ene 25
Puede obtener una l i cenc i a estándar porque t i ene 5 5
Los conductores mayores de 70 requi eren una l i cenci a
especi al . Usted t i ene 7 5
Dado que e n esta secuencia s e evalúa cada
pletamente (por ejemplo,
find, es necesario especificar e l rango com­
age>=16 & age<18).
.'''Mél·':'-
Asignación de calificaciones
La familia de enunciados
if se
usa de manera más efectiva cuando la entrada es un escalar.
Cree una función para determinar calificaciones de examen con base en los puntos y suponga
una sola entrada a la función. Las calificaciones se deben basar en los siguientes criterios:
C�ficación
Promedio
A
90a 100
B
80a 90
C
70a 80
D
60a 70
E
<60
l. Establezca el problema.
Determinar la calificación obtenida en un examen.
258
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
2. Describa las entradas y salidas.
Entrada
Puntaje único, no un arreglo
Salida
Calificación en letra
3. Desarrolle un ejemplo a mano.
85 debería ser una B
Pero, ¿90 debería ser una A o una B? Es necesario crear criterios más exactos.
Calificación
Promedio
A
� 90 a 100
B
� 80 y < 90
C
D
�60 y < 70
E
<60
� 70 y < 80
4. Desarrolle una solución MATLAB.
Resalte la función con el diagrama de fluj o que se muestra en la figura 8. 1 0.
if x>= 90
functi on resul t s = grade(x)
%Esta función req u i ere una
%entrada escal ar
i f(x>=90)
resul ts = ' A ' ;
el seif(x>=80)
'8';
resul t s
el sei f (x>=70)
resul ts
'e';
el seif(x>=60)
resul ts = 'O';
el se
'E' ;
resul t s
end
=
elseif
x>= 80
elseif
•
x>= 70
elseif
x>= 60
else
CFin�
Figura 8.10
Diagrama de Rujo para un esquema de calificación.
=
http://jurgensoft.co.cc
Sección 8.4
5. Ponga a prueba la solución.
Ahora pruebe la función en la ventana de comandos:
grade (25)
ans =
E
grade(80)
ans =
B
grade(-52)
ans =
E
grade(108)
ans
A
Note que aunque la función parece funcionar de manera adecuada regresa calificaciones
para valores arriba de 1 00 y valores menores que O. Si le parece, ahora puede regresar y
agregar la lógica para excluir dichos valores:
funct i on resu1ts = grade(x)
%Esta función requi ere una entrada escal ar
i f(x>=O & x<=lOO)
i f(x>=90)
resul t s
=
' A ';
el sei f (x>=80)
resu1ts = ' B ' ;
e1sei f (x>=70)
resu1ts
=
'e' ;
e1sei f(x>=60)
resu1ts
'D' ;
el se
resul t s
'E' ;
end
el se
resul t s
' En t rada i l egal ' ;
end
Se puede probar de nuevo la función en la ventana de comandos:
grade (-lO)
ans =
Entrada i l egal
grade ( 108)
ans =
Entrada i 1egal
Estructuras de selección
259
260
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Esta función operará mejor para escalares, pero si envía un vector a la función,
puede obtener algunos resultados inesperados, como
score = [95 , 42,83 , 77] ;
grade(score)
ans
E
E j e r c i c i o d e p r ác t i c a 8.2
La familia de funciones if es particularmente útil en funciones. Escriba una función
para cada uno de estos problemas si supone que la entrada a la función es un escalar:
1 . Suponga que en un estado de Estados Unidos la edad legal para beber
es 2 1 . Escriba y pruebe una función para determinar si una persona es lo
suficientemente madura para beber.
2. Muchos juegos en los parques de diversiones requieren que los usuarios
tengan cierta estatura mínima. Suponga que la estatura mínima es 48" para
cierto juego. Escriba y pruebe una función para determinar si el usuario es lo
suficientemente alto.
3. Cuando una parte se fabrica, las dimensiones usualmente se especifican con
una tolerancia. Suponga que cierta parte necesita tener 5.4 cm de largo, más
.
o menos 0 . 1 cm (5.4 ± 0.1 cm). Escriba una función para determinar si una
parte está dentro de dichas especificaciones.
4. Desafortunadamente, Estados Unidos actualmente usa unidades tanto métricas
como inglesas. Suponga que la parte del problema 3 se inspeccionó al medir
la longitud en pulgadas en lugar de cm. Escriba y pruebe una función que
determine si la parte está dentro de las especificaciones y que acepte entrada
en la función en pulgadas.
5. Muchos motores de cohete sólido constan de tres etapas. Una vez que la
•
primera etapa se quema, se separa del misil y la segunda etapa se enciende.
Luego la segunda etapa se quema y separa, y la tercera etapa se enciende.
Finalmente, una vez que la tercera etapa se quema, también se separa del
misil. Suponga que los siguientes datos representan aproximadamente los
tiempos durante los que cada etapa se quema:
Etapa 1
Etapa 2
Etapa 3
0-100 segundos
100-170 segundos
170-260 segundos
Escriba y pruebe una función para determinar si el misil está en etapa de
vuelo 1 , etapa de vuelo 2, etapa de vuelo 3 o vuelo libre (sin potencia).
8.4.4 Switch y case
La estructura switch/case se usa con frecuencia cuando existe una serie de opciones de ruta
de programación para una variable dada, dependiendo de su valor. Switch/case es similar
a if/else/elseif. De hecho, cualquier cosa que pueda hacer con switch/case se podría hacer
con if/else/elseif. Sin embargo, el código es un poco más fácil de leer con switch/case, una
estructura que le permite elegir entre múltiples salidas, con base en ciertos criterios. É sta es
una importante distinción entre switch/case y elseif. Los criterios pueden ser un escalar (un
http://jurgensoft.co.cc
Sección 8.4
Estructuras de selección
numero) o una cadena. En la práctica se usa más con cadenas que con numeros. La estructura
de switch/case es
switch
variable
optionl
case
código a ejecutar si la variable es igual a la opción 1
case
option2
código a ejecutar si la variable es igual a la opción 2
case
option_n
código a ejecutar si la variable es igual a la opción n
otherwise
código a ejecutar si la variable no es igual a cualquiera
de las opciones
end
He aquí un ej emplo: suponga que quiere crear una función que diga al usuario cuál cs l a
tarifa aérea a una d e tres diferentes ciudades:
city
=
input('Ingrese el nombre de una ciudad en apóstrofes ')
switch city
case 'Boston'
disp('$345')
case 'Denver'
disp('$150')
case 'Honolulu'
disp('Quédese en casa y estudie')
otherwise
disp('No en archivo')
end
Si al correr este script replica 'Boston' en el prompt, MATLAB responde
city =
Boston
$345
Puede decir al comando input que espere una cadena al agregar 's' en un segundo
campo. Esto libera al usuario del abrumador requisito de agregar apóstrofes alrededor de cual­
quier cadena de entrada. Con la 's' agregada, el código precedente ahora se lee como sigue:
city
=
input('Ingrese el nombre de una ciudad en apóstrofes ','s')
switch city
case 'Boston'
disp('$345')
case 'Denver'
disp(' $150')
case 'Honolulu'
disp('Quédese en casa y estudie')
otherwise
disp('No en archivo')
end
261
262
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
La porción otherwise de la estructura switch/case no se requiere para que funcione la
estructura. Sin embargo, debe incluirla si hay alguna forma de que el usuario pueda ingresar
un valor no igual a uno de los casos.
Las estructuras case/switch tienen diagramas de flujo exactamente iguales a las estruc­
turas if/else.
�
-jUMOC-':'·
S u g e re n c i a
Si usted es programador C, puede haber usado switch/case en dicho lenguaje.
Una diferencia importante en MATLAB es que, una vez que se encuentra un caso
"verdadero", el programa no verifica los otros casos.
Compra de gasolina
Existen cuatro países en el mundo que oficialmente no usan el sistema métrico: Estados Uni­
dos, Reino Unido, Liberia y Myanmar. Incluso, en Estados Unidos la práctica es que algunas
industrias sean casi completamente métricas y otras todavía usen el sistema inglés de unida­
des. Por ejemplo, cualquier mecánico le dirá que, aunque los automóviles antiguos tengan una
mezcla de componentes, algunos métricos y otros ingleses, los automóviles nuevos (cualquier
automóvil construido después de 1 989) casi son completamente métricos. El vino se envasa
en litros, pero la leche se envasa en galones. Los estadounidenses miden distancia en millas,
pero la electricidad en watts. La confusión entre unidades métricas e inglesas es común. Los
estadounidenses que viajan a Canadá, por lo general, se confunden debido a que la gasolina se
vende en litros en Canadá, pero en Estados Unidos en galones.
Imagine que usted quiere comprar gasolina (figura 8 . 1 1 ) . escriba un programa que
•
•
•
pregunte al usuario si quiere ordenar la gasolina en litros o en galones.
conmine al usuario a ingresar cuántas unidades quiere comprar.
calcule el costo total al usuario, si supone que la gasolina cuesta $2.89 por galón.
Use una estructura switch/case.
1 . Establezca el problema .
•
Calcular el costo de una compra de gasolina.
Figura 8.11
La gasolina se vende tanto
en litros como en galones.
http://jurgensoft.co.cc Sección
8.4
2. Describa las entradas y salidas.
Entrada
Especificar galones o litros
Número de galones o litros
Salida
Costo en dólares, si supone $2.89 por galón
3. Desarrolle un ejemplo a mano.
Si el volumen se especifica en galones, el costo es
volumen X $2.89
de moc!o que, para 1 0 galones,
costo
=
1 0 galones X $2.89/galón
=
$28.90
Si el volumen se especifica en litros, se necesita convertir litros a galones y luego calcu­
lar el costo:
volumen = litros X 0.264 galón/litro
costo
=
volumen X $2 .89
De modo que, para 1 0 litros,
volumen = 1 0 litros X 0.264 galón/litro = 2.64 galones
costo 2.64 galones X 2.89 $7.63
=
=
4. Desarrolle una solución MATLAB.
Primero cree un diagrama de flujo (figura 8. 1 2). Luego convierta el diagrama de flujo
en comentarios seudocódigo. Finalmente, agregue el código MATLAB:
cl ear , cl c
%Defi na el costo por gal ón
rate = 2 . 89 ;
%Pi da al usua r i o i ngresar gal ones o l i t ros
uni t = i nput ( ' Ingrese galones o l i tros\n ' , ' s ' ) ;
%Use un swi tch/case para dete rm i nar el factor de convers i ón
swi tch uni t
case ' gal ones '
factor = 1 ;
case ' l i tros'
factor = 0 . 264 ;
otherwi se
d i sp ( ' No d i sponi bl e ' )
factor = O ;
end
%Pregunte al usuario cuánta gasol i na qui ere comprar
vol ume = i nput ( [ ' Ingrese el vol umen que l e gustaría comprar
en ' , un i t , ' : \n ' ] ) ;
%Cal cul a el costo de l a gasol i na
i f factor -=0
cost = vol ume * factor* rate ;
%Enví a l os resul tados a l a pantal l a
fpri n t f ( ' Serán $ %5.2f por %5 . 1 f %s
\n ' , cost , vol ume , uni t)
end
Estructuras de selección
263
264
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
factor
factor
=
=
1
0. 264
F
Ingrese la cantidad de gasolina
cost
Figura 8.12
=
volume * factor * rate
Envía resultados a la pantalla
Diagrama de flujo para
determinar el costo de
gasolina con la estructura
switch/case.
Hay varias cosas que óbservar en esta solución. Primero, la variable unit contiene un
arreglo de información carácter. Si verifica la ventana del área de trabajo después de
correr este programa, notará que unit es un arreglo carácter 1 X 6 (si ingresó litros) o
un arreglo carácter 1 X 7 (si ingresó galones).
En la línea
unit
=
i nput ( ' Ingrese galones o l i t ros ' , ' s ' ) :
el segundo campo, 's', le dice a MATLAB que espere una cadena como entrada. Esto
permite al usuario ingresar galones o litros sin los apóstrofes.
En la línea
vol ume
=
i nput ( [ ' Ingrese el vol umen que l e gustaría comprar
en ' ,u ni t , ' : '] ) ;
se creó un arreglo carácter a partir de tres componentes:
•
•
•
la cadena 'Ingrese el volumen que le gustaría comprar en'.
la variable carácter unit.
la cadena ':'.
¡
http://jurgensoft.co.cc
Sección 8.4
Al combinar estos tres componentes, fue capaz de hacer que el programa propusiera al
usuario
Ingrese el volumen que le gusta r í a comprar en li t ros
o
Ingrese el volumen que le gustaría comprar en galones
En el enunciado fprintf, se incluyó un campo para entrada de cadena al usar el marca­
dor de posición % 8 :
fpr i ntf ( ' Serán $ %5 . 2f por %5 . 1 f %s
\n ' , cost , volume , un i t)
Esto permitió al programa pedir a los usuarios que la gasolina se midiera o en galones
o en litros.
Finalmente, se usó un enunciado if, de modo que si el usuario ingresó algo ade­
más de galones o litros, no se realizaran cálculos.
5. Ponga a prueba la solución.
Se puede probar la solución corriendo el programa tres veces separadas, una vez para
galones, una vez para litros y otra para alguna unidad no soportada. La interacción en la
ventana de comandos para galones es
Ingrese galones o li tros
galones
Ingrese el volumen que le gustarí a comprar en galones :
10
Serán $ 28 . 90 por 10 . 0 galones
Para litros, la interacción es
Ingrese galones o li tros
1 i t ros
Ingrese el volumen que le gustar í a comprar en li t ros :
10
Serán $ 7 . 63 por 10.0 li t ros
Finalmente, si usted ingresa algo aparte de galones o litros, el programa envía un men­
saje de error a la ventana de comando:
Ingrese galones o li tros
cuartos
No di sponi ble
Dado que los resultados del programa son los mismos que el cálculo a mano, parece que
el programa funciona como se planeó.
Estructuras de selección
265
266
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Figura 8. 1 3
Ventana d e menú
desplegable.
8.4.5
Idea clave: las
interfaces de usuario
gráficas, como el recuadro
de menú, reducen la
posibilidad de que el
usuario cometa errores,
como equivocaciones de
deletreo.
Menu
La función menu se usa con frecuencia en conjunto con una estructura switch/case. Esta fun­
ción hace que aparezca un recuadro de menú en la pantalla, con una serie de botones definidos
por el programador
i nput = menu ( ' Mensaje a 7 usuario ' , ' texto para botón
1 ' , ' texto para botón 2 ' , etc . )
Se puede usar la opción menu en el ejemplo de tarifa aérea anterior para asegurar que
el usuario elija sólo ciudades de las que se tiene información. Esto también significa que no se
necesita la sintaxis otherwise, pues no es posible elegir una ciudad que "no esté en archivo".
c i ty
menu ( ' Sel ect the name of a c i ty from the menu :
' , ' Boston ' , ' Denve r ' , ' Honol ul u ' )
swi tch c i ty
case 1
d i sp ( ' $ 345 ' )
case 2
d i s p ( ' $ 1 50 ' )
case 3
d i s p ( ' Quédese en casa y estudi e ' )
end
=
Note que un caso número sustituyó la cadena en cada línea case. Cuando se ejecuta
el script, aparece el recuadro menú que se muestra en la figura 8 . 13 y espera que el usuario
seleccione uno de los botones. Si eligió Honolulu, MATLAB responderá
•
c i ty
=
3
Quédese en casa y estud i e
Desde luego, podría suprimir l a salida del comando disp, que s e incluyó aquí por cla­
ridad.
-'''MOI·I:'-
Compra de gasolina: un enfoque de menu
En el ejemplo 8.3 se usó un enfoque switch/case para determinar si el cliente quiere comprar
gasolina medida en galones o en litros. Un problema con el programa es que, si el usuario no
http://jurgensoft.co.cc
Sección 8.4
puede deletrear, el programa no funcionará. Por ejemplo, si cuando se piden galones o litros
el usuario ingresa
l i tters
El programa responderá
No di spon i b l e
Este problema s e puede resolver a l usar u n menú; entonces e l usuario sólo necesita presionar
un botón para hacer una elección. Todavía se usará la estructura switch/case, pero se combi­
nará con el menú.
l . Establezca el problema.
Calcular el costo de una compra de gasolina.
2. Describa las entradas y salidas.
Entrada
Especificar gai ones o litros desde un menú
Número de galones o litros
Salida
Costo en dólares, si supone $2.89 por galón
3. Desarrolle un ejemplo a mano.
Si el volumen se especifica en galones, el costo es
volumen X $2.89
De modo que para 1 0 galones,
costo = .1 0 galones X $2.89/galón = $28.90
Si el volumen se especifica en litros, se necesita convertir litros a galones y luego calcu­
lar el costo:
volumen = litros X 0.264 galónllitro
costo = volumen X $2.89
De modo que para 1 0 litros,
volumen = 10 litros X 0.264 galónllitro = 2.64 galones
costo = 2.64 galones X 2.89 = $7.63
4. Desarrolle una solución MATLAB .
. Primero cree un diagrama de flujo (figura 8. 1 4). Luego convierta el diagrama de flujo
en comentarios de seudocódigo. Finalmente, agregue el código MATLAB:
%Ej empl o 8 . 4
c1 ear , cl c
%Defi na el costo por gal ón
rate = 2 . 89 ;
%Pi da al usuar i o i ngresar gal ones o l i tros desde u n menú
d i sp C ' Use el menú para hacer s u sel ección ' )
choi ce = menu C ' ¿Medi r gasol i na en l i tros o gal ones? ' ,
' gal ones ' , ' l i tros ' ) ;
%Use swi tch/case para determi nar el factor de conve rs i ón
swi tch choi ce
case 1
factor = 1 ;
uni t = ' gal ones '
Estructuras de selección
267
268
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
V
r------,
factor = 1
case 1
F
case 2
v r----�-...,
factor = 0.264
Ingresar cantidad de gasolina
Enviar resultados a la pantalla
Figura 8. 1 4
D iagrama de Rujo para
determinar el costo de
gasolina desde un menú .
Fin
case 2
factor = 0 . 264 ;
u n i t = ' l i tros '
end
%Pregunte al usuario cuánta gasol i na l e gustarí a comprar
vol ume = i nput ( [ ' Ingrese el vol umen que l e gustar í a
comprar e n ' , un i t , ' : \n ' ] ) ;
%Cal cul e el costo de l a gasol i na
cost = vol ume * factor*rate ;
%Envíe l os resul tados a l a pantal l a
fpr i n tf ( ' Serán $ %S . 2 f por %S . lf %s
\n ' , cost , vol ume , u n i t)
Esta solución es más simple que la del ejemplo 8.3 porque no hay oportunidad de
. una mala entrada. Sin embargo, hay que señalar algunas cosas.
Cuando se define la opción mediante la función menu, el resultado es un número,
no un arreglo carácter:
choi ce = menu ( ' ¿Med i r gasol i na en l i tros o
gal ones? ' , ' gal ones ' , ' l i t ros ' ) ;
Usted puede comprobar esto al consultar la ventana del área de trabaj o, en la que la
opción se menciona como un número 1 X 1 de doble precisión.
http://jurgensoft.co.ccSección
8.4
Puesto que no se usó el comando input para definir la variable unit, que es una
cadena (un arreglo carácter), se necesita especificar el valor de unit como parte de los
cálculos de caso:
case 1
1;
factor
uni t
' gal ones '
case 2
factor = 0 . 264 ;
' l i tros '
uni t
=
=
=
Hacer esto le permite usar el valor de unit en la salida de la ventana de comandos, tanto
en el comando disp como en fprintf.
5. Ponga a prueba la solución.
Como en el ejemplo 8.3, se puede probar la solución al correr el programa, pero esta
vez se necesita intentarlo sólo dos veces: una vez para galQnes y una para litros. La
interacción en la ventana de comandos para galones es
Use el menú para hacer su sel ección
¿Medir gasolina en litros o galones?
Ingrese el vol umen que l e gusta r í a comprar en gal ones :
10
Será $28 . 90 por 10 . 0 gal ones
Para litros, la interacción es
Use el menú para hacer s u sel ección
) MENU
.
�
¿Medir gasolina en litros o galones?
Ingrese el vol umen que l e gusta r í a comprar en l i t ros :
10
Serán $ 7 . 63 por 10 . 0 l i t ros
Estos valores concuerdan con los del ejemplo desarrollado a mano y tienen la ventaja
añadida de que no es posible deletrear mal alguna entrada.
Estructuras de selección
269
270
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicos y estructuras de control
E i e r c i c i o d e p r ác t i c a 8 . 3
Use la estructura switch/case para resolver estos problemas:
l. Cree un programa que collilÚne al usuario a ingresar su año en la escuela:
primero, segundo, tercero o cuarto. La entrada será una cadena. Use la estructura
switch/case para determinar qué día serán los tinales para cada grupo: lunes
para primero, martes para segundo, miércoles para tercero y jueves para cuarto.
2. Repita el problema 1 pero esta vez con un menú.
3 . Cree un programa que conmine al usuario a ingresar el número de dulces que
le gustaría comprar. La entrada será un número. Use la estructura switch/case
para determinar la cuenta, donde
1 dulce
2 dulces
3 dulces
más de 3 dulces
8.5
=
$0.75
$ 1 .25
$ 1 .65
$ 1 .65 + $0.30(número ordenado
-
3)
ESTRUCTURAS DE REPETICiÓN: BUCLES
Los bucles (loops) se usan cuando necesita repetir un conjunto de instrucciones muchas veces.
MATLAB soporta dos tipos diferentes de bucles: el bucle for y el bucle while. Los bucles for
son la opción más sencilla cuando usted sabe cuántas veces necesita repetir el bucle. Los bucles
while son las opciones más sencillas cuando necesita mantener la repetición de las instruc­
ciones hasta que se satisface un criterio. Si tiene experiencia de programación previa, puede
estar tentado a usar bucles de manera extensa. Sin embargo, se pueden componer programas
MATLAB que eviten los bucles, ya sea mediante el comando find o mediante la vectorización
del código. (En la vectorización se opera sobre vectores enteros a la vez, en lugar de un ele­
mento a la vez.) Es buena idea evitar los bucles siempre que sea posible, porque los programas
resultantes corren más rápido y con frecuencia requieren menos pasos de programación.
8.5.1
Bucles for
La estructura del bucle for es simple. La primera línea identifica el bucle y define un índice,
que es un número que cambia en cada paso a través del bucle. Después de la línea de identi­
ficación viene el grupo de comandos que se quiere ejecutar. Finalmente, la terminación del
bucle se identifica mediante el comando end. En resumen, se tiene
for i ndex = [matr lx]
comandos a ejecutar
end
El bucle se ejecuta una vez para cada elemento de l a matriz índice identificada en la
primera línea. He aquí un ejemplo realmente simple:
for k= [l , 3 , 7]
k
end
Este código regresa
k =
1
k
3
http://jurgensoft.co.cc
Sección 8.5
Estructuras de repetición: bucles
271
k =
7
En este caso, el índice es
k. Los programadores usan con frecuencia k como una varia­
ble índice por cuestiones de estilo. La matriz índice también se puede definir con el operador
dos puntos o, de hecho, también cn algunas otras formas. He aquí un ejemplo de código que
Id ea clave: los
encuentra el valor de 5 elcvado a potencias entre 1 y 3 :
bucles le permiten repetir
for k=1 : 3
a=SAk
end
secuencias de comandos
hasta que se satisfacen
ciertos criterios.
E n la primera línea, el índice, k, se define como la matriz [ 1 ,2,3]. La primera vez en el
k se le asigna un vai or de 1 y se calcula 5 1 . Luego se repite el bucle, pero ahora k es
bucle, a
igual a 2 y se calcula 52. La última vez en el bucle, k es igual a 3 y se calcula 53. Puesto que los
enunciados e n el bucle se repiten tres veces, el valor de
a
se despliega tres veces en la ventana
de comandos:
a =
s
a
25
a =
1 25
Aunque
k se definió como una matriz en la primera línea del bucle for, dado que k es
un número Índice cuando se usa en el bucle, puede ser igual sólo a un valor a la vez. Después
de terminar de ejecutar el bucle, si se llama k, sólo tiene un valor: el valor del índice la última
vez en el bucle. Para el ej emplo anterior,
k
regresa
k =
3
Note que k se menciona como una matriz 1 X 1 en la ventana del área de trabaj o .
Una d e las formas más comunes d e usar u n bucle for es para definir una nueva matriz.
Considere, por ej emplo, el código
for k = 1 : 5
a(k) = kA2
end
Este bucle define una nueva matriz, a, un elemento a la vez. Dado que el programa re­
pite su conjunto de instrucciones cinco veces, a la matriz
a
se agrega un nuevo elemento cada
vez a lo largo del bucle con la siguiente salida en la ventana de comandos:
a =
1
a =
1
4
1
4
9
1
a =
1
4
9
16
4
9
16
a =
a =
25
272
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Suge r en c ia
La mayoría de los programas de cómputo no tienen la habilidad de MATLAB para
manipular matrices tan fácilmente; por tanto, se apoyan en bucles similares al recién
presentado para definir arreglos, Sería más fácil crear el vector
a
en MATLAB con
el código
k = 1:5
a = k . A2
que regresa
k
1
a =
1
2
3
4
5
4
9
16
25
Éste es un ejemplo de
vectorización del código,
Otro uso común para un bucle for es combinarlo con un enunciado ir y determinar
cuántas veces algo es verdadero, Por ej emplo, en la lista de puntajes de examen que se mues­
tra en la primera línea, ¿cuántos están por arriba de
90?
seores = [76, 45, 98 , 97] ;
eount = O :
for k=1:1 ength (seores)
i f seores (k) >90
eount = eount + 1 ;
end
end
d i sp (count)
Cada vez que se activa el bucle, si el puntaje es mayor que 90, el contador aumenta 1 ,
La mayoría de las veces s e crean bucles for que usan una matriz índice que e s una
sola fila, Sin embargo, si en la especificación de índice se define una matriz bidimensional,
MATLAB usa toda una columna como el índice cada vez que pasa por el bucle, Por ejemplo,
•
suponga que se define el Índice como
2
k
4
8
Entonces
for k=[1, 2, 3 : 1, 4, 9 ; 1, 8 , 27]
a=k '
end
regresa
a =
1
a
2
a =
3
1
1
4
8
9
27
Sección
http://jurgensoft.co.cc
8.5
Comprueba si
el índice se excedió
Estructuras de repetición: bucles
273
Verdadero; se le
>--� agotan los
valores en
la matriz
índice
Figura 8. 1 5
Diagrama de flujo para un
bucle foro
Note que k se movió cuando se hizo igual a a, de modo que los resultados son filas en
lugar de columnas.
Se puede resumir el uso de los bucles for con las siguientes reglas:
•
•
•
•
El bucle comienza con un enunciado for y termina con la palabra end.
La primera línea en el bucle define el número de veces que se repetirán los bucles mediante
un número índice.
'
El índice de un bucle for debe ser una variable. (El índice es el número que cambia cada
vez a lo largo del bucle.) Aunque k con frecuencia se usa como el símbolo para el índice, se
puede emplear cualquier nombre de variable. El uso de k es cuestión de estilo.
Cualquiera de las técnicas aprendidas para definir una matriz se puede usar para definir la
matriz índice. Un enfoque común es usar el operador dos puntos, como en
for i ndex
•
•
•
•
=
Idea clave: use los
bucles for cuando sepa
cuántas veces necesita
repetir una secuencia de
comandos.
start : i n c : fi nal
Si la expresión es un vector fila, los elementos se usan uno a la vez una vez cada que se les
pasa por el bucle.
Si la expresión es una matriz (esta alternativa no es común), cada vez que pasa por el bucle
el índice contendrá la siguiente columna en la matriz. ¡ Esto significa que el índice será un
vector columna!
Una vez que completa el bucle for, el índice es el último valor utilizado.
Con frecuencia se evitan los bucles for al vectorizar el código.
El diagrama de flujo básico para un bucle for incluye un diamante que refleja el hecho
de que un bucle for comienza cada paso comprobando si hay un nuevo valor en la matriz
índice (figura 8. 1 5 ). Si no lo hay, el bucle termina y el programa continúa con los enunciados
después del bucle.
Creación de una tabla grados a radianes
Aunque sería mucho más sencillo usar la capacidad vectorial de MATLAB para crear una
tab.la grados a radianes, se puede demostrar el uso de los bucles for con este ejemplo.
l . Establezca el problema..
Crear una tabla que convierta valores de ángulo en grados a radianes, desde O hasta 360
grados, en incrementos de 1 0 grados.
-'ijMal·M:,'
274
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
2. Describa las entradas y salidas.
Entrada
Un arreglo de valores de ángulo en grados
Salida
Una tabla de valores de ángulo tanto en grados como en radianes
3. Desarrolle un ejemplo a mano.
Para
1 0 grados,
radianes
=
( 10)
;
1 0
=
0.1745
4. Desarrolle una solución MATLAB .
Desarrolle primero un diagrama de flujo (figura 8. 1 6) para auxiliarse a planear su
código.
Inicio
para k = 1:36
Se agotan
los valores
en la matriz
índice
%Ej empl o 8 . 5
%Crear una tabl a de g rados a
%radi anes
cl ear . cl c
%Use un bucl e for para l os
%cál cul os
for k=1 : 36
degree(k) = k*10 ;
radians (k) =degree (k) *pi/180 :
end
%Cree una tabl a
tabl e = [degree ; radi ans]
%Envíe l a tabl a a l a
%ventana de comandos
d i s p ( ' Grados a radi anes ' )
d i s p ( ' Grados
radi anes ' )
fpri n t f ( ' %8 . 0f %8 . 2 f
.
\n ' . tabl e)
Fin
Figura 8.16
Diagrama de Rujo para cambiar grados a radianes.
La ventana de comandos despliega los siguientes resultados:
Grados a radi anes
Grados
Rad i anes
0 . 17
10
20
0.35
etc .
0 . 52
30
http://jurgensoft.co.cc
Sección 8.5
Estructuras de repetición: bucles
275
5. Ponga a prueba la solución.
El valor para 10 grados calculado por MATLAB es el mismo que el cálculo a mano.
Obviamente, es mucho más fácil usar las capacidades vectoriales de MATLAB
para este cálculo. Usted obtiene exactamente la misma respuesta y toma significativa­
mente menos tiempo de cálculo. Este enfoque se llama vectorización de su código y es
una de las fortalezas de MATLAB. El código vectorizado es
degrees = 0 : 10 : 360 ;
radi ans = degrees * p i /180 ;
tabl e = [degree ; radi ans]
d i sp ( ' Grados a radi anes ' )
d i s p ( ' Grados
Radi anes ' )
fpr i n t f ( ' %8 . 0f %8 . 2 f \n ' , tabl e)
-jUMOI·M:',
Cálculo de factoriales con un bucle for
Un factorial es el producto de todos los enteros desde 1 hasta N. Por ejemplo, 5 factorial es
En los textos de matemáticas, el factorial se indica usualmente con un signo de exclamación:
5 ! es cinco factorial.
MATLAB contiene una función interna para cálculo de factoriales, llamada factorial. Sin em­
bargo, suponga que a usted le gustaría programar su propia función factorial llamada fact.
1. Establezca el problema.
Crear una función llamada fact para calcular el factorial de cualquier número. Suponga
entrada escalar.
2. Describa las entradas y salidas.
Entrada
Un valor escalar N
Salida
El valor de N!
3. Desarrolle un ejemplo a mano.
5!
=
...
1 ·2 3 4 5
=
1 20
4. Desarrolle una solución MATLAB .
Primero desarrolle un diagrama de flujo (figura 8 . 1 7) para auxiliarse a planear su có­
digo.
276
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
function output
=
functi on output = fact (x)
%Esta funci ón acepta una
%entrada escal a r y
%cal cul a su factor i al
fact(x)
% i n i ci al i za r a
for k
=
l:x
Se agotan
a = 1;
los valores
en la matriz
índice
%Use u n bucl e para cal cu 1 ar el
%factori al
for k=l : x
a=a*k ;
end
output = a ;
Fin
Figura 8. 1 7
Diagrama de Rujo para encontrar un factorial con el uso del bucle foro
5. Ponga a prueba la solución.
Pruebe la función en la ventana de comandos:
fact ( S)
ans =
120
Esta función sólo funciona si la entrada es un escalar. Si se ingresa un arreglo, el bucle
for no se ejecuta y la función regresa un valor de 1 :
x=l : lO ;
» fact (x)
ans =
1
Puede agregar un enunciado if para confirmar que la entrada es un entero positivo y
no un arreglo, como se muestra en el diagrama de flujo de la figura 8. 1 8 y el código
acompañante.
Sección
http://jurgensoft.co.cc
No escalar
Salida "La entrada debe
ser un entero positivo"
for k
=
l:x
Estructuras de repetición: bucles
functi on output = fact (x)
%Esta funci ón acepta una entrada
%escal a r y cal cul a su factor i al
function output = fact(x)
Verifica si x es
un escalar
8.5
Se agotan los
valores en la
matriz índice
%Veri fi ca que x es un a r regl o
%de un sol o val o r
i f(l ength (x» l I x<O)
output = ' la entrada debe ser u n
entero pos i ti vo ' ;
el se
% i n i ci al i za a
a = 1;
%Usa u n bucl e para cal cul ar el factor i al
for k=l : x
a=a* k j
end
output
a;
end
Fin
Figura 8. 1 8
Diagrama de flujo para encontrar un factorial, incluida verificación de error.
Compruebe la nueva función en la ventana de comandos:
fact ( - 4)
ans =
la entrada debe ser u n entero posi ti vo
fact (x)
ans =
la entrada debe ser u n entero posi ti vo
277
278
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicos y estructuras de control
E j e r c i c i o de práctica 8.4
Use un bucle for para resolver los siguientes problemas:
1 . Cree una tabla que convierta pulgadas a pies.
2. Considere la siguiente matriz de valores:
x =
[45,23 , 1 7 ,34,85,33]
¿Cuántos valores son mayores que 30? (Use un contador.)
3. Repita el problema 3, esta vez con el comando find.
4. Use un bucle for para sumar los elementos de la matriz en el problema 2.
Compruebe sus resultados con l a función sumo (Use la característica help si
no sabe o recuerda cómo usar sum.)
8. 5.2 B ucles while
Idea clave: use bucles
while cuando no sepa
cuántas veces deberá
repetir una secuencia de
comandos.
Los bucles while son similares a los bucles foro La gran difercncia e s la forma en que
MATLAB decide cuántas veces repetir el bucle. Los bucles while continúan hasta que se sa­
tisface algún criterio. El formato para un bucle while es
whi l e
criterio
comandos a ejecutar
end
He aquí un ejemplo:
k=O j
whi l e k<3
k=k+l
end
En este caso se inicializa un contador, k, antes del bucle. Entonces e l bucle se repite en
tanto k sea menor que 3 . En cada ocasión, k aumenta por 1 a lo largo del bucle, de modo que
el bucle se repite tres veces, lo que da
t
k =
1
k =
2
k
3
Se podría usar k como un número índice para definir una matriz o sólo como un conta­
dor. La mayoría de los bucles for también se pueden codificar como bucles while. Recuerde
el bucle for de la sección 8.5. 1 que se usó para calcular las tres primeras potencias de 5 ; el
siguiente bucle while logra la misma tarea:
k=O ;
whi l e k<3
k=k+ l ;
a ( k) = 5Ak
end
Sección 8.5
http://jurgensoft.co.cc
Estructuras de repetición: bucles
279
El código regresa
a =
5
a =
5
25
5
2S
a
Idea clave: cualquier
125
problema que se pueda
Cada vez quc s e pasa por e l bucle, se agrega otro elemento a l a matriz a.
Como otro ejemplo, inicialice primero
a:
resolver con un bucle
while también se podría
resolver con un bucle foro
a = O;
Entonces encuentre el primer múltiplo de 3 que es mayor que 1 0:
while(a<lO)
a = a + 3
end ;
La primera vez que pase por el bucle, a es igual a O, de modo que la comparación es
verdadera. Se ejecuta el siguiente enunciado (a = a + 3) Y el bucle se repite. Esta vez a es igual
a 3 y la condición todavía es verdadera, de modo que la ejecución continúa. Sucesivamente,
se tiene
a
3
a
6
a =
9
a
12
La última vez que pasa por el bucle, a comienza como 9 y luego se eonvierte en 1 2
cuando s e agrega 3 a 9. L a comparación s e realiza una última vez, pero, dado que a ahora es
igual a 12 (que es mayor que 10), el programa salta al final del bucle while y ya no se repite.
Los bucles while también se pueden usar para contar cuántas veces una condición es
verdadera al incorporar un enunciado if. Recuerde los puntajes de examen contados anterior­
mente en un bucle foro También se les puede contar con un bucle while:
scores = [76,45 . 98 , 97] ;
count = O ;
k=O ;
while k<4
k=k+1 ;
if scores(k» 90
count = count + 1 ;
end
end
disp(count)
La variable connt se usa para contar cuántos valores son mayores que 90. La variable k
se usa para contar cuántas veces se ejecuta el bucle.
El diagrama de flujo básico para un bucle while es el mismo que el del bucle for (figura
8 . 1 9).
280
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
�
�
Sugerencia
La variable que se usa para controlar el bucle while se debe actualizar cada vez que
pase por el bucle. Si no, generará un bucle interminable. Cuando un cálculo toma
demasiado tiempo para completarse, puede confirmar que la computadora realmente
trabaja en él al observar el indicador "busy", en la esquina inferior izquierda. Si
quiere salir manualmente del cálculo, escriba ctrl c.
Sugerencia
Muchos textos y manuales de computadora indican la tecla control con el símbolo
Esto es confuso, en el mejor de los casos. El comando I\c usualmente significa
oprimir la tecla ctrl y la tecla c al mismo tiempo.
Comprueba si el criterio
todavía es verdadero
1\.
Falso --el criterio
ya no es
verdadero y
el programa
sale del bucle
Figura 8 . 1 9
Diagrama de flujo para un
bucle while.
•
-j"MAI·':!-
Creación de una tabla para convertir grados
a radianes con un bucle while
Tal como se usó un bucle for para crear una tabla para convertir grados a radianes en el ejem­
plo 8.5, se puede usar un bucle while para el mismo propósito.
1 . Establezca el problema.
Crear una tabla que convierta grados a radianes, desde O hasta 360 grados, en incremen­
tos de 1 0 grados.
2. Describa las entradas y salidas.
Entrada
Un arreglo de valores de ángulo en grados
Salida
Una tabla de valores de ángulo tanto en grados como en radianes
Sección
http://jurgensoft.co.cc
8.5
Estructuras de repetición: bucles
3. Desarrolle un ejemplo a mano.
Para 10 grados
radianes
4.
=
(10)
;
1 0
=
0.1745
Desarrolle una solución MATLAB.
Primero desarrolle un diagrama de flujo (figura 8.20) para ayudarse a planear su código.
%Ej empl o 8 . 7
%Crear una tabl a de g rados a
%radi anes
cl ear , cl c
%Use u n bucl e whi l e para l os
%cál cul os
Inicio
Se agotan
while k<=36
los valores
en la matriz
índice
degree(k) =k*10
radians(k) = degree(k)*pi/180
k=k+l;
k=l ;
whi l e k<=36
degree(k) = k * 10 j
radi ans (k) =degree ( k) *pi/180 ;
k=k+ l ;
end
%Cree una tabl a
tabl e = [degree ; radi ans]
%Envíe la tabl a a l a ventana
%de comandos
Definir una tabla de grados
y radianes
d i s p ( ' Grados a radi anes ' )
d i s p ( ' Grados
Radi anes ' )
fpr i ntf( ' %8 . 0f %8 . 2 f \n ' , tabl e)
Tabla de salida
Figura 8.20
Diagrama de Rujo para convertir grados a radianes con un bucle while.
La ventana de comandos despliega los siguientes resultados:
Grados a radi anes
Grados
Radianes
0 . 17
10
0 . 35
20
0 . 52
30
etc .
5. Ponga a prueba la solución.
El valor para 10 grados calculado por MATLAB es el mismo que el del cálculo a
mano.
28 1
282
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
-¡"MAC-M:i:.
Cálculo de factoriales con un bucle while
Cree una nueva función llamada fact2 que use un bucle while para encontrar N! Incluya un
enunciado if para verificar números negativos y confIrmar que la entrada es un escalar.
l . Establezca el problema.
Crear una función llamada fact2 para calcular el factorial de cualquier número.
2. Describa las entradas y salidas.
Entrada
Un valor escalar N
Salida
El valor de N!
3. Desarrolle un ejemplo a mano.
5!
=
1 ·2·3·4·5
==
1 20
4. Desarrolle una solución MATLAB.
Desarrolle primero un diagrama de flujo (figura 8.2 1 ) para auxiliarse a planear su
código.
,
I
function output
=
fact2(x)
Comprueba si x
N o es escalar
es un escalar
Salida "La entrada debe
ser un entero positivo"
while k<x
Se agotan
los valores
en la matriz
índice
funct i on output = fact2 (x)
%Esta func i ón usa u n bucl e whi l e para
%encontrar x !
%La entrada debe ser u n entero posi ti vo
i f(l ength (x» l I x<O)
output = ' La entrada debe ser u n
entero pos i t i vo ' ;
el se
%In i c i al i za el producto que corre
a = 1;
%In i c i al i za el contador
k = 1;
whi l e k<x
%Incrementa el contador
k = k + 1;
%Cal cul a el producto que corre
a*k ;
a
end
output = a ;
end
=
Fin
Figura 8.21
Diagrama de flujo para encontrar un factorial con un bucle while.
http://jurgensoft.co.cc
Sección
8.5
Estructuras de repetición: bucles
283
5. Ponga a prueba la solución.
Pruebe la función en la ventana de comandos:
fact2 ( 5 )
ans =
120
fact2 ( - 10)
ans
La entrada debe ser un entero pos i t i vo
=
fact2 ( [ l : 10] )
ahs =
La entrada debe ser un entero posi t i vo
E i e r c i c i o d e p r á e t i c a 8. 5
Use un bucle while para resolver los siguientes problemas :
l . Cree una tabla de conversión de pulgadas a pies.
2 . Considere la siguiente matriz de valores:
x =
[45,23 , 1 7,34,85,33]
¿Cuántos valores son mayores que 30? (Use un contador.)
3 . Repita el problema 3, esta vez con el comando find.
4. Use un bucle while para sumar los elementos de la matriz en el problema 2 .
Compruebe sus resultados con l a función sumo (Use l a característica help s i n o sabe
o recuerda cómo usar sum.)
8.5.3 Break y continue
El comando break se puede usar para terminar un bucle prematuramente (mientras que la
comparación en la primera línea todavía es verdadera). Un enunciado break provocará la ter­
minación de la parte más pequeña que encierre un bucle while o foro He aquí un ejemplo:
n=O ;
whi l e (n<lO)
n=n+ l ;
');
a=i nput ( ' Ingrese un val or mayor que o :
i f(a<=O)
d i sp ( ' Debe i ng resar un número pos i t i vo ' )
d i s p ( ' Este prog rama termi nará ' )
break
end
d i s p ( ' El l og natural de este número es ' )
d i s p (l og (a»
end
En este programa, el valor de n se inicializa afuera del bucle. Cada vez que se pasa por
el bucle, el comando de entrada se usa para pedir un número positivo. El número se com-
inicializar: definir un
valor de partida para
una variable que
cambiará más tarde.
284
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
prueba y, si es cero o negativo, se envía un mensaje de error a la ventana de comandos y el
programa salta del bucle. Si el valor de
a es positivo, el programa continúa y ocurre otro paso
a través del bucle hasta que n finalmente es mayor que
10.
continue es similar a break; si n embargo, en lugar de terminar el bucle, el
El comando
programa sólo salta al paso siguiente:
n=O ;
whi l e (n<lO)
n=n+ l ;
a=i nput ( ' Ingrese u n val or mayor que O :
')j
i f(a<=O)
d i sp ( ' Debe i ng resar un número posi ti vo ' )
d i sp ( ' Intente de nuevo ' }
eon t i nue
end
d i sp ( ' El l ag natural de este número es ' )
d i sp(l og (a»
end
En este ejemplo, si ingresa un número
nuevo, hasta que el valor de
8.5.4
n
el programa le permite intentar de
finalmente sea mayor que
1 0.
Cómo mejorar la eficiencia de los bucles
for
wbile)
Idea clave: los bucles,
En general, usar un bucle
por lo general, son menos
operaciones de arreglos. Se puede probar esta afirmación al cronometrar la multiplicación de
(o un bucle
es menos eficiente en MATLAB que usar
eficientes que los cálculos
los elementos en un arreglo largo. Primero se crea una matriz A que contiene
vectori zados.
comando
ones crea una matriz n X n de unos:
40,000 unos.
El
ones ( 2 00) j
El resultado es una matriz 200 X
de multiplicar cada elemento por
1T,
200 de unos. Ahora se pueden comparar los resultados
usando primero una multiplicación de arreglo y luego un
bucle foro Puede cronometrar los resultados con el uso de la función dock y la función etime,
•
que mide el tiempo transcurrido. Si tiene una computadora rápida, es posible que requiera
usar un arreglo más largo. La estructura del código de temporización es
tO = el oek ;
código a temporizar
eti me (cl oek , tO)
La función dock pregunta al reloj de l a computadora el tiempo actual. La función etime
compara el tiempo actual con el tiempo inicial y resta los dos valores para dar el tiempo trans­
currido.
Para el problema,
cl ear , el e
A=ones ( 200) ;
%Crea una mat r i z 200 x 200 de unos
tO=cl oek :
B=A*p i j
t i me = eti me(cl ock , tO} ;
Sección 8.5
http://jurgensoft.co.cc
Estructuras de repetición: bucles
da un resultado de
time
o
El cálculo de arreglo toma O segundos, lo que simplemente significa que oeurrió muy
rápidamente. Cada vez que corra estas líneas de código debe obtener una respuesta diferente.
Las funciones
dock y etime que se usan aquí miden cuánto tiempo trabajó el CPU entre re­
cibir las peticiones de temporización original y final. Sin embargo, el CPU hace otras cosas
además del problema: en un mínimo, realiza tareas del sistema y puede correr otros programas
en segundo plano.
Para medir el tiempo requerido para realizar el mismo cálculo con un bucle se necesita
limpiar la memoria y volver a crear el arreglo de unos:
clear
A=ones (200) ;
Esto asegura que se comparan los cálculos desde el mismo punto de partida. Ahora se
eodifica
tO=clock ;
for k=1 : 1 ength (A ( : »
B (k)=A(k) *pi ;
end
time = etime(clock , tO)
lo que produce el resultado
t i me =
69 . 6200
¡Toma casi 70 segundos realizar el mismo cálculo! (Esto fue en la computadora del
autor, su resultado dependerá de la máquina que use.) El número de iteraciones a través
del bucle for se detenninó mediante hallar cuántos elementos hay en A. Esto se logró con el co­
mando
length. Reeuerde que length regresa la dimensión de arreglo más grande, que es 200
para el arreglo y no es el que se quería. Para encontrar el número total de elementos se usó el
operador dos puntos ( : ) para representar A como una sola lista de 40,000 elementos de largo,
y luego se usó
length, que regresó 40,000. Cada vez que pasa por el bucle for, se agrega un
nuevo elemento a la matriz B. Éste es el paso que toma todo el tiempo. Se puede reducir el
tiempo requerido para este cálculo al crear primero la matriz B y luego sustituir los valores
uno a la vez. El código es
clear
A=ones(200) ;
tO=clock ;
%Crea una matriz B d e unos
B = A;
for k=1 : 1 ength (A ( : »
B ( k) =A ( k) "'pi ;
end
time = etime(clock , tO)
que da como resultado
time
0 . 0200
285
286
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Obviamente, ésta es una enorme mt:ioría. Podría ver una diferencia incluso más grande
entre el primer ejemplo, una simple multiplicación de los elementos de un arreglo, y el último
ejemplo, si crea una matriz más grande. En contraste, el ejemplo intermedio, en el que no se
inicializó B, tomaría una cantidad prohibitiva de tiempo en ejecutar.
MATLAB también incluye un conjunto de comandos llamados tic y toc que se pueden
usar en forma similar a las funciones cIock y etime para cronometrar un trozo de código. Por
lo tanto, el código
cl ear
A=one s ( 200) ;
tic
B = A;
for k=I : 1 ength (A( : ) )
B ( k) =A ( k) *p i ¡
end
toc
regresa
El t i empo t ranscu r r i do e s 0 . 140000 segundos .
Se esperaba la diferencia en el tiempo de ejecución, pues la computadora está ocupada
haciendo diferentes tareas en segundo plano cada vez que el programa se ejecuta. Como con
cIockletime, los comandos tic/toe miden el tiempo transcurrido, no el tiempo dedicado sólo a
la ejecución de este programa.
Sugerencia
•
Asegúrese de suprimir cálculos intermedios cuando use un bucle. Imprimir dichos
valores a la pantalla aumentará enormemente la cantidad de tiempo de ejecución. Si
tiene valor, repita el ejemplo anterior, pero borre los puntos y coma dentro del bucle
sólo para corroborar esta afirmación. No olvide que puede detener la ejecución del
programa con etrl c .
.¡JiJ'g'U.t-----Secciones de código de computadora se pueden categorizar como secuencias, estructuras de
selección y estructuras de repetición. Las secuencias son listas de instrucciones que se ejecu­
tan en orden. Las estructuras de selección permiten al programador definir criterios (enun­
ciados condicionales) que el programa usa para
rutas de ejecución. Las estructuras de
repetición definen bucles en los que una secuencia de instrucciones se repite hasta que se
s atisface algún criterio (también definidos mediante enunciados condicionales).
MATLAB usa los operadores relacionales matemáticos estándar, como mayor que (»
y menor que « ). La forma del operador no igual a (-=) usualmente no se ve en los textos de
http://jurgensoft.co.cc
matemáticas. Además, MATLAB incluye operadores lógicos como
and
(&) y
or
Resumen MATLAS
287
(1). Estos
operadores se usan en enunciados condicionales, lo que permite a MATLAB tomar decisiones
acerca de cuáles porciones del código ejecutar.
El comando find es único para MATLAB y debe ser la función condicional primaria
usada en su programación. Este comando permite al usuario especificar una condición me­
diante el uso de operadores lógicos y relacionales. Entonces el comando se usa para identifi­
car elementos de una matriz que satisface la condición.
Aunque se pueden usar los comandos if, else y elseif tanto para variables escalares
como matriciales, son útiles principalmente para escalares. Estos comandos permiten al pro­
gramador identificar rutas de cómputo alteruativas sobre la base de los resultados de enuncia­
dos condicionales.
Los bucles for se usan principalmente cuando el programador sabe cuántas veces se
debe ejecutar una secuencia de comandos. Los bucles while se usan cuando los comandos
se deben ejecutar hasta que se satisface una condición. La mayoría de los problemas se pue­
den estructurar de modo que sean adecuados los bucles for o while.
Los enunciados break y continue se usan para salir prematuramente de un bucle. Por
lo general, se usan en conjunto con enunciados if. El comando break provoca un salto de
un bucle y la ej ecución del resto del programa. El comando eontinne salta la ejecución del
paso actual en el bucle, pero permite al bucle continuar hasta completar la satisfacción de
criterio.
La vectorización del código MATLAB le permite ejecutar mucho más eficientemente
y, por tanto, más rápidamente. Los bucles en particular se deben evitar en MATLAB . Cuando
los bucles son inevitables, se pueden mejorar mediante la definición de variables "dummy"
con valores de marcador de posición, como unos o ceros. Luego, dichos marcadores de posi­
ción se pueden sustituir en el bucle. Hacer esto resultará en mej oras significativas en el tiempo
de ejecución,
un
hecho que se puede confirmar con experimentos de temporización.
Las funciones dock y etime se usan para consultar el reloj de la computadora y luego
determinar el tiempo que se requiere para ejecutar trozos de código. El tiempo calculado es el
tiempo "transcurrido". Durante este tiempo, la computadora no sólo corre un código MATLAB,
sino también ejecuta tareas de fondo y funciones de mantenimiento. Las funciones tie y toe
realizan una tarea simílar. Para comparar el tiempo de ejecución de diferentes opciones de
código se pueden usar las funciones o tic/toe o c1ockletime.
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
<
menor que
<=
o
igual a
>
menor que
mayor que
>=
mayor que
o
igual a
igual a
no igual
&
and
I
or
not
a
RESU M EN MATLAB
288
Capítul o 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
al l
verifica si un criterio se satisface por todos los elementos de un arreglo
any
verifica si un criterio se satisface por alguno de los elementos en el arreglo
break
provoca que la ejecución de un bucle se termine
case
ordena las respuestas
clock
determina el tiempo actual en el reloj del CPU
cont i nue
termina el paso actual a través de un bucle, pero procede al siguiente paso
el se
define la ruta si el resultado de un enunciado if es falso
el sei f
define la ruta si el resultado de un enunciado if es falso y especifica una nueva
prueba lógica
end
identifica el final de una estructura de control
etime
encuentra el tiempo transcurrido
find
determina cuáles elementos en una matriz satisfacen el criterio de entrada
for
genera una estructura bucle
if
verifica una condición que resulta en verdadero o en falso
menu
crea
ones
crea una matriz de unos
un
menú para usar como vehículo de entrada
otherwi se parte de la estructura de selección de caso
TÉRMINOS CLAVE
switch
parte de la estructura de selección de caso
tic
inicia una secuencia de cronometrado
toc
detiene una secuencia de cronometrado
whi l e
genera una estructura bucle
selección
bucle (loop)
operador lógico
condición lógica
operador relacional
subíndice
estructura de control
repetición
variable local
índice
secuencia
Operadores lógicos: find
8.1
Un sensor que monitorea la temperatura de un tubo de cal entamiento de un patio trase­
ro registra los datos que se muestran en la tabla 8.5.
(a) La temperatura nunca debe superar los 1 05 °E Use la función find para encontrar
los números índice de las temperaturas que superan l a temperatura máxima per­
misible.
(h)
Use la función
length con los resultados de la parte (a) para determinar cuántas
veces se superó l a temperatura máxima permisible.
(e)
Determine en qué momentos la temperatura superó la temperatura máxima permi­
sible con los números índice que se encontraron en la parte (a).
(d) La temperatura nunca debe ser menor que 1 02 °E Use la función find junto con
la función length par determinar cuántas veces la temperatura fue menor que la
temperatura IIÚnima permisible.
http://jurgensoft.co.cc
(e) Determine en qué momento la temperatura fue menor que la temperatura mínima
permisible.
(O Determine en qué momento la temperatura estuvo dentro de los limites permisi­
bles (es decir: entre 1 02 0p Y 1 05 °F, inclusive).
(g) Use la función max para determinar la temperatura máxima alcanzada y el mo­
mento en que ocurrió.
8.2
La altura de un cohete (en metros) se puede representar mediante la siguiente ecua­
ción:
height
=
4 751
2.13t2 - 0.0013t4 + 0.000034t .
Cree un vector de valores de tiempo (t) desde O hasta 1 00 a intervalos de 2 segundos.
(a) Use la función find para determinar cuándo el cohete golpea el suelo hasta dentro
de 2 segundos. (Sugerencia: el valor de altura será positivo para todos los valores
hasta que el cohete golpee el suelo.)
(h) Use la funcÍón max para determinar la altura máxima del cohete
y el tiempo co­
rrespondiente.
(e) Cree una gráfica con t en el eje horizontal y altura en el eje vertical para tiempos
hasta que el cohete golpee el suelo. Asegúrese de agregar un título y etiquetas de
eje.*
8.3
Los motores de cohete sólidos se usan como propulsor auxiliar (booster) para el trans­
bordador espacial, en vehículos de lanzamiento de satélites y en sistemas de armas
(véase la figura P8.3). El propelente es una combinación sólida dc combustible y oxi­
dante, de consistencia gomosa. Para el transbordador espacial, el componente combus­
tible es aluminio y el oxidante es percloruro de amonio, que se mantienen j untos con
un "pegamento" de resina epóxica. La mezcla propelente se vierte en un alojamiento
del motor y se permite que la resina cure baj o condiciones controladas. Puesto que los
motores son extremadamente grandes, se moldean en segmentos, cada uno de los cua­
les requiere muchos "lotes" de propelente para llenarse. ( ¡Cada motor contiene más de
1 . 1 millones de libras de propelente! ) Este proceso de curado-moldeado es sensible a
temperatura, humedad y presión. Si las condiciones no son las correctas, el combusti­
ble podría incendiarse o las propiedades granulosas del propelente (es decir, su forma;
el término grano se tomó prestado de artillería) podrían degradarse. Los motores de
cohete sólidos son extremadamente costosos y obviamente deben funcionar bien en
todo momento, o los resultados podrían ser desastrosos. Los fracasos extremadamen­
te públicos pueden destruir una compañía y provocar pérdidas de vidas humanas, de
datos y equipos científicos irremplazables . Los procesos actuales se monitorean y con­
trolan con mucha precisión. Sin embargo, para propósitos de enseñanza, considere
estos criterios generales:
La temperatura debe permanecer entre 1 1 5 °F Y 1 25 °E
La humedad debe permanecer entre 40 y 60 por ciento.
La presión debe permanecer entre 1 00 y 200 torro
Imagine que los datos de l a tabla 8.6 se recopilaron durante u n proceso de curado­
moldeado.
Ca) Use el comando find para determinar cuáles lotes satisfacen y cuáles no el criterio
de temperatura.
*Tomado de Etler, Kuncicky y Moore, Introducción a
Hall,
2005).
MATlAB 7 (Upper Saddle River, NJ: PearsonIPrentice
Problemas
289
Tabla 8.5 Datos de
temperatura de tubo
de calentamiento
0:00 A.M.
1 00
1 :00 A.M.
1 01
2:00 A.M.
1 02
3:00 A.M.
1 03
4:00 A.M.
1 03
5:00 A.M.
1 04
6:00 A.M.
1 04
7:00 A.M.
1 05
8:00 A.M.
1 06
9:00 A.M.
1 06
1 0:00 A.M.
1 06
1 1 :00 A.M.
1 05
1 2:00 P.M.
1 04
1 :00 P.M.
1 03
2:00 P.M.
1 01
3:00 P.M.
1 00
4:00 P.M.
99
5:00 P.M.
1 00
6:00 P.M.
1 02
7:00 P.M.
1 04
8:00 P.M.
1 06
9:00 P.M.
1 07
1 0:00 P.M.
1 05
1 1 :00 P.M.
1 04
1 2 :00 A.M.
1 04
290
Capítulo 8
Funciones lógicos y estructuras de control
http://jurgensoft.co.cc
Tabla 8.6 Datos curado-moldeado
...
45
1 16
1 10
2
1 14
42
1 15
3
1 18
41
1 20
4
1 24
38
95
5
1 26
61
1 18
(b) Use el comando find para determinar cuáles lotes satisfacen y cuáles no el criterio
de humedad.
(e) Use el comando find para determinar cuáles lotes satisfacen y cuáles no el criterio
de presión.
(d) Use el comando find para determinar cuáles lotes fallan por cualquier razón y
cuáles aprueban.
(e) Use sus resultados de las preguntas anteriores, junto con el eomando lengtb, para
determinar qué porcentaje de motores aprobó o falló sobre la base de cada criterio
y para determinar la tasa de aprobación total.
Figura P8.3
Booster de cohete sólido
para un misil Titán.
(Cortesía de la NASA.)
8.4
Dos gimnastas compiten entre sí. Sus calificaciones se muestran en la tabla 8.7.
(a) Escriba un programa que use find para determinar cuántos eventos ganó cada
gimnasta.
(b) Use la función mean para determinar la puntuación promedio de cada gimnasta.
8.5
Cree una función llamada f que satisfaga los siguientes criterios:
Para valores de x > 2, j(x)
Para valores de x
�
2,j(x)
o:
X2
2x
•
Tabla 8.7 Puntajes de gimnastas
�1lG5fa 1
Pommel horse
Gimna-.
9.821
9.700
Voult
9.923
9. 925
Floor
9.624
9.83
Ri ng s
9.432
9.987
High bar
9.534
9.354
Parallel bars
9.203
9.879
http://jurgensoft.co.cc
Grafique sus resultados para valores de x desde - 3 hasta 5. Elija su espaciamiento
para crear una curva suave. Debe notar un rompimiento en la curva en x =
8.6
Cree una función llamada g que satisfaga los siguientes criterios:
Para x
<
-11',
f(x)
11' ,
f(x)
Para x 2:: - 11' Y x
Para x >
11',
-1
=
cos(x)
f(x) =
Grafique sus resultados para valores de x desde
miento para crear una curva suave.
8.7
Un archivo llamado
2.
1
-2 11'
hasta + 2
11'.
Elija su espacia-
temp.dat contiene información recopilada de un conj unto de ter-
mocoples. Los datos en el archivo se muestran en la tabla 8.8. La primera colunma
incluye mediciones de tiempo (una para cada hora del día) y las restantes
Tabla 8.8 Datos de temperatura
Templ
Ternp2
Temp3
1
68.70
58. 1 1
87. 8 1
2
65.00
58.52
85.69
3
70.38
52.62
71 .78
4
70.86
58.83
77.34
5
66.56
60.59
68. 1 2
6
73.57
6 1 .57
57.98
7
73.57
67.22
89.86
8
69.89
58.25
74.8 1
9
70.98
63. 1 2
83.27
10
70.52
64.00
82.34
11
69.44
64.70
80.21
12
72. 1 8
55.04
69.96
13
68.24
6 1 .06
70.53
14
76.55
61 .1 9
76.26
15
69.59
54.96
68. 1 4
16
70.34
56.29
69.44
17
73.20
65.41
94.72
18
70. 1 8
59.34
80.56
19
69.71
6 1 .95
67.83
20
67.50
60.44
79.59
21
70.88
56.82
68.72
22
65.99
57.20
66.51
23
72. 1 4
62.22
77.39
24
74.87
55.25
89.53
�
-
,
Problemas
291
292
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
Figura P8.8
Presa del cañón Glen en el
lago Powell. (Cortesía de
Gefty Images, Inc.)
columnas corresponden a mediciones de temperatura en diferentes puntos en un
proceso.
Ca) Escriba un programa que imprima los números índice (filas y columnas) de va­
lores de datos de temperatura mayores que 85.0. (Sugerencia: necesitará usar el
comando Dud.)
Ch) Encuentre los números índice (filas y columnas) de valores de datos de tempera­
tura menores que 65.0.
Ce) Encuentre la temperatura máxima en el archivo y los correspondientes valores de
hora y número de termocople.
8.8
La cuenca fluvial del río Colorado cubre partes de siete estados occidentales. Una
serie de presas se construyeron en el río Colorado y sus tributarios para almacenar
agua que corre y generar energía hidroeléctrica de bajo costo. (Véase la figura P8.8.)
La habilidad para regular el flujo de agua hizo posible el crecimiento de la agricultura
y la población en estos estados áridos y desérticos. Incluso durante periodos de sequía
intensa, para los estados de la cuenca está disponible una fuente confiable y estable de
agua y electricidad. El lago Powell es uno de dichos depósitos. El archivo lake_powe­
ll.dat contiene datos acerca del nivel del agua en el depósito para los cinco años desde
2000 hasta 2004. Dichos datos se muestran en la tabla 8.9. Use la tabla para resolver
los siguientes problemas:
Ca) Determine la elevación promedio del nivel del agua para cada año y para el perio­
do de cinco años durante el que se recopilaron los datos.
Ch) Determine cuántos meses se superó cada año el promedio global para el periodo
de cinco años.
Ce) Cree un reporte que mencione el mes y el año para cada uno de los meses que
superaron el promedio global.
Cd) Determine la elevación promedio del agua para cada mes para el periodo de cinco
años .
. Estructuras if
8.9
8.10
Cree un programa que conmine al usuario a ingresar un valor escalar de temperatura.
Si la temperatura es mayor que 98.6 °F, envíe un mensaje a la ventana de comandos
que diga al usuario que tiene fiebre.
Cree un programa que primero conmine al usuario a ingresar un valor de x y luego lo
conmine a ingresar un valor para y. Si el valor de x es mayor que el valor de y, envíe
http://jurgensoft.co.cc
Problemas
293
Tabla 8.9 Datos de nivel de agua para el lago Powell, medidos en pies sobre el nivel del mar
2DQQ
2002
2003
2004
Enero
3680. 1 2
3668.05
3654.25
361 7.61
3594.38
Febrero
3678.48
3665.02
3651 .0 1
361 3
3589. 1 1
Marzo
3677.23
3663.35
3648.63
3608.95
3584.49
Abril
3676.44
3662.56
3646.79
3605.92
3583.02
Mayo
3676.76
3665.27
3644.88
3606. 1 1
3584.7
Junio
3682. 1 9
3672. 1 9
3642.98
361 5.39
3587.01
Julio
3682.86
3671 .37
3637.53
361 3.64
3583.07
Agosto
3681 . 1 2
3667.81
3630.83
3607.32
3575.85
Septiembre
3678.7
3665.45
3627. 1
3604. 1 1
3571 .07
Octubre
3676.96
3663.47
3625.59
3602.92
3570.7
Noviembre
3674.93
366 1 .25
3623.98
360 1 .24
3569.69
Deciembre
3671 .59
3658.07
3621 .65
3598.82
3565.73
un mensaje a la ventana de comandos que le
al usuario que x > y. Si x es menor
que o igual a y, envíe un mensaje a la ventana de comandos que le diga al usuario que
y >= x.
8.1 1
Las funciones seno inverso (asin) y coseno inverso (acos) son válidas sólo para entra­
das entre - ] y + 1 , porque tanto el seno como el eoseno tienen valores sólo entre - 1 Y
+ 1 (figura P8. 1 l ) . MATLAB interpreta el resultado de asin o aeos para un valor fuera
del rango como un número complejo. Por ejemplo, se puede tener
acos ( - Z)
ans =
3 . 1416 - 1 . 3 170;
que es un resultado matemático cuestionable. Cree una función llamada my-asin que
acepte un solo valor de x y verifique si está entre ] y + 1 ( - 1 <= x <= 1). Si x está
fuera del rango, envíe un mensaje de error a la pantalla. Si está adentro del rango per­
misible, regrese el valor de asin.
La función seno
2 .--,---,--,,1 .5
0.5
-0.5
Figura P8. 1 1
-1
- 1.5
- 2 '-----'
__�____'____'___--'---_
.....L... --'------'---!
- 1 0 -8 -6 - 4 - 2
6
10
2
4
8
o
Ángulo
La función seno varía
entre - 1 y + 1 . Por tanto,
el seno inverso (asin)
no está definido para
valores mayores que 1 y
menores que - 1 .
294
Capítulo 8
http://jurgensoft.co.cc
Funciones lóg icas y estructuras de control
8.12
Cree un programa que conmine al usuario a ingresar un valor escalar para la tempera­
tura del aire exterior. Si la temperatura es igual a o sobre 80 °F, envíe
un
mensaj e a la
ventana de comandos que le diga al usuario que vista pantalones cortos. Si la tempe­
ratura está entre 60 y 80 °F, envíe un mensaje a la ventana de comandos que le diga al
usuario que es un hennoso día. Si la temperatura es igual a o por abajo de 60 °F, envíe
un mensaj e a la ventana de comandos que le diga al usuario que vista una chamarra o
abrigo.
8.13
Suponga que la siguiente matriz representa el número de sierras ordenadas por su
compañía cada mes durante el último año.
saws
=
[1 , 4 , 5 , 3 , 7 , 5 , 3 , 10 , 12 , 8 , 7 , 4]
Todos los números deben ser eero o positivos.
(a)
Use un enunciado if para verifiear si alguno de los valores en la matriz es inválido.
(Evalúe toda la matriz una vez en un solo enunciado
if.)
Envíe a la pantalla el
mensaje "Todos válidos" o "Número inválido encontrado"; dependiendo de los
resultados de su análisis.
(h)
Cambie la matriz
saws para incluir al menos
un número negativo y verifique su
programa para asegurarse de que funciona para ambos casos.
8.14
La mayoría de las compañías grandes alientan a los empleados a ahorrar igualando sus
contribuciones a un plan 401 (k). El gobierno limita cuánto puede una persona ahorrar
en dichos planes, porque blindan el ingreso de impuestos hasta que el dinero se retira
durante su jubilación. La cantidad que la persona puede ahorrar se liga a su ingreso,
ya que es la cantidad que puede aportar su empleador. El gobierno le permitirá ahorrar
eantidades adicionales sin el beneficio impositivo. Estos planes cambian de año en
año, de modo que este ejemplo sólo es un escenario "qué sucede si . . ." .
Suponga que la Quality Widget Company tiene los planes de ahorro descritos
en la tabla 8. 10. Cree una función que encuentre la aportación anual total a su plan de
ahorros, con base en su salario y el porcentaje que usted aporta.
Tabla 8.1 0 Plan de ahorro de Quality Widget Company
Ingreso
Máximo que puede ahorrar
libre de impuestos
Máximo que igualará
la compañía
Hasta $30,000
1 0%
1 0%
Entre $30,000 y
1 0%
1 0% de los primeros $30,000
y 5% de la cantidad arriba
de $30,000
1 0% de los primeros $60,000
y 8% de la cantidad sobre
$60,000
1 0% de los primeros $30,000
y 5% de la cantidad entre
$30,000 y $60,000;
1 0% de los primeros $60,000
y 8% de la cantidad entre
$60,000 y $ 1 00,000;
Nada: los empleados con
remuneraciones altos están
exentos de este plan y en
vez de ello porticipan
en opciones de acciones
$60,000
Entre $60,000 y
$ 1 00,000
nada por el resto arriba de
$60,000
Arriba de $ 1 00,000
nada sobre la cantidad
arriba de $ 1 00,000
http://jurgensoft.co.cc
Problemos
295
Recuerde: la contribución total consiste en la aportación del empleado y la aportación
de la compañía.
Switchlcase
8.15
Con l a finalidad de tener una figura geométrica cerrada compuesta de líneas rectas
(figura P8. 1 5 ), los ángulos en la figura deben sumar
(n
donde
-
00
2)(1 80 grados)
n es el número de lados.
(a) Pruebe este enunciado usted mismo mediante la creación de un vector llamado n
desde 3 hasta 6 y calcule la suma de ángulo a partir de la fórmula. Compare lo que
sabe de geometría con su respuesta.
(b) Escriba un programa que conmine al usuario a ingresar uno de los siguientes:
triángulo
cuadrado
pentágono
hexágono
Use la entrada para definir el valor de
luego use
(e)
8.16
n para calcular la
n
mediante una estructura switch/case;
suma de los ángulos interiores de la figura.
Reformule su programa desde la parte (b) de modo que use un menú.
En la Universidad de Utah, cada especialización en ingeniería requiere un número di­
ferente de créditos para graduación. Por ejemplo, en 2005, los requisitos para algunos
de los departamentos fueron los siguientes:
1 30
130
1 22
1 26.5
1 29
Ingeniería civil
Ingeniería química
Ingeniería en computación
Ingeniería eléctrica
Ingeniería mecánica
Conmine al usuario a seleccionar un programa de ingeniería desde un menú. Use una
estructura switch/case para enviar el número mínimo de créditos requeridos para gra­
duación de vuelta a la ventana de comandos.
8.17
La forma más sencilla de dibujar una estrella en MATLAB es usar coordenadas polares.
Simplemente necesita identificar puntos sobre la circunferencia de un círculo y dibuj ar
líneas entre dichos puntos. Por ejemplo, para dibuj ar una estrella de cinco puntas, co­
mience en la parte superior del círculo
(O
=
1T/2,
r
1) y vaya en sentido contrario al de
las manecillas del reloj (figura P8.17).
Conmine al usuario a espeeificar una estrella de cinco puntas o de seis puntas
mediante un menú. Luego cree la e strella en una ventana de figura MATLAB. Note
que una estrella de seis puntas se hace con tres triángulos y requiere una estrategia
diferente de la que usó para crear una estrella de cinco puntas.
Estructuras de repetición: bucles
8.18
Use un bucle for para sumar los elementos del siguiente vector:
x
[ 1 ,23,43,72,87,56,98,33]
Compruebe su respuesta con la función sumo
Figura P8. 1 S
Polígonos regulares.
296
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicas y estructuras de control
90
90
60
30
r
o
�·
r
�·�AR *�-_·-
" L :::'�:</
¡
90
90
1
330
�OO
270
270
O
1
60
...
o
210
�-��t
. ..............
····-.·_··
270
t
270
90
1
o
270
Figura P8. 1 7
Pasos que se requieren para dibuiar una estrella de cinco puntas en coordenadas pala res.
\00
..... ..
-·······
http://jurgensoft.co.cc
8.19
8.20
Repita el problema anterior, pero esta vez use un bucle while.
Una secuencia de Fibonacci está compuesta de elementos creados al sumar los dos ele­
mentos previos. La secuencia de Fibonacci más simples comienza con 1 , 1 Y procede
del modo siguiente:
1 , 1 , 2, 3,
8.21
8.22
5, 8, 1 3 , etcétera
Sin embargo, una secuencia de Fibonaeci se puede crear con cualesquiera dos núme­
ros iniciales. Las secuencias de Fibonacci aparecen regularmente en la naturaleza. Por
ejemplo, la concha del nautilus con cámaras (figura P8.20) creee en coneordancia con
una secuencia de Fibonacci.
Conmine al usuario a
los dos primeros números en una secuencia de
Fibonacci y el número total de elementos solicitados para la secuencia. Encuentre la
secuencia al usar un bucle foro Ahora grafique sus resultados en una gráfica polar. Use
el número de elemento para el ángulo y el valor del elemento en la secuencia para el
radio.
Repita el problema anterior, esta vez con un bucle while.
Una propiedad interesante de una secuencia de Fibonacci es que la razón de los valo­
res de miembros adyacentes de la secuencia se aproxima a un número llamado "razón
dorada" o <I> (fi). Cree un programa que acepte los primeros dos números de una se­
cuencia de Fibonacci como entrada de usuario y luego calcule valores adicionales en
la secuencia hasta que la razón de valores adyacentes converja hasta dentro de 0.00l.
Puede hacer esto con un bucle whíle al comparar la razón del elemento k eon el ele­
mento k-l y la razón del elemento k-l con el elemento k-2. Si llama a su secuencia x,
entonces el código para el enunciado whíle es
whi l e abs (x (k)jx (k- l)
8.23
Problemas
-
x (k-l)jx (k-2» >O . OOl
Recuerde que en trigonometría la tangente de 11"/2 y - 11"12 es infinito. Esto se puede
ver a partir del hecho de que
tanCe)
sen(8)/eos(8)
y puesto que
sen(11"/2)
y
cos(11"/2)
=
O
se sigue que
tan(11"/2)
infinito
Dado que MATLAB usa una aproximación punto flotante de 11", calcula la tangente de
11"/2 como un número muy grande, pero no infinito.
Conmine al usuario a ingresar un ángulo e entre 11"/2 y -11"/2, inclusive. Si está
entre 11"12 y -11"12, pero no es igual a cualquiera de estos valores, calcule tan(8) y
despliegue el resultado en la ventana de comandos. Si es igual a 11"/2 o -11"12, haga el
resultado igual a lnf y despliegue el resultado en la ventana de comandos. Si está fuera
del rango especificado, envíe al usuario un mensaje de error en la ventana de coman­
dos y conmínelo a ingresar otro valor. Continúe conminando al usuario para un nuevo
valor de theta hasta que ingrese un número válido.
Figura P8.20
Nautilus con cámaras.
(Cortesía de Dorling
Kindersley.)
297
298
Capítulo 8
http://jurgensoft.co.cc
Funciones lógicos y estructuras de control
8.24
Imagine que usted es un orgulloso nuevo padre. Decide iniciar ahora un plan de aho­
rros universitario para su hij o, con la esperanza de tener suficiente dentro de 18 años
para pagar los crecientes costos de una educación. Suponga que sus amigos le dan
$ 1 000 para iniciar y que cada mes puede aportar $ 1 00. Suponga también que la tasa de
interés compuesta mensual es de 6% por año, que equivale a 0.5% cada mes.
Debido a los pagos de interés y a su aportación, cada mes su saldo aumentará en
concordancia con la fórmul a
Saldo nuevo
=
saldo anterior + interés + s u aportación
Use un bucle for para encontrar l a cantidad en la cuenta de ahorros cada mes para los
siguientes 18 años. (Cree un vector de valores.) Grafique la cantidad en la cuenta como
función del tiempo. (Grafique tiempo en el eje horizontal y dólares en el
8.25
vertical.)
Imagine que tiene una bola de cristal y puede predecir el aumento de porcentaje en
matrícula para los siguientes 22 años. El siguiente vector ¡ncrease muestra sus predic­
ciones, en porcentaje para cada año:
i nc rease = [lO , 8 , lO , 16 , 15 , 4 , 6 , 7 , 8 , lO , 8 , 12 , 14 ,
15 , 8 . 7 , 6 . 5 . 7 , 8 , 9 . 8]
Use un bucle for para determinar el costo de una educación de cuatro años, si supone
que el costo actual para un año en una escuela pública es de $5000.
8.26
Use un enunciado if para comparar sus resultados a partir de los dos problemas an­
teriores. ¿Sus ahorros son suficientes? Envíe un mensaje adecuado a la ventana de
comandos .
8.27
Bucles más rápidos. Siempre que sea posible, es mejor evitar el uso de bucles for,
puesto que son lentos para ejecutar.
(a) Genere un vector de 1 00,000 objetos de dígitos aleatorios llamado x; eleve al cua­
drado cada elemento en este vector y nombre el resultado y; use los comandos tic
y toe para cronometrar la operación.
(h)
A continuación, realice la misma operación elemento por elemento en un bucle
foro Antes de comenzar, limpie los valores en sus variables con
cl ear
X Y
Use tic y toe para cronometrar la operación.
Dependiendo de cuán rápido corra su computadora, puede requerir detener
•
los cálculos al emitir el comando ctrl c en la ventana de comandos.
(e)
Ahora convénzase de que suprimir la impresión de respuestas intermedias ace­
lerará la ejecución del código al permitir que estas mismas operaciones corran e
impriman las respuestas conforme se calculan. Es casi seguro que necesitará can­
celar la ejecución de este bucle debido a la gran cantidad de tiempo que le tomará.
Recuerde que ctrl c termina el programa.
(d) Si va a usar un valor constante muchas veces en un bucle for, calcúlelo una vez y
almacénelo, en lugar de calcularlo cada vez en el bucle. Demuestre el aumento en
rapidez de este proceso agregando (sin(O.3)+cos(pi/3»)*5! a todo valor en el vec­
tor largo en un bucle foro (Recuerde que ! sigrtifica factorial, que se puede calcular
con la función MATLAB factoriaL)
http://jurgensoft.co.cc
(e)
Como se vio en este capítulo, si MATLAB debe aumentar el tamaño de un vector
cada vez en un bucle, el proceso tomará más tiempo que si el vector ya tuviese el
tamaño adecuado. Demuestre este hecho al repetir la parte (b) de este problema.
Cree el siguiente vector de valores
antes de ingresar el bucle
y,
en el que cada elemento sea igual a cero
for:
y=zeros ( l , lOOOOO) ;
Sustituirá los ceros uno a la vez conforme repita los cálculos en el bucle.
Problemas
299
http://jurgensoft.co.cc
http://jurgensoft.co.cc
/
AIgebra ll1atricial
INTRODUCCiÓN
Con frecuencia, los ténninos arreglo y matriz se usan de manera intercambiable en
ingeniería. Sin embargo, técnicamente, un arreglo es un agrupamiento ordenado de in­
fonnación, mientras que una matriz es un arreglo numérico bidimensional que se usa
en �gebra lineal. Los arreglos pueden contener infonnación numérica, pero también
pueden contener datos carácter, datos simbólicos, etcétera. Por tanto, no todos los arre­
glos son matrices. Sólo aquéllos sobre los que se tenga intención de realizar transfor­
maciones lineales satisfacen la definición estricta de una matriz.
El álgebra matricial se usa de manera extensa en aplicaciones de ingeniería.
Las matemáticas del álgebra matricial se introducen por primera vez en los cursos de
álgebra universitaria y se extiende en cursos de álgebra lineal y cursos de ecuaciones
diferenciales. Los estudiantes comienzan a usar regularmente el álgebra matricial en
clases de estática y dinámica.
9.1
OPERACIONES Y FUNCIONES DE MATRICES
En este capítulo se introducen las funciones y operadores MATLAB que tienen in­
tención específica para usarse en álgebra matricial. Estas funciones y operadores se
contrastan con las funciones y operadores de arreglos de MATLAB, de los que difieren
significativamente.
9.1.1
Transpuesta
El operador transpose (transpuesta) cambia las filas de una matriz en columnas y las
columnas en filas. En los textos de matemáticas, con frecuencia verá el transpuesto
indicado con el superíndice T (como en AT). No obstante, no confunda esta notación
con la sintaxis MATLAB: en MATLAB, el operador transpuesto es un solo apóstrofe
('), de modo que el transpuesto de la matriz A es At•
Considere la siguiente matriz y su transpuesta:
[1 2
A=
4
(j)
10
5
8
11
iJ
4
5
6
(j)
8
9
12
10
11
]
302
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
arreglo: agrupamiento
ordenado de información
Las filas y colunmas se cambiaron. Note que el valor en la posición (3,1) deA ahora se movió
a la posición (1,3) deN, y el valor en la posición (4,2) de A ahora se movió a la posición (2,4)
de AT. En general, los subíndices de fila y colunma (también llamados números índice) se
intercambian para formar la transpuesta.
En MATLAB, uno de los usos más comunes de la operación transponer es cambiar los
vectores fila en vectores colunma. Por ejemplo:
A = [1 2 3];
A'
regresa
matriz: arreglo
numérico bidimensional
que se usa en álgebra
lineal
A = 1
2
3
Cuando se usa con números complejos, la operación transponer regresa la conjugada com­
pleja. Por ejemplo, se puede definir un vector de números negativos, sacar la raíz cuadrada y
luego transponer la matriz resultante de números complejos. Por ende, el código
x = [-1:-1:-3]
Idea clave: los
términos arreglo y matriz
con frecuencia se usan de
manera intercambiable.
regresa
x =
-1
-2
Entonces, al sacar la raíz cuadrada con el código
y=sqrt(x)
y =
O + 1.0000;
transpuesto: cambio
de las posiciones de filas
y colunmas
-3
o
+
1.4142;
o
+
1. 732 1;
y finalmente trasponer y
y'
....
produce
ans
O - 1.0000;
O - 1 . 4142;
O - 1. 7321;
Note que los resultados (y') son las conjugadas complejas de los elementos en y.
9.1.2
Producto punto
El producto punto (a veces llamado producto escalar) es la suma de los resultados que obtiene
cuando multiplica dos vectores, elemento por elemento. Considere los dos vectores siguientes:
A = [ 1
B
[4
2 3];
5 6];
El resultado de la multiplicación arreglo de estos dos vectores es
y =A. *B
Y =
4
10
18
Operaciones
Sección
http://jurgensoft.co.cc
9.1
y funciones de matrices
303
Si suma los elementos obtiene el producto punto:
sum (y)
ans=
32
Un texto de matemáticas representaría el producto punto como
producto punto:
suma de los resultados
de las multiplicaciones de
arreglo de dos vectores
que se podría escribir en MATLAB como
sum (A.*B)
MATLAB incluye una función llamada dot para calcular el producto punto:
dot(A , B)
ans =
32
No importa si A y B son vectores fila o columna, en tanto tengan el mismo número de ele­
mentos.
El producto punto encuentra amplio uso en aplicaciones de ingeniería, tal como se usa
al calcular el centro de gravedad en el ejemplo 9.1 y al realizar álgebra vectorial como en el
ejemplo 9.2.
�
Suge r e n c i a
Con los productos punto, no importa si ambos vectores son filas, ambos son
columnas o uno es una fila y el otro una columna. Tampoco importa qué orden use
para realizar el proceso: el resultado de dot(A,B) es el mismo que el de dot(B,A).
Esto no ocurre con la mayoría de operaciones matriciales.
Cálculo del centro de gr a vedad
La masa de un vehículo espacial es una cantidad extremadamente importante. Grupos
enteros de personas en el proceso de diseño siguen la pista de la ubicación y masa de cada
tuerca y tomillo. No sólo es importante la masa total del vehículo, también la información
acerca de la masa se usa para determinar el centro de gravedad del vehículo. Una razón por
la que el centro de gravedad es importante es que los cohetes caen si el centro de presión
está adelante del centro de gravedad (figura 9.1). Puede demostrar este principio con un
avión de papel. Ponga un clip en la punta del avión de papel y observe cómo cambia el
patrón de vuelo.
Aunque encontrar el centro de gravedad es un cálculo bastante directo, se vuelve más
complicado cuando usted se da cuenta de que tanto la masa del vehículo como la distribución
de masa cambian conforme se quema el combustible.
-'''MOI·,a.
304
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
Centro de
de gravedad
Figura 9.1
El centro de presión
necesita estar detrás del
centro de gravedad para
un vuelo estable.
La ubicación del centro de gravedad se puede calcular al dividir el vehículo en peque­
ños componentes. En un sistema coordenado rectangular,
XlV
=
XIWl
yW
=
YIWl
zW
=
ZlWl
+
+
+
+ X3W3 +
Y2W2 + Y3W3 +
Z2W2 + Z3W3 +
X2W2
donde
X, y y z son las coordenadas del centro de gravedad,
W es la masa total del sistema,
XI' x2' x3'···' son las coordenadas x de los componentes de sistema 1 ,2,3, ., respectivamente,
y!' Y2, Y3'"'' son las coordenadas y de los componentes de sistema 1, 2, 3, .. , respectivamente,
zl'�, Z3"'" son las coordenadas z de los componentes de sistema 1 , 2,3,..., respectivamente, y
son los pesos de los componentes de sistema 1 , 2, 3,. . , respectivamente.
W¡, W2, W3,
..
.
. . •,
.
En este ejemplo, se llenará el centro de gravedad de una pequeña colección de los componen­
tes que se usan en un complicado vehículo espacial. (Véase la tabla 9.1 .) Este problema se
puede formular en ténninos del producto punto.
1 . Establezca el problema.
Encontrar el centro de gravedad del vehículo espacial.
2. Describa las entradas y salidas.
Entrada
Ubicación de cada componente en un sistema coordenado x-y-z
Masa de cada componente
Salida
Ubicación del centro de gravedad del vehículo
Tabla 9.1 Ubicaciones y masas de componente de vehículo
Objeto
Tornillo
Perno
Tuerca
Abrazadera
x,
metros
0.1
y,
metros
z,
metros
Masa
2.0
3.0
1.0
1.0
1.0
1.50 g ramos
1.5
0.2
0.5
0.79 gl'amo
2.0
2.0
4.0
1.75 gramos
3.50 gramos
Operaciones
Sección
http://jurgensoft.co.cc
9.1
Tabla 9.2 Cómo encontrar la coordenada x del centro de gravedad
Objeto
x,
metros
Masa, gramo
Tornillo
0.1
x
3.50
Perno
1.0
X
1.50
Tuerca
1.5
X
0.79
Abrazadera
2.0
X
1.75
gramo metros
=
0.35
=
1.50
=
=
1.1850
3.50
6.535
7.54
Suma
x x m,
3. Desarrolle un ejemplo a mano.
La coordenada x del centro de gravedad es igual a
3
2:
X
=
3
Ximi
_
l
_
i=_,--
Inrolal
2:
i=l
Ximi
3
2:
i=l
mil
de esre modo, a partir de la tabla 9.2,
x
4.
=
6.535
7.54
--
=
0.8667 metro
Note que la suma de los productos de las coordenadas x y las correspondientes masas se
podrían expresar como un producto punto.
Desarrolle una solución MATLAB.
El código MATLAB
% Ejempl o 9 . 1
mass = [3 . 5 , 1 . 5, 0 . 79, 1 . 75] ;
x= [O . l, 1, 1 . 5, 2] ;
x_bar=dot(x,mass) /sum(mass)
y= [2, 1, 0 . 2, 2 ] ;
y_bar=dot(y , mass) /sum (mass)
z= [3, 1, 0.5, 4] ;
z_bar=dot (z,mass) /sum (mass)
regresa el siguiente resultado:
x_bar =
0 . 8667
y_bar =
1 . 612 5
z_bar =
2 . 5723
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. La coordenada x parece ser
correcta, de modo que las coordenadas y y z probablemente también sean correctas.
Graficar los resultados también le ayudaría a evaluarlos:
pl ot3(x,y,z, 'o',x_bar,y_bar,z_bar, 's ')
g r i d on
y funciones de matrices
305
306
http://jurgensoft.co.cc
Capítulo 9 Álgebra matri cial
xl abel ('eje x')
yl abel ('eje y')
zl abel ('eje z')
t i tl e ('Centro de gravedad')
axi s ( [O.2.0.2,O.4] )
La gráfica resultante se muestra en la figura 9.2.
Ahora que se sabe que el programa funciona, se le puede usar para cualquier
número de objetos. El programa será el mismo para 3 componentes como para 3000
componentes.
Centro de gravedad
4
N
<l.l
3
üJ'2
1
Figura 9.2
o
2
Centro de gravedad de
algunos datos de muestra.
Esta gráfica se mejoró con
el uso de las herramientas de
graficación interactivas
deMATLAB.
2
Vectores fuer za
•
leA
___
--�
_
-_
B
Figura 9.3
Los vectores fuerza se usan
en el estudio de estática y
dinámica.
La estática es el estudio de las fuerzas en los sistemas que no se mueven (y, por tanto, están es­
táticos). Dichas fuerzas usualmente se describen como vectores. Si suma los vectores, puede
determinar la fuerza total sobre un objeto. Considere los dos vectores fuerza A y B que se
muestran en la figura 9.3. Cada uno tiene una magnitud y una dirección. Una notación típica
mostraría estos vectores como A y B, pero representaría la magnitud de cadá uno (su longitud
física) como A y B. Los vectores también se podrían representar en términos de sus magnitu­
des a lo largo de los ejes x, y y z, multiplicada por un vector unitario (l, J, k). Entonces
A=A) + A) + Al
y
B
=
B) + B) + Bl
El producto punto de A y B es igual a la magnitud de A por la magnitud de B, por el coseno
del ángulo entre ellos:
A'B AB
=
cos(e)
Secci ón
Operaciones
http://jurgensoft.co.cc
9.1
Encontrar la magnitud de un vector involucra el uso del teorema de Pitágoras. En el caso de
. tres dimensiones,
, Se puede usar MATLAB para resolver problemas como éste si se define el vector A como
A
�
=
[Ax
Ay
Az]
donde Ax, Ay y Az son las magnitudes componentes en las direcciones x, y y z, respectiva­
mente. Como problema MATLAB, use el producto punto para encontrar el ángulo entre los
siguientes dos vectoJ;es fuerza:
1.
2.
A
=
B
=
6j + 3k
17 + 3j + 2k
s7
+
Establezca el problema.
Encontrar el ángulo entre dos vectores fuerza.
Describa las entradas y salidas.
Entrada
Salida
A
=
si
+
6j + 3k
B
=
11
+
3j
+
2k
e, el ángulo entre los dos vectores
3. Desarrolle un ejemplo a mano.
A B
.
A
B
cos(e)
cos-1(e)
=
=
=
=
=
s 1 + 6· 3 + 3· 2 29
VS2 + 62 + 32 8.37
V12 + 3 2 + 22 3.74
A· BIAB 0.9264
.
=
=
=
=
0.386
4. Desarrolle una solución MATLAB.
El código MATLAB
%Ejempl o 9 . 2
%Encontrar el ángul o entre dos vectores fuerza
%Defi na l os vectores
A
[5 6 3 ] ;
B
[ 1 3 2];
%Cal cul e l a magni tud de cada vector
sqrt(sum (A.A2»;
mag_A
mag_B
sqrt(sum (B . Á2 »;
%Cal cul e el coseno de theta
cos_theta
dot(A , B) / (mag_A"'mag_B ) ;
%Encuentre theta
acos(cos_theta) ;
theta
%Envíe l os resul tados a l a ventana de comandos
fpr i ntf('El ángul o entre l os vectores es %4.3f radianes
\n ' , theta)
fpr i ntf('0%6.2f grados \n' , theta*180/p i )
=
=
=
=
=
=
y funciones de matrices
307
308
Capítulo 9
Álgebra matricial
http://jurgensoft.co.cc
genera la siguiente interacción en la ventana de comandos:
El ángul o entre l os vectores es 0 . 3 86 radianes
o 22.12 g rados
5.
Ponga a prueba la solución.
En este caso, sólo se reprodujo la solución a mano en MATLAB. Sin embargo, hacerlo
así da la confianza en el proceso de solución, de modo que se podría expandir el proble­
ma para permitir al usuario ingresar cualquier par de vectores. Considere este ejemplo.
%Ejempl o 9 . 2 - expandi do
%Encontrar el ángul o entre dos vectores fuerza
. %Defina l os vectores
di sp( 'las magn i tudes de l os componentes se deben i ngresar ')
di sp( 'en notaci ón matri c i al , i .e . ')
di sp( ' [ A B (]')
A
i nput( 'Ingrese l as magni tudes de l os componentes x y z
')
del vector A:
i nput( 'In grese l as magni tudes de l os componentes x y z
B
del vector B:
')
%Cal cul e l a magni tud de cada vector
sqrt(sum (A.A2»j
mag_A
mag_B
sqrt(sum(B.A2»j
%Cal cul e el coseno de theta
dot(A , B) j(mag_A*mag_B) j
cos_theta
%Encuentre theta
theta
acos(cos_theta) j
%Envíe l os resul tados a l a ventana de comandos
fpri ntf( 'El ángul o entre l os vectores es %4.3f radianes
\n ' , theta)
fpr i ntf( 'o %6.2f g rados \n ' ,theta*180jp i )
=
=
=
=
=
=
d a la siguiente interacción e n la ventana d e comandos:
las magni tudes de l os componentes se deben i ngresar
en notaci ón matri c i al , i .e.
[ A B (]
Ingrese l as magni tudes de l os componentes x y z del vector
A:
[1 2 3]
A
2
1
3
Ingrese l as magni tudes de l os componentes x y z del vector
B:
[4 S 6]
B
4
S
6
El ángul o entre l os vectores es 0 . 226 radianes
o 12 . 93 grados
=
=
Ejercicio d e prác tic a 9.1
l . Use la función dot para encontrar el producto punto de los siguientes vectores:
A
=
B
=
[1 2 34]
[12 20 15 7]
Sección
http://jurgensoft.co.cc
9.1
2. Encuentre el producto punto de ¡ y
B (sum(A.*B».
3.
Operaciones y funciones de motrices
309
B al sumar los productos arreglo de ¡ y
Un grupo de amigos fue a un establecimiento local de comida rápida.
Ordenaron cuatro hamburguesas a $0.99 cada una, tres refrescos a $ 1 .4 9 cada
uno, una malteada a $2.50, dos órdenes de papas fritas a $0.99 cada una y dos
órdenes de anillos de cebolla a
la cuenta.
9.1.3
$1.29.
Use el producto punto para determinar
Multiplicación matricial
La multiplicación matricial es similar al producto punto. Si usted define
A
B
[1 2 3]
[ 3;
4;
5]
entonces
A*B
ans
26
Idea clave: la
multiplicación matricial
produce el mismo resultado que
resulta en un arreglo en el
dot(A , B)
ans
26
que cada elemento es un
producto punto.
La multiplicación matricial resulta en un arreglo en el gue cada elemento es un producto
punto. El ejemplo anterior sólo es el caso más simple. E n
al tomar el producto punto de cada flla en la matriz
A
los resultados s e encuentran
con cada columna en la matriz
B.
Por
ejemplo, si
A
=
[
1 2 3;
4 5 6 ]
B
=
[
10
40
70
...
Y
20
50
80
30;
60;
90
]
entonces el primer elemento de la matriz resultante es el producto punto de la fila 1 de la
A y la columna 1 de la matriz B, el segundo elemento es el producto punto de la fila 1
A y la columna 2 de la matriz B, etcétera. Una vez que se encuentra el producto
punto para la primera fila de la matriz A con todas las columnas de la matriz B, se comienza
de nuevo con la fila 2 de la matriz A. Por ende,
matriz
de la matriz
e
;;;;
A*B
regresa
e
300
660
360
810
420
960
310
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
Considere el resultado en la fila 2, columna 2, de la matriz C. Se puede llamar a este resultado
C(2,2). Es el producto punto de la fila 2 de la matriz A y la columna 2 de la matriz B:
dot(A(2 , : )
ans =
810
Idea clave: la
multiplicación matricial
no es conmutativa.
conmutativa: el
orden de la operación no
importa
Esta relación se podría expresar en notación matemática (en lugar de sintaxis MATLAB) como
N
Ci,j
L Ai,kBk,j
k=1
Puesto que la multiplicación matricial es una serie de productos punto, el número de columnas
en la matrizA debe ser igual al número de filas en la matriz B. Si la matrizA es una matriz
m X n, la matriz B debe ser n X p, Y los resultados serán una matriz m X p. En este ejemplo,
A es una matriz 2X3 Y B es una matriz 3X 3. El resultado es una matriz 2 X3.
Una forma de visualizar este conjunto de reglas es escribir el tamaño de las dos matri­
ces uno j unto al otro, en el orden de su operación. En este ejemplo, se tiene
2 X3
3X3
Los dos números internos deben coincidir, y los dos números exteriores determinan el tamaño
de la matriz resultante.
En general, la multiplicación matricial no es conmutativa, lo que significa que, en
MATLAB,
A*B=f:.B*A
Se puede ver esto en el ejemplo: cuando se invierte el orden de las matrices, se tiene
3X3
2x3
y ya no es posible obtener el producto punto de las filas en l a primera matriz y las filas en la se­
gunda matriz. Si aml?1s matrices son cuadradas, de hecho se puede calcular una respuesta para
A* B Y una respuesta para B* A, pero las respuestas no son iguales. Considere este ejemplo:
A=[1 2 3
4 56
7 8 9];
B=[2 3 4
56 7
8 9 10]:
A*B
ans =
36
81
126
42
96
1 5
48
111
174
51
96
141
60
114
168
B*A
ans
42
78
114
Sección
Operaciones
http://jurgensoft.co.cc
9.1
9.1
se usó el producto punto para encontrar el centro de gravedad de un ve­
hículo espacial. También se podría usar la multiplicación matricial para hacer el cálculo en un
paso, en lugar de calcular cada coordenada por separado. En este ejemplo se repite la tabla
9.1
por claridad.
l. Establezca el problema.
Encontrar el centro de gravedad del vehículo espacial.
2. Describa las �ntradas y salidas.
Entrada
Ubicación de cada componente en un sistema coordenado x-y-z
Masa de cada componente
Salida
Ubicación del centro de gravedad del vehículo
3. Desarrolle un ejemplo a mano.
Se puede crear una matriz bidimensional que contenga toda la información acerca de
las coordenadas y una correspondiente matriz unidimensional que contenga informa­
ción acerca de la masa. Si hay
en una matriz 3 X
n
n
componentes, la información coordenada debe estar
y las masas deben estar en una matriz
n
X l. El resultado entonces
estaría en una matriz 3 X 1 que representa las coordenadas xyz del centro de gravedad
por la masa total.
4. Desarrolle una solución MATLAB.
% Ejempl o 9.3
coord =
2
[0.1
1
1
0.2
1.5
2
2
mass = [3.5 , 1 . 5 , 0 . 79 , 1 . 7 5 ] ';
l ocat;on=coord*mass/sum(mass)
3
1
0.5
4 ] ';
envía los siguientes resultados a la pantalla:
l ocat;on
0.8667
1.612 5
2.5723
5.
Ponga a prueba l a solución.
Los resultados son los mismos que los del ejemplo
Tabla 9.1
9.1.
Ubicaciones y masas de componente de vehículo
Objeto
x,
metros
y,
metros
%,
metros
311
·'''Mél·''·
Uso de la multiplicación matricial para encontrar el centro
de gravedad
En el ejemplo
y funciones de motrices
Masa
Tornillo
0.1
2.0
3.0
3.50 gramos
Perno
1.0
1.0
1.0
1.50 gramos
Tuerca
1.5
0.2
0.5
0.79 gramo
Abrazadera
2.0
2.0
4.0
1.75 gramos
312
C apítulo 9
Álgebra m atricial
http://jurgensoft.co.cc
Ejercicio d e práct ica 9.2
¿Cuáles de los siguientes conjuntos de matrices se pueden multiplicar entre sí?
1.A
2.
A
�
[� n
[� :]
B�
B =
Un
[�
3
2
[; �]
A
4. � U n B {]
3. A
[�
1
2
�]
�] B �
9
4
5
Demuestre que, para cada caso, A B '* B A.
•
9.1.4
Idea clave: una matriz
debe ser cuadrada para
elevarla a una potencia.
•
Potencias de matrices
Erevar una matriz a una potencia es equivalente a multiplicar la matriz por sí misma el número
de veces requerido. Por ejemplo, A2 es lo mismo que A. A, A3 es lo mismo que A . A. A. Al recor­
dar que el número de columnas en la primera matriz de una multiplicación debe ser igual al nú­
mero de filas en la segunda matriz se ve que, con la finalidad de elevar una matriz a una potencia,
la matriz debe ser cuadrada (tener el mismo número de filas y columnas). Considere la matriz
A [!
2
5
Si se intentara elevar al cuadrado esta matriz, se obtendría un enunciado de error porque las
filas y columnas no coinciden:
•
2 X 3
2 X 3
Sin embargo, considere otro ejemplo. El código
A=randn(3)
Idea clave: la
multiplicación matricial
y la multiplicación de
matrices son operaciones
diferentes y producen
resultados diferentes.
crea una matriz 3 X 3 de números aleatorios, tales como
A
- 1 . 3 36 2
0.7143
1 . 62 36
-0.6918
0.8580
1.2 540
-1. 5 9 3 7
- 1.4410
0.5711
9.1
Operacion es
Sección
http://jurgensoft.co.cc
Su gerencia
Recuerde que randn produce números aleatorios, de modo que su computadora
puede producir números diferentes a los que se mencionan aquí.
Si se eleva al cuadrado esta matriz, el resultado también es una matriz 3
A"2
ans =
- 1.2963
- 2.68 1 1
- 0 . 3463
- 1.667 7
- 1 .5 6 5 0
0.6690
X 3:
2 .2161
- 3 . 1978
-4.0683
Elevar una matriz a una potencia no entera da un resultado complejo:
AA1 . 5
ans "'"
- 1.8446 - 0 . 0247;
-0.7 5 5 2 + 0 . 02 8 3 ;
1.3 3 5 9 + 0.0067 ;
-1. 5 3 3 3 + 0 . 0 1 5 3 ;
0 . 0668
0 . 0 176;
1 . 5 2 92 - 0.0042;
-0.3 1 5 0 - 0.02 5 5;
- 3 .047 2 + 0.0292;
- 1 . 5 3 1 3 + 0.0069;
Note que elevar A a la potencia matricial de dos es diferente de elevar A a la potencia de
,
arreglo de dos:
e
= A.A2;
Elevar A a la potencia de arreglo de dos produee los siguientes resultados:
e
9.1.5
=
1 . 7854
0.5102
2 . 6361
0 . 4 7 86
0.7362
1 . 5725
2.5 399
2 .0765
0 . 3262
Inverso de matriz
En matemáticas, ¿qué se entiende cuando se dice "tomar el inverso"? Para una función, el
inverso "deshaee" la función o lo lleva de vuelta adonde se comenzó. Por ejemplo, sen-I(x) es
la función inversa de sen(x). Se puede demostrar la relación en MATLAB:
as; n (s; n ( 3 »
(Recuerde que la sintaxis MATLAB para el seno inverso
es asin.)
ans =
3
.....
Su gerencia
Recuerde que sen-l(x) no significa lo mismo que l/sen(x). Los textos de matemáticas
más actuales usan la notación sen-l(.\:), pero en su calculadora y en los programas de
cómputo sen-l(x) se representa como asen(x).
y funciones de motrices
313
314
C¿pítulo 9
Álgebra matricial
http://jurgensoft.co.cc
Otro ejemplo de funciones que son inversas es ln(x) y e':
log (exp (3))
(Recuerde que la sintaxis MA TLAB para el
logaritmo natural es log, no In.)
ans =
3
Pero, ¿qué significa tomar el inverso de un número? Una forma de considerarlo es que,
si usted operó sobre el número 1 al multiplicarlo por un número, ¿cómo podría deshacer esta
operación y obtener el número 1 de vuelta? Obviamente, necesitaría dividir por su número, o
multiplicar por 1 sobre el número. Esto conduce a la conclusión de que l/x y x son inversos,
pues
Idea clave: una
función por su inverso
es igual a uno.
1
-x =
x
Desde luego, éstos son inversos multiplicativos, en oposición a la función inversa que se dis­
cutió primero. (También hay inversos aditivos, como -a ya.) Finalmente, ¿cuál es el inverso
de urta matriz? Es la matriz por la que se necesita multiplicar, en álgebra matricial, para obte­
ner la matriz identidad. La matriz identidad consta de unos en la diagonal principal y ceros en
todas las otras posiciones:
,
La operación inversa es una de las pocas multiplicaciones matriciales conmutativa; esto es,
•
Con la finalidad de que el enunciado anterior sea verdadero, la matriz A debe ser cuadrada,
lo que conduce a la conclusión de que, para que una matriz tenga un inverso, debe ser cua­
drada.
Estos conceptos se
demostrar en MATLAB primero a! definir una matriz y
luego al experimentar con su comportamiento. La "matriz mágica", en la que la suma de las
filas es igual a la suma de las columnas, así como la suma de cada diagonal, es fácil de crear,
de modo que se le elegirá para el vhIJ'-'L1UU_IH'U.
A=mag; c (3)
A =
8
1
3
5
4
9
6
7
2
MATLAB ofrece dos enfoques para encontrar el inverso de una matriz. Se podría elevar A a
la potencia 1 con el código
AA_1
ans =
0.1472
- 0.0611
- 0.0194
-0 . 1444
0.0222
0.1889
0.0639
0.1056
-0.1028
9.1
Sección
Operaciones
http://jurgensoft.co.cc
y funciones de matrices
31 5
o se podría usar la función interna inv:
inv(A)
ans
0 . 1472
-0 . 0611
-0 . 019 4
=
-0 . 1444
0 . 02 2 2
0 . 1889
0 . 0639
0.1056
-0 . 102 8
Al usar cualquier enfoque, se puede demostrar que multiplicar el inverso de A por A produce
la matriz identidad:
inv(A)*A
ans
1.0000
O
O
Y
O
-0 . 0000
O
1 . 0000
0 . 0000
1 . 0000
.
A*inv(A)
ans
1 . 0000
-0 . 0000
0 . 0000
=
O
-0 . 0000
O
1 . 0000
O
1 . 0000
Determinar el inverso de una matriz a mano es difícil, por lo que se dejará dicho ejerci­
cio a un curso de matemáticas matriciales. Existen matrices para las que no existe un inverso;
estas matrices se llaman matrices singulares o matrices mal condicionadas. Cuando usted
intenta calcular el inverso de una matriz mal condicionada en MATLAB, se envía un mensaje
de error a la ventana de comandos.
La matriz inversa se usa ampliamente en álgebra matricial, aunque rara vez es la forma
más eficiente para resolver un problema desde un punto de vista computacionaL Esta materia
se discute ampliamente en cursos de álgebra lineal.
matriz singular:
matriz que no tiene
inverso
.
9.1.6
Determinantes
Los determinantes se usan en álgebra lineal y se relacionan con la matriz inversa. Si el determinante de una matriz es 0, la matriz no tiene inverso y se dice que es singular. Los determinantes se calculan al multiplicar los elementos a lo largo de las diagonales izquierda a derecha
de la matriz y restar el producto de las diagonales derecha a izquierda. Por ejemplo, para una
matriz 2 X 2
el determinante es
Por tanto, para
A
IAI
[! �J
(1)(4) - (2 )( 3 )
-2
Idea clave: si el
determinante es cero, la
matriz no tiene inverso.
316
Capítulo 9
Álgebra m atricial
http://jurgensoft.co.cc
MATLAB tiene una función detenninante interna. det, que encontrará el detenninante por
usted:
A= [l 2; 3 4] ;
det(A)
ans
-2
=
Imaginar las diagonales para una matriz 3 X
A
=
3
[��: ���
A31
A32
es un poco más difícil. Si copia las primeras dos columnas de la matriz en las columnas 4
5 se vuelve más fácil de ver. Multiplique cada diagonal izquierda a derecha y súmelas:
y
Luego multiplique cada diagonal derecha a izquierda y súmeJas:
Finalmente, reste el segundo cálculo del primero. Por ejemplo. puede tener
IAI
�
[� � n
- (3 X 5 X 7)
•
-
�
(1 X 5 X 9)
+
(1 X 6 X 8)
(2 X 6 X
7)
X 4 X 9)
=
+
(3 X 4 X 8)
225 - 225
=
O
Al usar MATLAB para el mismo cálculo se produce
A= [ 1 2 3; 4 5 6; 7 8 9];
det(A)
ans
O
Puesto que se sabe que las matriees con un detenninante cero no tienen inversos, vea lo que
ocurre cuando se pide a MATLAB encontrar el inverso de A*:
i nv(A)
Warning: La matriz está cerca de ser si ngular o está mal escalada.
1.S41976e-018.
los resultados pueden ser i mpreci sos. RCOND
=
ans =
1 . Oe+016 *
-0.4504
0.9007
-0.4504
* El mensaje de advertencia dice: la matriz está cerca de ser singular o está mal escalada. Los resultados
pueden ser imprecisos.
9.1
Sección
Operaciones
http://jurgensoft.co.cc
y funciones de matrices
317
Eiercicio de práctica 9.3
L Encuentre el inverso de las siguientes matrices mágicas, tanto con la función
inv como al elevar la matriz a la potencia -1:
a. magic(3)
b. magic(4)
c. magic(5)
2.
Encuentre el determinante de cada una de las matrices de la parte 1.
3. Considere la siguiente matriz:
¿Esperaría que fuera singular o no'? (Recuerde que las matrices singulares
tienen un determinante O y no tienen inverso.)
-1.8014
0 . 9 007
0 . 9 007
-0 . 4504
9.1.7
0.9 007
-0 . 4 504
Productos cruz
Los productos cruz a veces se llaman productos vectoriales porque, a diferencia de los produetos punto, que regresan un escalar, el resultado de un producto cruz es un vector. El vector
resultante siempre está en ángulos rectos (nonnal) al plano definido por los dos vectores entrada, una propiedad que se llama ortogonalidad.
Considere dos vectores en el espacio que representen tanto una dirección como una
magnitud. (La fuerza usualmente se representa de esta fonna.) Matemáticamente,
A
B
=
Axi
+
Ay}
B)
+
By} + B/;
+
Ai;
Los valores Ax, Ay, A_ Y B , B,
B_.. representan la magnitud del vector en las direcciones x, y
y
.,. ,..,.-;.
y z, respectivamente. Los símbolos i, j, k representan vectores unitarios en las direcciones
x, y y z. El producto cruz de A y R, A X R, se define como
..
x
Puede ver esta operación al crear una tabla
j
k
A x A y Az
Bx By Bz
y luego repetir las dos primeras columnas al final de la tabla:
i
j
Ax Ay
Bx By
k
j
Az Ax Ay
Bz Bx By
Idea clave: el
resultado de un producto
cruz es un vector.
ortogonal: en ángulos
rectos
318
C apítulo 9
Álg ebra matrici al
http://jurgensoft.co.cc
El componente del producto cruz en la dirección i se encuentra al obtener el producto A B
restarle el producto A,B,:
v
(J)
j
Z
Y
k
Al moverse a través del diagrama, el componente del producto cruz en la dirección j se en­
cuentra al obtener el producto A B, y restarle el producto A,B::
,
(j)
k
Por último, el componente del producto cruz en la dirección k se encuentra al obtener el pro­
ducto A,B, y restarle el producto A,B,:
j
�
®
Su geren c i a
Es posible que haya notado que el producto cruz sólo es un caso especial de un
determinante cuya primera fila se compone de vectores unitarios.
En MATLAB, el producto cruz se encuentra al usar la función cross, que requiere dos
entradas: los vectores A y B. Cada uno de estos vectores MATLAB debe tener tres elementos,
pues representan los componentes vectoriales en el espacio. Por ejemplo, se puede tener
A= [l 2 3] ;
(que representa A
=
B= [4 5 6] ;
(que representa B
=
(que representa C
=
cros s (A , B)
ans =
-3
6
-3
Ir + 21 + 3k)
4r + 51 + 6k)
-3r + 61 - 3k)
Considere dos vectores en el plano x-y (sin componente z):
A=[l 2 O]
B= [3 4 O]
La magnitud de estos vectores en la dirección z se necesita especificar como cero en MATLAB.
http://jurgensoft.co.cc
Sección
Operaciones
9.1
y funciones de matrices
319
El resultado del producto cruz debe estar en ángulos rectos al plano que contiene los
vectores
A
y
B,
componente z.
lo que dice que en este caso debe estar afuera del plano x-y, con sólo un
cross(A,B)
ans
O
O
-2
Los productos cruz tienen amplio uso en estática, dinámica, mecánica de fluidos y problemas
de ingeniería eléctrica.
-'UMOI·I'-
Momento de una fuerza en torno a un punto
El momento de una fuerza en relación con un punto se encuentra al calcular el producto cruz
de un vector que define la posición de la fuerza con respecto al punto, con el vector fuerza:
Considere la fuerza aplicada en el extremo de una palanca, como se muestra en la figura
9.4. Si se aplica una fuerza a la palanca cerca del punto pivote, el efecto es diferente que si se
aplica una fuerza más alejada sobre la palanca. Dicho efecto se llama momento.
Calcule el momento en tomo al punto pivote de una palanca para una fuerza descrita
como el vector
F
= -lOOr + 20} + Ok
Suponga que la palanca tiene 12 pulgadas de largo, a un ángulo de 45 grados desde la horizon­
tal. Esto significa que el vector posición se puede representar como
r
12 ..
12
..
= -i + -j + Ok
V2
V2
�
l. Establezca el problema.
Encontrar el momento de un vector fuerza en torno al punto pivote de una palanca.
F
Fuerza aplicada
i
I
I
I
jD
I
I
I
I
I
I
I
---------------- >'
Tx
Componentes del vector fuerza
Figura 9.4
Componentes del vector posición
Punto pivote
La fuerza aplicada a una palanca crea un momento en torno al punto pivote.
320
Capítulo 9
Álgebra matricial
2.
http://jurgensoft.co.cc
Describa las entradas y salidas.
Entrada
vector posición
vector fuerza
Salida
3.
...
r
....
12
12 ..
= V2 i + V2 j + Ok
�
F = -1007
+ 207 + Ok
Momento en tomo al punto pivote de la palanca
Desarrolle un ejemplo a mano.
Visualice el problema como el determinante de un arreglo 3 X
�
->
j
k
V2
V2
O
- 100
20
O
i
Mo =
12
Obviamente, no puede haber componentes
(
12
i
o
7 en la respuesta. El momento debe ser
12
12
Mo = V2 X 20 - V2 X (-100)
4.
3:
) ....k = 1018.23k....
X
Desarrolle una solución MATLAB.
El código MATLAB
%Ejempl o 9 . 4
%Momento en torno a un punto pi vote
%Defi na el vector poslclon
r = [12fsqrt(2) , 12fsqrt(2) , O] ;
%Defi na el vector fuerza
F = [-lOO, 20, O] ;
%Cal cul e el momento
moment=cross (r , F)
regresa el siguiente resultado:
moment
O
O
1018.2 3
Esto corresponde a un vector momento
Mo = oi
+
07 + 1018.23k
Note que el momento está en ángulos rectos a! plano definido por los vectores posición
y fuerza.
5. Ponga a prueba la solución.
Claramente, las soluciones a mano y MATLAB concuerdan, lo que significa que ahora
se puede expandir el programa a una solución más genera!. Por ejemplo, el siguiente
programa solicita a! usuario los componentes x, y y z de los vectores posición y fuerza
y luego calcula el momento:
Sección
Soluciones de sistemas de ecuaciones lineales
http://jurgensoft.co.cc
9.2
%Ejemplo 9.4
%Momento en torno a un punto pivote
%Defina el vector posición
clear,clc
rx=input ('Ingrese el componente x del vector posición: ') ;
ry=input('Ingrese el componente y del vector posición: ') ;
rz=input ('Ingrese el componente z del vector posición: ') ;
r = [rx, ry, rz] ;
disp('El vector posición es')
fprintf('%8 . 2f i +%8.2f j +%8.2f k ft\n',r)
%Defina el vector fuerza
Fx=input ('Ingrese el componente x del vector fuerza: ') ;
Fy=input('Ingrese el componente y del vector fuerza: ') ;
Fz=input ('Ingrese el componente z del vector fuerza: ') ;
F = [Fx, Fy, Fz] ;
disp ('El vector fuerza es ')
fprintf('%8.2f i + %8.2f j + %8.2f k lbf\n ' , F)
%Calcule el momento
moment=cross ( r,F) ;
fprintf ('El vector momento en torno al punto pivote es \n')
fprintf( '%8.2f i + %8.2f j + %8.2f k ft-lbf\n' ,moment)
Un ejemplo de interacción en la ventana de comandos es
Ingrese el componente x del vector posición: 2
Ingrese el componente y del vector posición: 3
Ingrese el componente z del vector posición: 4
El vector posición es
4.00 k ft
3.00 j +
2 . 00 i +
Ingrese el componente x del vector fuerza: 20
Ingrese el componente y del vector fuerza: 10
Ingrese el componente z del vector fuerza: 30
El vector fuerza es
20.00 i +
10.00 j +
30.00 k lbf
El vector momento en torno al punto pivote es
50.00 i +
20.00 j + -40.00 k ft-lbf
9.2 SOLUCIONES DE SISTEMAS DE ECUACIONES LINEALES
Considere el siguiente sistema de tres ecuaciones con tres incógnitas:
3x +2y -z
-x +3y +2z
x - y -z
10
5
-1
Este sistema de ecuaciones se puede rescribir con las siguientes matrices:
321
322
Capítulo 9 Álgebra matricial
http://jurgensoft.co.cc
Al usar multiplicación matricial se puede escribir entonces elsistema de ecuaciones
AX=B.
9.2.1
Solución con el uso de la matriz inversa
Probablemente laformamás directa de resolver este sistema de ecuaciones es usar la matriz
inversa.
se pueden multiplicar ambos lados de la ecuación matricialAX
B porA-1 para obtener
lo que produce
Como en todas las matemáticas matriciales,
A es una matriz
3 X 3,
su inversoA -1 también es una matriz 3 X 3. La multiplicaci6nA
3 X 3
3xl
funciona porque las dimensiones coinciden.
orden aBA ··· 1, las dimensiones
Puesto que enMATLAB lamatriz inversa se calcula con lafuncióninv, se puede usar
el siguiente conjunto de comandos para resolver este problema:
A=[3 2 -1; -1
8=[10: 5; -1];
X = inv(A)*B
3
2; 1
-1
-1];
Este código regresa
•
X =
-2.0000
5.0000
-6.0000
De manera alternativa,
lo que regresa
X =
-2.0000
5.0000
-6.0000
Aunque esta técnica corresponde bien con el enfoque que se considera en las clases de álgebra
cuando se introducen las matrices,
redondeo.
de ecuaciones.
Sección
Sol uciones de sistemas de ecuaciones li neales
http://jurgensoft.co.cc
9.2
Resolución de ecuaciones simultáneas: un circuito eléctrico*
·jUMél·I"
Al resolver un problema de circuito eléctrico, uno se encuentra rápidamente empantanado en
una gran cantidad de ecuaciones simultáneas. Por ejemplo, considere el circuito eléctrico que se
, muestra en la figura 9.5. Contiene una sola fuente de voltaje y cinco reóstatos. Puede analizar este
. circuito al dividirlo en partes más pequeñas y usar dos hechos básicos en tomo a la electricidad:
¡ voltaje alrededor de un circuito debe ser cero
Voltaje
=
corriente
X
resistencia (V iR)
=
Seguir el lazo inferior izquierdo resulta en la primera ecuación:
Seguir el lazo superior resulta en la segunda ecuación:
Finalmente, seguir el lazo inferior derecho resulta en la última ecuación:
Dado que se conocen todas las resistencias (los valores R) y el voltaje, se tienen tres ecuacio­
nes y tres incógnitas. Ahora se necesita reordenar las ecuaciones de modo que estén en una
forma en la que se pueda aplicar una solución matricial. En otras palabras, se úecesita aislar
las íes del modo siguiente:
(Rz + R4)i1 + (-R2)iz + (-R4)i3 Ví
(-R2)i1 + (R1 + Rz + R3)iz + (-R3)i}
(-R4)i1 + (-R3)iz + (R3 + R4 + Rs)i3
=
=
O
=
O
Cree un programa MATLAB para resolver estas ecuaciones con el método de matriz inversa.
Permita al usuario ingresar cinco valores de R y el voltaje desde el teclado.
l.
Establezca el problema.
Encontrar las tres corrientes para el circuito que se muestra.
+
V¡
Figura 9.5
Un circuito eléctrico.
*Tomado de
lntroduction lo MATlAB 7, de Etter, Kuncicky y Moore (Upper Saddle River, NJ: Pearson
,
··
2005).
Prentice Hall,
323
324
Capítulo 9
Álgebra matricial
http://jurgensoft.co.cc
2 . Describa las entradas y salidas.
Entrada
Cinco resistencias
teclado
Salida
3.
RI' Rz' R3,R4, Rs y el voltaje V, proporcionados desde ei
Tres valores de corriente
il, i2, i3
Desarrolle una solución a mano.
Si no hay voltaje aplicado en el circuito, puede no haber corriente, de modo que si se
ingresa algún valor para las resistencias y se ingresa cero para el voltaje, la respuesta
debe ser cero.
4.
Desarrolle una solución MATLAB.
E l código MATLAB
,
%Ejemplo 9 . 5
%Encont rar corrientes
clear , clc
Rl
input('Ingrese el valor de
R2
input ( 'Ingrese el valor de
R3
input ( 'Ingrese el valor de
R4
input ( 'Ingrese el valor de
input ( 'Ingrese el valor de
RS
input('Ingrese el valor del
V
[ ( R2+R4) , -R2 , - R4;
coef
-R2 , ( Rl + R2 + R3 ) , ( - R 3 ) ;
- R4 , - R3 , ( R3 + R 4 + RS) ] ;
result
[V; O; O] ;
inv(coef) *result
1
=
=
=
=
Rl: ') ;
R2: ') ;
R3: ') ;
R4: ' ) ;
RS: ') ;
voltaje , V: ') ;
=
.
=
=
genera la siguiente interacción en la ventana de comandos:
el
el
el
el
el
el
Ingrese
Ingrese
Ingrese
Ingrese
Ingrese
Ingrese
1
valor
valor
valor
valor
valor
valor
de Rl: S
de R2: S
de R3: S
de R4: S
de RS: S
del voltaje, V:
O
=
O
O
O
S. Ponga a prueba la solución.
A propósito se eligió ingresar un voltaje de cero con la finalidad de comprobar la solu­
ción. Los circuitos sin fuerza impulsora (voltaje) no pueden tener un flujo de corriente
a través de ellos. Ahora intente el programa con otros valores:
Ingrese
Ingrese
Ingrese
Ingrese
Ingrese
Ingrese
el
el
el
el
el
el
valor
valor
valor
valor
valor
valor
de Rl: 2
de R2: 4
de R3: 6
de R4: 8
de RS: 10
del voltaje, V:
En conjunto, estos valores producen
1
=
1 . 69
0.97
0.81
10
.
Sección
Soluciones de sistemas de ecuaciones lineales
http://jurgensoft.co.cc
9.2
325
9.2.2 Solución con división izquierda de matriz
Una mejor forma de resolver un sistema de ecuaciones lineales es usar una técnica llamada
eliminación gaussiana. En realidad ésta es la forma en que usted probablemente aprendió a
resolver sistemas de ecuaciones en el álgebra de bachillerato. Considere el problema de tres
ecuaciones en x, y y z:
3x +2y
-x
x
10
5
-z
+ 3 y +2z
-y -z
-1
Para resolver este problema a mano, se considerarían primero las dos primeras ecuaciones
en el cqnjunto y se eliminaría una de las variables, por ejemplo, x. Para hacer esto necesitará
multiplicar la segunda ecuación por 3 y luego sumar la ecuación resultante a la primera:
3x +2y
O
10
-z
+ l 1 y + 5z
25
=
Ahora se necesita repetir el proceso para la segunda y tercera ecuaciones:
5
+ 2z
-x
-1
4
En este punto, se eliminó una variable y el problema se redujo a dos ecuaciones
nitas:
11y
dos incóg­
25
4
2y + z
Ahora se puede repetir el proceso de eliminación al multiplicar la fila 3 por
1 112:
25
11
_ 11 * 4'
2
1
-z
2
O
y
2
3
Finalmente, se puede resolver para z:
z
-6
Una vez que se conoce el valor d e z , s e puede sustituir d e vuelta e n cualquiera de las dos ecua­
ciones con sólo z y y, a saber,
1 1y +5z
2y +z
para encontrar que
y
5
25
4
Idea clave: la
eliminación gaussiana es
más eficiente y menos
susceptible a error de
redondeo que el método
de matriz inversa.
326
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
El último paso es sustituir de nuevo en una de las cuatro ecuaciones originales,
3x + 2y -z
-x + 3y + 2z
x -y -z
10
5
-1
para encontrar que
x =
eliminación
gaussiana: enfoque
-2
La técnica d e eliminación gaussiana es u n enfoque organizado para eliminar variables hasta
que sólo existe una incógnita y luego sustituir de nuevo hasta que se determinan todas las
organizado para eliminar
incógnitas. En MATLAB se puede usar división izquierda para resolver el problema por eli­
variables y resolver un
minación gaussiana. En consecuencia,
conjunto de ecuaciones
x
simultáneas
=
A\B
regresa
x
-2 . 0000
5 . 0000
-6 . 0000
Obviamente, éste es el mismo resultado que se obtuvo con la solución a mano y el enfoque de
matriz inversa. En un problema simple como éste, el error de redondeo y el tiempo de ejecu­
ción no son grandes factores para determinar cuál enfoque usar. Sin embargo, algunas técnicas
numéricas requieren la solución de matrices con miles o incluso millones de elementos. Los
tiempos de ejecución se miden en horas o días para estos problemas, y el error de redondeo y
el tiempo de ejecución se convierten en consideraciones cruciales.
No todos los sistemas de ecuaciones lineales tienen una solución única. S i existen
menos ecuaciones que variables, el problema está subespecificado. Si hay más ecuaciones que
variables, el problema está sobreespecificado. MATLAB incluye funciones que le permitirán
resolver cada uno de estos sistemas de ecuaciones al usar enfoques numéricos de mejor ajuste
o agregar restricciones. Consulte la función help de MATLAB para más infOlmación acerca
de estas técnicas.
·'''MAI·I't
Balanc e de materia en una unidad de desalinización:
resolución de ecuaciones s imultáneas
El. agua fresca es un recurso escaso en muchas partes del mundo. Por ejemplo, Israel soporta
una moderna sociedad industrial en medio de un desierto. Para complementar los recursos '
acuíferos locales, I srael depende de las plantas de desalinización de agua a lo largo de la
costa mediterránea. Estimaciones actuales predicen que la demanda por agua fresca en Israel
aumentará 60% hacia el año 2020, y la mayoría de esta nueva agua tendrá que venir de desali­
nización. Las modernas plantas desalinizadoras usan ósmosis inversa, ¡ el proceso que se usa
en diálisis renal ! Los ingenieros químicos usan ampliamente cálculos de b alance de materias
para diseñar y analizar plantas como las desalinizador.a s de agua en I sraeL
Considere la hipotética unidad de desalinización que se muestra en la figura 9.6. El
agua salada que fluye en la unidad contiene
4 %w de sal y 96
%w de agua. Dentro de la uni-
Sección
Soluciones de sistemas de ecuaciones lineales
http://jurgensoft.co.cc
9.2
XH2 0
xNa CI
I
ment
=
1 00 ¡bm
-------l)o�
XH20
XNaCI
=
=
0 .96
marriba
=
=
1 .00
0.00
= ? ¡bm
1 Unidad de
desalinización
0 . 04
Figura 9.6
I
mabajo
XH20
xNaCl
=
=
=
? ¡b m
0.90
0. 1 0
dad, el agua se separa en dos corrientes mediante una serie de operaciones de ósmosis inversa.
La corriente que fluye por arriba casi es agua pura. La restante solución concentrada de agua
salada es 1 0 %w de sal y 90 %w de agua. Calcule las tasas de flujo de masa que vienen de
arriba y abajo de la unidad de desalinización.
Este problema requiere la realización de un balance de materias en el reactor tanto
para sal como para agua. La cantidad de cualquier componente que fluye en el reactor debe
ser el mismo que la cantidad de dicho componente que fluye en las dos corrientes de salida.
Esto es,
nl
entA
=
marribaA + mabajoA
que se podría reescribir como
XAment total
==
xAarribamarri ba + XAabajOm abajo
Por ende, se puede formular este problema como un sistema de dos ecuaciones con dos in­
cógnitas:
0 .96 X 1 00
=
0.04 X 1 00
1 .00marriba + 0.90mabajO
=
O . OOmarriba + O. l Om abajo
(para agua)
(para sal)
1 . Establezca el problema.
Encontrar la masa de agua fresca que se produce y la masa de salmuera eliminada de la
unidad de desalinización.
2. Describa las entradas y salidas.
En/rada
Masa de 1 00 lb en el sistema
Concentraciones (fracciones de masa) de la corriente de entrada:
XNaC1
=
0 . 04
327
La desalinización de agua
es una importante fuente
de agua fresca para
naciones desérticas como
Israel.
328
Capítul o 9
http://jurgensoft.co.cc
Álgebra matricial
Concentraciones (fracciones de masa) en las comentes de salida;
corriente rica en agua (arriba)
XH20
=
1 .00
salmuera (abajo)
XH20
XNaC1
Salida
= 0.90
=
0 . 10
Masa de salida de la corriente rica en agua (arriba)
Masa de salida de la salmuera (abajo)
3. DeslUTolle un ejemplo a mano.
Dado que la sal (NaCl) está presente sólo en una de las corrientes de salida, es fácil .
resolver el siguiente sistema de ecuaciones:
(0 . 96)( 100)
=
1 .00m arriba + 0.90m abaio
(0 . 04)( 1 00) = O . OOm arrib a + O . l Om abaio
(para agua)
(para sal)
Si comienza con el balance de materia sal, se encuentra que
4
=
O . l m abajo
m abajO = 40 lbm
Una vez conocido el va10r de m aba o' se puede sustituir de nuevo en el balanceo de agua:
j
96 = 1 m arriba + (0.90)(40)
marriba = 60 lb
4 . Desarrolle una solución MATLAB.
Se puede usar matemáticas matriciales para resolver este problema una vez se dé cuenta
¡
de que es de la forma
AX = B
•
donde A es la matriz coeficiente y, por tanto, las fracciones de masa del agua y la sal. La
matriz resultado, B, consiste en la tasa de flujo de masa en el sistema de agua y sal:
A
=
[�
0.9
0.1
]
La matriz de incógnitas, X, consiste en las tasas de flujo de masa totales que salen de
arriba y abajo de la unidad de desalinización. El uso de MATLAB para resolver este
sistema de ecuaciones requiere sólo tres líneas de código:
A
B
X
[ 1 , 0 . 9; O , 0 . 1] ;
[96; 4] ;
A\B
Este código regresa
X
=
60
40
http://jurgensoft.co.cc
Sección 9.3
5. Ponga a prueba la solución.
Note que en este ejemplo se eligió usar división izquierda matricial. Usar el enfoque de
matriz inversa produce el mismo resultado:
X=i nv(A) * B
X
60
40
Los resultados de ambos enfoques coinciden con el del ejemplo a mano, pero se puede
hacer una comprobación adicional para verificar los resultados. El balance de materia
se realizó con base en agua y sal, pero se puede realizar un balanceo adicional sobre la
masa total qut entra y sale del sistema:
menl = 40 + 60 = 1 00
Verificar que realmente salen del sistema 1 00 lbm sirve como una confirmación más de
.
que se realizaron los cálculos correctamente.
Aunque fue sencillo resolver a mano el sistema de ecuaciones de este problema,
la mayoría de los cálculos de balance de materias reales incluyen más corrientes de
proceso y más componentes. Las soluciones matriciales como la que se creó son una
importante herramienta para los ingenieros de procesos químicos.
9.3 MATRICES ESPECIALES
MATLAB contiene un grupo de funciones que generan matrices especiales, algunas de las
cuales se discuten en esta sección.
9.3.1
Unos y ceros
Las funciones ones y zeros crean matrices que consisten por completo en unos y ceros,
respectivamente. Cuando se usa una sola entrada, el resultado es una matriz cuadrada. Cuando
se usan dos entradas, especifican el número de filas y columnas. Por ejemplo,
ones (3)
regresa
ans
1
1
1
1
1
1
1
1
1
O
O
O
O
y
zeros (2 , 3)
regresa
ans
o
O
Matrices especiales
329
330
Capítulo 9
Álgebra matricial
http://jurgensoft.co.cc
Si en eualquier función se especifican más de dos entradas, MATLAB crea una matriz multi­
dimensional. Por ejemplo,
ones(2 , 3 , 2 )
ans( : , : , 1)
1 . 00
1 . 00
=
ans( : , : , 2)
1 . 00
1 . 00
1 . 00
1 . 00
1 . 00
1 . 00
1.00
1 . 00
1 . 00
1 . 00
=
crea una matriz tridimensional con dos filas, tres columnas y dos páginas .
•
9.3.2
Matriz identidad
Una matriz identidad es una matriz con unos en la diagonal principal y ceros en todas las demás
ubicaciones. Por ejemplo, la siguiente matriz es una matriz identidad con cuatro filas y cuatro
columnas:
Note que la diagonal principal es la diagonal que contiene los elementos en los que el número
de fila es el mismo que el número de columna. Los subíndices para los elementos en la diago­
nal principal son ( 1 ,1), (2,2), (3,3), etcétera.
En MATLAB, las matrices identidad se pueden generar con la función eye. Los argu­
mentos de la función eye son similares a los de las funciones zeros y one'l . S i el argumento de
la función es un escalar, como en eye(6), la función generará una matriz cuadrada, usando el
argumento tanto como el número de filas como el de columnas. S i la función tiene dos argu­
mentos escalares, como en eye(m,n), la función generará una matriz con m filas y n columnas.
Para generar una matriz identidad que sea del mismo tamaño que otra matriz, use la función
size para determinar el número correcto de filas y columnas. Aunque la mayoría de las apli­
caciones usan una matriz identidad cuadrada, la definición se puede extender a matrices no
cuadradas. Los siguientes enunciados ilustran estos casos:
•
A
A
eye(3)
=
1
O
O
B
B
O
O
1
O
O
O
1
eye(3 , 2)
=
1
O
O
O
O
C
C
O
=
1
[1 , 2 , 3 ; 4 , 2 , 5]
=
1
4
=
2
2
3
5
eye(s; ze(C))
=
1
O
O
1
O
O
http://jurgensoft.co.cc
Sección 9 . 3 Matrices especiales
s
Se recomienda que no nombre una matriz identidad i, porquc i ya no representará
v=i en algún enunciado que siga.
Recuerde que A * inv(A) es igual a la matriz identidad. Esto se puede ilustrar con los siguien­
tes enunciados:
A=[1 , O , 2; - 1 ,
A =
1
-1
5
4 , - 2 ; 5 , 2 , 1]
.
2
-2
1
O
4
2
i nv(A)
ans =
- 0.2222
0.2500
0 . 61 1 1
-0.1 1 1 1
0.2500
0.0 5 56
0 . 2222
0.0000
-0.11 1 1
A*i nv(A)
ans =
1.0000
-0.0000
-0.0000
O
1.0000
-0.0000
0.0000
0 . 0000
1.0000
Como se discutió anteriormente, la multiplicación matricial en general no es conmutativa;
esto es,
AB * BA
Sin embargo, para matrices identidad
AI = IA
que se puede demostrar con el siguiente código MATLAB :
1
=
eyeO )
1
1
O
O
O
1
O
O
O
1
A*I
ans =
1
-1
5
O
4
2
2
-2
1
I*A
ans =
1
-1
5
O
4
2
2
-2
1
331
332
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
9.3.3
Otras matrices
MATLAB incluyen algunas matrices que son útiles para atestiguar técnicas numéricas, que
sirven en algoritmos computacionales o que sólo son interesantes.
pascal
pascal (4)
ans =
1 . 00
1 . 00
1 . 00
1 . 00
crea una matriz Pascal, con el
uso del triángulo de Pascal
magi c
1 . 00
2 . 00
3 . 00
4 . 00
1 . 00
3 . 00
6 . 00
10 . 00
1 . 00
5 . 00
9 . 00
6 . 00
7 . 00
2 . 00
1 . 00
4 . 00
10 . 00
20 . 00
mag i c (3)
crea una matriz mágica,
e n l a que todas las filas,
todas las columnas y
ans =
8 . 00
3 . 00
4 . 00
todas las diagonales
suman el mismo valor
rosser
ros ser
ans
[8 x 8]
La matriz Rosser se usa
como una matriz de
=
valores propios de prueba.
No requiere entrada.
gal l ery
La galería contiene más de
50 diferentes matrices
La sintaxis de pedido para las funciones gallery es
de prueba.
cuál es correcta para sus necesidades.
diferente para cada función. Use help para determinar
4IIIijii" ft'itlll�--Una de las operaciones matriciales más comunes es la transposición, que cambia filas a columnas y columnas a filas. En los textos de matemáticas, el transpuesto se indica con un superíndi­
ce T, como enAT. En MATLAB, se usa el apóstrofe como el operador transponer. Por tanto,
A'
es la transpuesta de A.
Otra operación matricial común es el producto punto, que es la suma de las multiplica­
ciones de arreglo de dos vectores de igual tamaño:
C
N
=
2: A¡ * B¡
¡=l
La función MATLAB para el producto punto es
dot (A , B)
Similar al producto punto es la multiplicación matricial. Cada elemento en el resultado de una
multiplicación matricial es un producto punto:
C¡,j
N
=
2: A¡.kBk,j
k=l
L a multiplicación matricial usa e l operador asterisco e n MATLAB, d e modo que
e
= A*B
http://jurgensoft.co.cc
indica que la matriz A se multiplica por la matriz B en concordancia con las reglas del álgebra
matricial. La multiplicación matricial no es conmutativa; esto es,
AB =I= BA
Elevar una matriz a una potencia es similar a múltiples pasos de multiplicación:
Dado que una matriz debe elevarse al cuadrado para multiplicarse por ella misma, sólo las
matrices cuadradas sc pueden elevar a una potencia, Cuando las matrices se elevan a poten­
cias no enteras, el resultado es una matriz de números complejos.
Una matriz por s u inverso es la matriz identidad:
.
MATLAB proporciona dos técnicas para determinar una matriz inversa: la función inv, con
lo cual
y elevar la matriz a la potencia - 1 , dada por
Si el determinante de una matriz es cero, la matriz es �iU'E> Y'� y no tiene inverso. La función
MATLAB que se usa para encontrar el determinante es
det (A)
Además de calcular productos punto, MATLAB contiene una función que calcula el producto
cruz de dos vectores en el espacio. El producto cruz con frecuencia se llama producto vecto­
rial porque regresa un vector:
e
A X B
El producto cruz produce un vector que está en ángulos rectos (normal) a los dos vectores de
entrada, una propiedad llamada ortogonalidad. Los productos cruz se pueden considerar como
el determinante de una matriz compuesta de los vectores unitarios en las direcciones x, y y z y
los dos vectores de entrada:
�
c =
..
i
j
Ax
Ay
Bx
By
->
k
Bz
La sintaxis MATLAB para calcular un producto cruz usa la función eross:
e
=
c ross (A , B)
Un uso común de la matriz inversa es resolver sistemas de ecuaciones lineales. Por ejemplo,
el sistema
3x +2y
-z
-x
+3 y
+2z
x
-y
-z
10
5
-1
Resumen
333
334
C apítul o 9 Álgebra matricial
http://jurgensoft.co.cc
se puede expresar con matrices como
AX = B
Para resolver este sistema de ecuaciones con MATLAB , podria multiplicar
de
B
por el inverso
A:
x = i nv (A) * B
Sin embargo, esta técnica e s menos eficiente que la eliminación gaussiana, que se logra en
M ATLAB con el uso de la división izquierda:
x
=
A\B
.
MATLAB incluye algunas matrices especiales que se pueden usar para realizar cálculos más
fáciles o para probar técnicas numéricas. Por ej emplo, las funciones ones y zeros se pueden
usar para crear matrices de unos y ceros, respectivamente. Las funciones
pascal
y
magic
se usan para crear matrices Pascal y matrices mágicas, respectivamente, ninguna de las
cuales tiene algún uso c omputacional particular, pero son matemáticamente interesantes.
La función gallery contiene más de 50 matrices especialmente formuladas para probar téc­
nicas numéricas.
RESU M EN MATLAB
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
Caracteres especiales
*
\
A
indica una matriz transpuesta
multiplicación matricial
división izquierda matricial
exponenciación matricial
Comandos Y funciones
cross
•
calcula el producto cruz
det
calcula el deternlÍnante de una matriz
eye
genera una matriz identidad
dot
gal l ery
i nv
mag i c
ones
pascal
s i ze
calcula el producto punto
contiene matrices muestra
calcula el inverso de una matriz
crea una matriz "mágica"
crea una matriz que contiene todos unos
crea una matriz Pascal
determina el número de filas y columnas
cn una matriz
zeros
TÉRMINOS CLAVE
crea una matriz que contiene todos ceros
deternlÍnante
normal
sistema de ecuaciones
eliminación gaussiana
ortogonal
transponer
inverso
producto cruz
vector unitario
matriz identidad
producto punto
multiplicación matricial
singular
http://jurgensoft.co.cc
Productos punto
9.1
Calcule el producto punto de los siguientes pares de vectores y luego demuestre que
(a) A [1 3 5] , B [ - 3 - 2 4]
(b) A = [O - 1 - 4 - 8] , B [4 - 2 - 3 24]
9.2
9.3
9.4
Calcule la masa total de los componentes que se muestra en la tabla 9.3, con un pro­
ducto punto.
Use un producto punto y la lista de compras de la tabla 9.4 para determinar su cuenta
total en la tienda.
Los calorímetros de bomba se usan para determinar la energía liberada durante reac­
ciones químicas. La capacidad calorífica total de un calorímetro de bomba se define
como la suma de los productos de la masa de cada componente y la capacidad calorí­
fica específica de cada componente, o
n
CP
2:m¡Ci
i=l
donde
m,
e,
CP
=
masa del componente i, g
capacidad calorífica del componente, i, llg, K
capacidad calorífica total, l/K
Encuentre la capacidad calorífica total de un calorímetro de bomba con los datos tér­
micos que se muestran en la tabla 9.5.
Tabla 9.3
Propiedades de masa de componente
Componente
Densidad
Propelente
1 .2 glcm
Acero
7.8 glcm
Aluminio
Tabla 9.4
2.7 g/cm
Volumen
3
3
700 cm
3
200 cm
3
3
3
300 cm
Lista de compras
Artículo
Número necesario
Costo
leche
2 galones
$3.50 por galón
Huevos
1 docena
$ 1 .25 por docena
Cereal
2 cajas
$4.25 por caja
Sopa
5 1alas
$ 1 .55 por lata
Galletas
1 paquete
$3. 1 5 por paquete
Problemas
335
336
Capítulo 9 Álgebra matricial
http://jurgensoft.co.cc
Tabla 9.5
Datos térmicos
��
Ma_
Capacidad calorífica
250 9
0.45 J/gK
Acero
1 00 9
Agua
10g
Aluminio
9.5
4.2 J/gK
0.90 J/gK
Los compue s tos orgán
icos es tán cons tituidos principal me nte de carbono,
oxí ge no,
•
lar
(MW)
de e ualquie r compues toes l as uma de l os productos del nú me ro de átomos
de cadae e
l m
e nto(2) y el pes o atómico(AW) de cadaele m
e nto pr
e se nte e nel com­
pue s to.
MW
n
2:AW¡ ' Z¡
i=l
Los pes os atóm
icos de l carbono,
16, res pe ctiv ame nte . Use un producto punto para de e
t rmi nar el pes o mole cul a
r d
el
9.6
e tanol (C2HPH), que i
te ne dos car bonos, un ox íge noy se is átomos de h idróge no.
Confre cue nciaes útil pe ns ar que e l aire es unas olas us tancia con un pes o mole cular
( mas a mol ar) de e
t r minada por un prome dio ponde rado de l os pes os mole cul ares de
los dife re nte s gases pre se nte s e nel aire .
mole cul ar de lai e
r s ól o conel us o de nitró ge no, oxí ge noy dióx ido de carbonoe n los
e álcul os. Use un producto puntoy la tabl a9 . 6 para aprox imarel pes o mole cular del
aire .
Multiplicación matricial
9.7
Calcule e l producto matri cialA *B de los s iguie nte s pares de matri ces:
(a) A
= [132
(b) A
4
-5
3
4
] B = [� l� J
B
[ -1232 -28 ]
4
=
De mue s tre q ue A *B noes lomis moq ue B*A .
9.8
Us e
t dy un amigov an a una tie nda. Sus lis tas s on las que se mues trane n l a
Tabla 9.6
Composición del aire
Fl'CICCión en cRre�
Peso n'I�
Nitrógeno, N2
0.78
28 g/mol
Oxígeno, 02
0.2 1
32 g/mol
Dióxido de carbono, C02
0.01
44 g/mol
http://jurgensoft.co.cc
Tabla 9.7
Lista de compras de Ann y Fred
;CCJntjelod que
necesito Frecl
leche
2 golones
3 galones
Huevos
1 doceno
2 docenas
Cereal
2 cajas
1 caja
Sopa
5 latas
4 latas
Galletas
1 paquete
3 paquetes
Los artículos tienen los siguientes costos:
Ál'tÍCUle
9.9
Costo
Leche
$3.50 por galón
Huevos
$ 1 .25 por docena
Cereal
$4.25 por caja
Sopa
$1.55 por lata
GaJletas
$3. 1 5
Encuentre l a factura total para cada comprador.
Con un calorímetro de bomba se realizó una serie de experimentos. En cada experi­
mento se usó una cantidad diferente de agua. Calcule la capacidad calorífica total para
el calorímetro en cada uno de los experimentos. mediante multiplicación matricial, los
datos de la tabla 9.8 y la información aeerca de la capacidad calorífica que sigue a la
tabla.
Tabla 9.8
Propiedades térmicas de un calorimetro de bomba
Experimento
......
.
� de
a9�«.
1 10 g
250 9
109
2
1 00 g
250 9
109
3
1 01 9
250 9
10 9
4
98.6 9
250 9
109
5
99.4 9
250 9
109
C�DeDte
Capacidad calorífica
Acero
0045 J/gK
Agua
4.2 J/gK
Aluminio
0.90 J/gK
Problemas
337
338
Capítulo 9 Algebra matricial
http://jurgensoft.co.cc
Tabla 9.9
9.10
Composición de alcoholes
NomI:t,.
Carbono
Hidrógeno
Metanol
Etanol
Propanol
Butanol
Pentanol
1
4
2
6
3
8
4
10
5
12
El peso molecular (MW) de cualquier compuesto es la suma de los productos del
.número de átomos de cada elemento (2) y el peso atómico (AW) de cada elemento
presente en el compuesto, o
MW
n
¿:AW¡ · Zi
i=l
En la tabla 9.9 se mencionan las composiciones de los primeros cinco alcoholes de
cadena recta. Use los pesos atómicos del carbono, hidrógeno y oxígeno ( 1 2, I Y 16,
respectivamente) yla multiplicación matricial para determinar el peso molecular (más
correctamente llamada masa molar) de cada alcohol.
Exponenciación matricial
9.1 1
Dado el arreglo
A =
[
-1
4
�]
(a) Eleve A a l a segunda potencia mediante exponeneiación d e arreglo. (Consulte
help si es necesario.)
(h) Eleve A a la segunda potencia mediante exponenciación matricial.
(e) Explique por qué las respuestas son diferentes.
9.12
Cree un arreglo 3X 3 llamado A mediante la función pascal:
pascal (3)
(a) Eleve A a la tercera potencia mediante exponenciación de arreglo. (Consulte help
si es necesario.)
(h) Eleve A a la tercera potencia mediante exponenciación matricial.
(e) Explique por qué las respuestas son diferentes.
•
Determinantes e inversos
9.13
9.14
Dado el arreglo A
1 3; 2], calcule el determinante de A tanto a mano como con
4
MATLAB.
Recuerde que no todas las matrices tienen inverso. Una matriz es singular (es decir: no
tiene inverso) si su determinante es igual a O (es decir, IAI O). Use la [unción determi­
nante para probar si cada una de las siguientes matrices tiene inverso:
A
=
[!
]
-1
5 '
B
Si existe un inverso, calcúle1o.
e
http://jurgensoft.co.cc
Problemas
339
Prod uctos cruz
9.15
Calcule el momento de fuerza en tomo al punto pivote para la palanca que se muestra
en la figura P9 . 1 5 . Necesitará usar trigonometría para determinar los componentes x
y y tanto del vector posición como del vector fuerza. Recuerde que el momento de
fuerza se puede ealcular como el producto cruz
Mo = r
9.16
9.17
F = 200lbf
X F
Una fuerza de 200 lbf se apliea verticalmente en una posición a 20 pies sobre la palan­
ca. La palanca se ubica en un ángulo de 60° desde la horizontal.
Detennine el momento de fuerza en tomo al punto donde una ménsula se une a la pared.
La ménsula se muestra en la figura P9. 1 6. Se extiende 1 0 pulgadas desde la pared y 5
pulgadas hacia arriba. Se aplica una fuerza de 35 lbf sobre la ménsula, a un ángulo de
55° desde la vertical. Su respuesta debe estar en ft-Ibf, de modo que necesitará hacer
algunas conversiones de unidades.
Una repisa rectangular se une a una pared mediante dos ménsulas separadas 12 pulga­
das en los puntos A y B, como se muestra en la figura P9 . 1 7 . ljn alambre con un peso
de 1 0 lbf unido cuelga del borde de la repisa en el punto C. Detennine el momento de
fuerza en tomo al punto A y en tomo al punto B causado por el peso en el punto C.
Puede formular este problema al resolverlo dos veces, una por cada ménsula,
o al crear una matriz 2 X 3 para el vector posición y otra matriz 2 X 3 para el vector
fuerza. Cada fila debe corresponder a una ménsula diferente. La función cross regresa­
rá un resultado 2 X 3, donde cada fila corresponda al momento en tomo a una ménsula
separada.
5
Fuerza aplicada
i
Punto pivote
Figuro
P9. 1 5
Momento de fuerzo que
actúa sobre una palanca
en torno 01 origen.
Pared
pulgadas
---- 10 pulgadas ----00- 1
A
�2 pulgadas
____,..
_
Figuro
P9. 1 6
Ménsula unida o una
pared.
2 pulgadas
B _
Figuro
P9. 1 7
Cólculo del momento de
fuerzo en tres d i mensiones.
340
Capítulo 9
http://jurgensoft.co.cc
Álgebra matricial
Resol ució n de sistem as de ec uaciones li neales
9.18
Resuelva los siguientes sistemas de ecuaciones, tanto con división izquierda matricial
como con el método de matriz inversa:
Ca)
eh)
(e)
9.19
-2x + y = 3
x + y = lO
Sx + 3y - z = 10
3x + 2y + Z = 4
4x - y + 3z = 12
3x + y + Z + w = 24
x - 3y + 7z + w = 12
2x + 2y - 3z + 4w = 17
x+y+z+w=O
En general, la división izquierda matricial es más rápida y más precisa que tomar la
matriz inversa. Con ambas técnicas, resuelva el siguiente sistema de ecuaciones y el
tiempo de ejecución con las funciones tic y toe:
3Xl + 4X2
2Xl -2X2
Xl +2X2
SXl + 10x2
3Xl +2X2
-2Xl +9X2
Xl -2X2
9;20
+2X3 -X4
+3X3 -4X4
+3X3 +X4
+4X3 + 3X4
-2X3 -4X4
+X3 +3X4
-8X3 +4X4
+xs +7X6
+Sxs +2X6
+2xS +4X6
+9xS -2xó
-SXS - 6X6
-3xS +SX6
+2xS +4X6
+x7 = 42
+8X7 = 32
+6X7 = 12
+X7 = -S
+7X7 = 10
+X7 = 18
+SX7 = 17
Si tiene una computadora más nueva, puede encontrar que este problema se ejecuta tan
rápidamente que no podrá detectar una diferencia entre las dos técnicas. Si es así, vea
si puede formular un problema más grande para resolverlo.
En el ejemplo 9.S se demostró que el circuito de la figura 9.5 se podría describir me­
diante el siguiente conjunto de ecuaciones lineales:
(R2 + R4 )i1 + ( - R2)i2 + ( -R4 )i3 = Vi
( - R2)i1 + (Rl + R2 + R3)i2 + ( - R3)i3 = O
( -R4 )il + (-R3 )i2 + (R3 + R4 + Rs)i3 = O
9.21
Este conjunto de ecuaciones se resolvió con el enfoque de matriz inversa. Vuelva a
hacer el problema, pero esta vez use el enfoque de división izquierda.
Considere un proceso de separación en el que una corriente de agua, etanol y metanol
ingresa a una unidad de proceso. Dos corrientes salen de la unidad, cada una con can­
tidades variables de los tres componentes. (Véase la figura 9.21.)
http://jurgensoft.co.cc
.
I
�ent
=
marriba
=
34 1
?
XH,O
=
0.20
xEtanol =
Metanol
100
XH,O 0.50
XEtanol X
XMetanol 1
Problemos
x
0.35
0.45
=
=
=
=
-
0.5
-
x
I
.
m abajo
XH20
=
=
XEtanol
y
0.65
0.25
= 0.10
=
XMetanol
Detennine las tasas de flujo de masa en
unidad de separación.
?
afuera del sistema por arriba y abajo de la
(a) Primero configure las ecuaciones de balance de materia para cada uno de los tres
componentes:
(0.5)(100) = 0.2maniba 0 .65mabaio
+
50 = 0 .2maniba + 0 .65mabaio
100x = 0. 35maniba 0 .25mabaio
+
0 = -IOOx + 0 .35marriba 0 .25m abaio
+
Metanol
100( 1 - 0.5 - x) = 0.45marriba O. l mabaio
50 = 100x + 0.45maniba O. l mabaio
+
+
(h) Ordene las ecuaciones que encontró en la parte (a) en una representación ma­
tricial:
A
=
[�
0.2 0.65
- OO 0.35 0.25
100 0.45 0.1
]
(e) Use MATLAB para resolver el sistema lineal de tres ecuaciones.
Figura
P9.2 1
Proceso de separación con
tres componentes.
http://jurgensoft.co.cc
•
http://jurgensoft.co.cc
Otros tipos de arreglos
- �--
'-
�.oi,-
oDi��.i,*?&�<ú' :',
INTRODUCCiÓN
.
......
Oes�cl� teer este capitulo,
'
etolumno será capaz 4e
•
éOinpt;en�fos a��tes
fipos�do1&S u�en
'.
... . •
•.
MAlli.Ált:; "'
�Y�;rr;gf& ,i"'.
�¡�o& y.t:prOit��
.�I'arrégl�
molJi{limet{siOll01es y.
.·;.
'
acceder a t10t0Sérl�ichos.
crea un escalar,
:
8=1:10;
crea un vector y
(= [1 , 2 , 3 ; 4 , 5 , 6] ;
..
arreglo&..creafyvsór��stél#o.
y�Strl}ct�t"Pi�
A=l;
e;
..····
•.
En MATLAB las matrices escalares, vectoriales y bidimensionales se usan para alma­
cenar datos. En realidad. todas ellas son bidimensionales. Por tanto, aun cuando
•.
crea una matriz bidimensional, todas ellas son todavía arreglos bidimensionales. Note en
la figura 10.1 que el tamaño de cada una de estas variables se menciona como una matriz
1 X 1 bidimensional para A. 1 X 10 para B y 2 X 3 para C. La clase que se menciona
para cada una también es la misma: cada una es "double" (doble), que es abreviatura de
número punto flotante de doble precisión.
MATLAB también incluye la capacidad de crear matrices multidimensionales
y almacenar datos que no son dobles, como los caracteres. En este capítulo se intro­
ducirán los tipos de datos soportados por MATLAB y se explorará cómo pueden ser
almacenados y usados por un programa.
10.1
TIPOS DE DATOS
El tipo de datos (también llamado clase) principal en MATLAB es el arreglo o matriz.
Dentro del arreglo. MATLAB soporta algunos tipos diferentes de datos secundarios.
Dado que MATLAB se escribió en e, muchos de estos tipos de datos son paralelos a
los tipos de datos soportados por C. En general, todos los datos dentro de un arreglo
deben ser del mismo tipo. Sin embargo, MATLAB también incluye funciones para
convertir entre tipos de datos y tipos de arreglos, para almacenar diferentes tipos de
datos en el mismo arreglo (arreglos celda y estructura).
Los tipos de datos que se pueden almacenar en MATLAB se mencionan en la
figura 10.2. Ellos incluyen los tipos: datos numéricos, datos carácter, datos lógicos y
344 Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
[1 2 3 4 5 6 7 B 9 ...
BO
[1 2 3;4 5 6]
2x3
4B
5
1x1
4
10
1x1
5+i'3
h:1
5+i"3
1x1
double
double
single
1 intB
clouble (comple::i)
16
2
intB (complex)
'Holly'
1x5
10
'Matlab is fun'
1x13
26 char
<1x1 sym>
1x1
<1x3 logical>
1x3
char
sym
134
3
logical
<1000x1000 doub... 1000... BOOO ...
double
1x1
1
20
double (sparse)
Figura 10.1
MATLAB soporta varios
tipos de arreglos.
I
I
I
I
I
Carácter
I
Lógico
I
I
•
En MATLAB se pueden
almacenar muchos tipos
diferentes de datos.
I I
I
I
I
múltiples
múltiples
tipos
tipos
enteros
enteros
con signo
sin signo
I
Numérico
I
I
I
Entero
I
Figura 10.2
I
Tipos de datos almacenados en matrices MATLAB
I
Objetos simbólicos
-Cajas de herramientas
simbólicas
Punto flotante
I
I
precisión
sencilla
1
complejo
11
I
I
precisión
doble
real
I
1
datos simbólicos. Cada uno de estos tipos se puede almacenar en arreglos específicamente
diseñados para dicho tipo de datos o en arreglos que pueden almacenar una variedad de datos.
Los arreglos celda y estructura caen en esta categoría (figura 10.3).
10.1.1 Tipos de datos numéricos
Números punto flotante precisión doble
IEEE: Instituto de
Ingenieros Eléctricos
y Electrónicos (por sus
siglas en inglés)
El tipo de datos numérico por defecto en MATLAB es el número punto flotante de precisión
doble, como lo define el Estándar IEEE 754. Recuerde que, cuando se crea una variable como
A, como en
A
=
1;
Sección 10.1
http://jurgensoft.co.cc
Tipos de datos
345
Tipos de datos MATLAB (tipos de arreglo)
I
I
I
Arreglos
I
Arreglos
Arreglos
Arreglos
Arreglos
Arreglos
carácter
lógicos
numéricos
simbólicos
celda
I
I
I
Entero
I
I
I
Punto flotante
I
estruc tu ra
I
.
múltiples
múltiples
precisión
precisión
tipos
tipos
sencilla
doble
enteros
enteros
con signo
sin signo
Los arreglos celda
-
Otros tipos, incluidos tipos
definidos por el usuario
y JAVA
y estructura
pueden almacenar diferentes
tipos de datos en
el mismo arreglo
la variable mencionada en la ventana del área de trabaj o y la clase es "doble", como se mues­
tra en la figura 10, l. Note que el arreglo requiere 8 bytes de espacio de almacenamiento. Cada
byte es igual a 8 bits, así que el número 1 requiere 64 bits de espacio de almacenamiento.
También en la figura 10.1 note cuánto espacio de almacenamiento se requiere para las varia­
bles B y C:
B
= 1: 1 0¡
( = [1, 2, 3¡ 4,5, 6]¡
La B requiere 80 bytes, 8 para cada uno de los 10 valores almacenados, y C requiere 48
bytes, de nuevo 8 por cada uno de los 6 valores almacenados.
Puede usar las funciones realmax y realmin para determinar el máximo valor posible
de un número punto flotante de precisión doble:
rea l max
a ns =
1 . 7977e+ 308
rea l mi n
a ns =
2 . 2251 e- 308
Si intenta ingresar un valor cuyo valor absoluto es mayor que realmax, o si calcula un
número que está afuera de este rango, MATLAB asignará un valor de± infinito:
x = 5 e400
x =
I nf
Figura 10.3
MATlAB soporta múltiples
tipos de datos, todos los
cuales son arreglos.
Idea clave: MATLAB
soporta múltiples tipos de
datos.
346 Capítulo 10 Otros tipos de arreglas
http://jurgensoft.co.cc
De igual modo, si intenta ingresar un valor cuyo valor absoluto es menor que realmin,
MATLAB asignará un valor de cero:
x =le- 400
x
o
Idea clave: los
números de precisión
sencilla requieren la
mitad de espacio de
almacenamiento que los
números de precisión
doble.
Números punto flotante de prec:is;ón senc:illa
Los números punto flotante de precisión sencilla son nuevos en MJ.\TLAB 7. Sólo usan la
mitad del espacio de almacenamiento de un número de precisión doble y, por tanto, sólo alma­
cenan la mitad de información. Cada valor requiere sólo 4 bytes, o 4 X 8 32 bits de espacio
de almacenamiento, como se muestra en la ventana del área de trabajo de la figura 10.1 cuan­
do se define D como un número de precisión sencilla:
=
.
D =s ingl e ( 5)
D =
5
Es necesario usar la función single para cambiar el valor 5 (que es precisión doble por
defecto) a un número de precisión sencilla. De igual modo, la función double convertirá una
vanable a una doble, como en
d ou bl e(D)
que cambia la variable D en una doble.
Dado que a los números de precisión sencilla se les asigna sólo la mitad del espacio de
almacenamiento, no pueden cubrir un rango de valores tan grande como los números de preci­
sión doble. Se pueden usar las funciones realmax y realmin para mostrar esto:
real max (' sing l e')
an s =
3. 4028e+ 038
real min (' singl e')
an s =
1.1 75 5e- 038
Idea clave: los
números de precisión
doble son apropiados
para la mayoría de
las aplicaciones
de ingeniería.
Los ingenieros rara vez necesitarán convertir a números de precisión sencilla, porque las
computadoras actuales tienen mucho espacio de almacenamiento para la mayor parte de
las aplicaciones y ejecutarán la mayoría de los problemas que se planteen en tiempos extrema­
damente cortos. Sin embargo, en algunas aplicaciones de análisis numérico puede mejorar el
tiempo de corrida de un problema largo al cambiar de precisión doble a sencilla. No obstante,
note que esto tiene la desventaja de hacer del error de redondeo más que un problema.
Se puede demostrar el efecto del error de redondeo en problemas de precisión sencilla
ejemplo: considere la serie
frente a precisión doble con el
1
1
+ ..... +
1
2
1
3
+
1
4
+
1
5
+
1
6
+ ... +
1
n
+ ...
Una serie es la suma de una secuencia de números, y esta serie partícular se llama serie
que se representa con la siguiente notación abreviada:
armónica,
,",00 1
�n=ln
La serie armónica diverge; esto es: sólo se hace más grande cuanto más términos le sume.
Puede representar los primeros 10 términos de la secuencia armónica con los siguientes comandos:
n=I:1O;
harmon i c=l . /n
http://jurgensoft.co.cc
Sección 10.1
Puede ver los resultados como fracciones si cambia el formato a racional:
format rat
ha rmon;c
1/2
1
1/3
1/4
l/S
1/6
1/7
1/8
1/9
1/10
o puede usar el formato corto, que muestra representaciones decimales de los números:
format short
harmonic =
1.0000 0.5000
0.1250
0.3333
0.1111
0.2500
0.1000
0.2000
0.1667
0.1429
No importa c6mo se desplieguen los valores en la pantalla, se almacenan como núme­
ros punto flotante de precisión doble dentro de la computadora. Al calcular las sumas parcia­
les, se puede ver cómo cambia el valor de la suma de estos números conforme se suman más
términos:
partial_sum=cumsum(harmonic)
part;al_sum =
Columns 1 through 6
2.0833
1.8333
1.5000
1.0000
Columns 7 through 10
2.9290
2.7179
2.8290
2.5929
La función suma acumulativa
(cumsum)
2.2833
2.4500
calcula la suma de los valores en el arreglo
hasta el número de elemento desplegado. Por tanto, en el cálculo anterior, el valor en la co­
lumna 3 es la suma parcial de los valores en las columnas de la 1 a la 3 del arreglo de entrada
(en este caso, el arreglo llamado harmonic). No importa cuán grande se haga el arreglo armó­
nico, las sumas parciales continúan aumentando.
El único problema con este proceso es que los valores en harmonic siguen haciéndose
cada vez más pequeños. Eventualmente, cuando n es lo suficientemente grande, lJn es tan
pequeño que la computadora no lo puede distinguir de cero. Esto ocurre mucho más rápida­
mente con representaciones de precisión sencilla de números que con precisión doble. Esta
propiedad se puede demostrar con un gran arreglo de
n
valores:
n=1:1e7;
harmonic=l./n;
partial_sum=cumsum(ha rmonic);
(Probablemente calcular esto le tomará a su computadora algún tiempo.) Todos estos cálculos
se realizan con números de precisión doble, porque la precisión doble es el tipo de datos por
defecto en MATLAB. Ahora se podrían graficar los resultados, pero realmente hay dema­
siados números (lO millones, de hecho). Se puede seleccionar cada valor milésimo con el
siguiente código:
m=1000: 1000: 1e7;
partial_sums_selected=partial_sum(m);
plot(partial_sums_selected)
Ahora se pueden repetir los cálculos, pero cambie a valores de precisión sencilla. Es
posible que deba limpiar la memoria de su computadora antes de este paso, dependiendo de
cuánta memoria esté disponible en "Su sistema. El código es
n=single(l:1e7);
harmon;c=1./n;
Tipos de datos
347
348
Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
Comparación de cálculos de precisión doble y sencilla
18 ,-----�----��--�--,
Figura 10.4
El error de redondeo
degrada el cálculo de
la serie armónica para
números de precisión
sencilla más rápido que
para números de precisión
doble.
4000
2000
6000
8000
10,000
Número de pasos*looo
partial_sum=cumsum(harmonic);
m=1000:1000:le7;
partial_sums_selected=partial_sum(m);
hold on
plot(partial_sums_selected,':')
Idea clave: el error
de redondeo es un
problema más grande en
los cálculos de precisión
sencilla que en los de
precisión doble.
Los resultados se presentan en la figura 10.4. La línea sólida representa las sumas par­
ciales calculadas con precisión doble. La línea rayada representa las sumas parciales calcu­
ladas con precisión sencilla. El cálculo de precisión sencilla se nivela porque se alcanza el punto
donde cada término sucesivo es tan pequeño que la computadora lo establece igual a cero.
Para valores de precisión doble todavía no se alcanza dicho punto.
Enteros
Una novedad en MATLAB son los muchos tipos de números enteros. Tradicionalmente, los
enteros se usan como números de conteo. Por ejemplo, no puede haber 2.5 personas en una
habitación, y usted no puede especificar el elemento número 1.5 en un arreglo. MATLAB
soporta ocho tipos diferentes de enteros, que difieren uno de otro en cuánto espacio de alma­
cenamiento se asigna al tipo y si los valores tienen signo o no. Cuanto mayor sea el espacio de
almacenamiento, más grande será el valor del número entero que puede usar. Los ocho tipos
se muestran en la tabla 10.1.
Dado que 8 bits es un byte, cuando se asigna E como un int8 con el código
,E=int8(10)
E =
10
requiere sólo 1 byte de almacenamiento, como se muestra en la figura 1 0. 1 .
Tabla 10.1
Tipos enteros MATLAB
entero con signo de 8 bits
entero con signo de 16 bits
entero con signo de 32 bits
entero con signo de 64 bits
¡nt8
int16
int32
int64
entero sin signo de 8 bits
entero sin signo de 16 bits
entero sin signo de 32 bits
entero sin signo de 64 bits
uint8
uint16
uint32
uint64
http://jurgensoft.co.cc
Sección 10.1
Tipos de dotos 349
Se puede detenmnar el valor máximo de cualquiera de los tipos enteros con el uso de la
función intmax. Por ejemplo, el código
intmax('int8')
ans '"
127
indica que el valor máximo de un entero con signo de 8 bits es 127.
Los cuatro tipos de entero con signo asignan espacio de almacenamiento para especifi­
car si el número es más o menos. Los cuatro tipos de entero sin signo suponen que el número
es positivo y, por tanto, no necesita almacenar dicha información, 10 que deja más espacio
para almacenar valores numéricos. El código
intmax('u;nt8' )
ans =
255
revela que el valor máximo de un entero sin signo de 8 bits es 255.
Los arreglos enteros encuentran uso en arreglos que se utilizan para almacenar infor­
mación de imagen. Dichos arreglos usualmente son muy grandes, pero con frecuencia se usa
un número limitado de colores para crear la imagen. Almacenar la inforniación como arreglos
enteros sin signo reduce dramáticamente el requerimiento de almacenamiento.
Números complejos
El tipo de almacenamiento por defecto para números complejos es doble; sin embargo, se
necesita el doble de espacio de almacenamiento porque se deben almacenar los componentes
real e imaginario.
F=5+3i;
Por tanto, se requieren 16 bytes (= 128 bits) para almacenar un número complejo doble.
Los números complejos también se pueden almaccnar como sencillos o enteros (véase la figu­
ra 10.1), como ilustra el siguiente código:
G =int8(S+3i);
Eje r c i c i o d e prác t i c a 10.1
1. Ingrese la siguiente lista de números en arreglos de cada uno de los tipos de
datos numéricos [1,4,6;3,15,24;2,3,4]:
a. punto flotante precisión doble: llame a este arreglo A
b. punto flotante precisión sencilla: llame a este arregloB
c.
entero con signo (escoja un tipo): llame a este arreglo C
d. entero sin signo (escoja un tipo): llame a este arreglo D
2. Cree una nueva matriz E al sumar A aB:
E =A+B
¿De qué tipo de dato es el resultado?
3. Defina x como un tipo de datos entero igual a 1 y Y como un tipo de datos
entero igual a 3.
a. ¿ Cuál es el resultado del cálculo x/y?
b. ¿Cuál es el tipo de datos del resultado?
Idea clave: con
frecuencia, los datos
enteros se usan para
almacenar datos de
imagen.
350
Capítulo 10
http://jurgensoft.co.cc
Otros tipos de arreglos
c. ¿Qué ocurre cuando realiza la división, cuando x se define como el entero
2 y Y como el entero 3?
4. Use intmax para determinar cuál es el número más
que puede definir
para cada uno de los tipos de datos numéricos. (Asegúrese de incluir los ocho
tipos de datos enteros.)
5. Use MATLAB para detenninar cuál es el número más pequeño que puede
definir para cada uno de los tipos de datos numéricos. (Asegúrese de incluir
los ochos tipos de datos enteros.)
10.1.2 {latos carácter y cadena
'dea clave: cada carácter,
Además de almacenar números, MATLAB puede almacenar información carácter. Los após­
incluidos espacios, es un
trofes se usan para identificar una cadena y diferenciarla de un nombre de variable. Cuando
elemento separado en
usted escribe la cadena
un arreglo carácter.
H= 'Holly' ;
se crea un arreglo carácter 1 X 5. Cada letra es un elemento separado del arreglo, como se
indica por el código
H(S)
ans =
y
Cualquier cadena representa un arreglo carácter en MATLAB. Por tanto,
ASCII: American
K = 'MATLAB ís fun '
Standard Code for
se convierte en un arreglo carácter 1 X 13. Note que los espacios entre las palabras cuentan
InfOlmation (código
como caracteres. Note también que el nombre de columna en la figura 10.1 despliega un sím­
estándar americano para
bolo que contiene las letras "abe", que indican que H y K son arreglos carácter. Cada carácter
información), código
estándar para intercambio
en un arreglo carácter requiere 2 bytes de espacio de almacenamiento.
Toda la información en las computadoras se almacena como una serie de ceros y unos.
de información entre
Existen dos esquemas de codificación principales para hacer esto, llamados ASCII y EBCDIC.
computadoras
La mayoría de las computadoras pequeñas usan el esquema de codificación ASCII, mientras
que muchas unidades centrales (mainframes) y supercomputadoras usan EBCDIC. Puede pen­
EBCDIC: Extended
sar en la serie de ceros y unos como un binario, o número de base 2. En este sentido. toda la
Binary Coded Decimal
información de computadora se almacena numéricamente. Todo número de base 2 tiene un
Interchange Code (código
equivalente decimal. En la tabla 10.2 se muestran algunos números en cada base.
ampliado de intercambio
decimal codificado a
binario); código estándar
para intercambio de
Tabla 10.2 Conversiones binario a decimal
S.se 2
(binario)
Base 10 (decimal)
información entre
computadoras
binario: esquema de
codificación que usa sólo
ceros y unos
10
2
11
3
100
4
101
5
110
6
111
7
1000
8
http://jurgensoft.co.cc
Sección 10.1
Cada carácter ASCII (o EBCDIC) almacenado tiene tanto representación binaria como
equivalente decimal. Cuando se pide a MATLAB cambiar un carácter a uno doble, el número
que se obtiene es el equivalente decimal en el sistema de codificación ASCII. Por tanto, se
puede tener
double('a')
ans =
97
Por el contrario, cuando se usa la función char en uno doble, se obtiene el carácter
representado por dicho número decimal en ASCII; por ejemplo,
char(98)
ans
b
Si, por otra parte, se intenta crear una matriz que contenga tanto infonnación numérica
como infonnación carácter, MATLAB convierte todos los datos a infonnación carácter:
['a' ,3]
ans =
aD
(El símbolo rectangular es el equivalente ASCII del número decimal 3.)
Por otra parte, si se intenta realizar cálculos matemáticos con infonnación numérica y
carácter, MATLAB convierte el carácter a su equivalente decimal:
'a' + 3
ans =
100
Dado que el equivalente decimal de 'a' es 97, el problema se convierte en
97
+
3
=
100
Ejercicio de práctica 10.2
l . Cree un arre glo carácter que conste de las letras de su nombre.
2. ¿Cuál es el equivalente decimal de la letra g?
3. Las letras mayúsculas y minúsculas tienen una separación de 32 en equivalente
decimal. (Las mayúsculas están primero.) Con funciones anidadas, convierte la
cadena 'matlab' en el equivalente mayúsculo, 'MATLAB'.
10.1.3
Datos simbólicos
La caja de herramientas simbólica usa datos simbólicos para realizar cálculos algebraicos
simbólicos. Una fonna de crear una variable simbólica es usar la función sym:
l=sym(' xA2-2')
l =
xA2-2
Los requisitos de almacenamiento para un objeto simbólico dependen de cuán grande sea
el objeto. Sin embargo, note en la figura 10.1 que L es un arreglo 1 X 1. Subsecuentes objetos
Tipos de datos
351
352
Capítulo 10
http://jurgensoft.co.cc
Otros tipos de arreglos
simbólicos se pueden agrupar en un arreglo de expresiones matemáticas. El icono variable sim­
bólica que se muestra en la columna izquierda de la figura 10.1 es un cubo.
10.1.4 Datos lógicos
Idea clave: los
Los arreglos lógicos pueden parecer como arreglos de unos y ceros porque MATLAB (así
programas de cómputo
como otros lenguajes de computación) usan dichos números para denotar verdadero y falso:
usan el número ° para
M=[true,false,true]
M
1
o
1
indicar falso y el número 1
para indicar verdadero.
NI? obstante, usualmente uno no crea arreglos lógicos de esta forma. Por lo general, son
resultado de operaciones lógicas. Por ejemplo,
x=1:5;
y=[2,O,l,9,4];
z=x>y
regresa
z =
O
1
1
O
1
Esto se puede interpretar como que x>y es falso para los elementos 1 y 4, Y verdadero
para los elementos 2, 3 Y 5. Estos arreglos se usan en funciones lógicas y usualmente incluso
no los ve el usuario. Por ejemplo,
find(x>y)
ans
2
3
s
dice que los elementos 2, 3 Y 5 del arreglo
x
son mayores que los correspondientes elemen­
tos del arreglo y. Por tanto, no tiene que analizar los resultados de la operación lógica usted
mismo. El ícono que representa arreglos lógicos es una marca de verificación (figura 10.1).
10.1.5 Arreglos esparcidos
Tanto los arreglos de precisión doble como los lógicos se pueden almacenar en matrices llenas
o como matrices esparcidas. Las matrices esparcidas están "escasamente pobladas", lo que
significa que muchos o la mayoría de los valores en el arreglo son cero. (Las matrices identi­
dad son ejemplos de matrices esparcidas.) Si se almacenan arreglos esparcidos en el formato
de matriz llena, toma 8 bytes de almacenamiento por cada valor de dato, sea cero o no. El for­
mato de matriz esparcida sólo almacena los valores distintos de cero y recuerda dónde están,
estrategia que ahorra mucho espacio.
Por ejemplo, defina una matriz identidad 1 000 X 1 000, que es una matriz de 1 millón
de elementos:
N = eye(lOOO);
A 8 bytes por elemento, toma 8 MB almacenar esta matriz. Si se le convierte a una matriz
esparcida, se puede ahorrar algo de espacio. El código para hacer esto es
p= sparse(A);
¡Note en la ventana del área de trabajo que el arreglo P sólo requiere 16,004 bytes! Las
matrices esparcidas se pueden usar en cálculos tal como las matrices llenas. El icono que re­
presenta un arreglo esparcido es un grupo de líneas diagonales (figura 10.1).
http://jurgensoft.co.cc
Sección 10.2
10.2
Arreglos multidimensionales
353
ARREGLOS MULTIDIMENSIONALES
Cuando surge la necesidad de almacenar datos en arreglos multidimensionales (más que bidi­
mensionales), MATLAB representa los datos con páginas adicionales. Suponga que le gusta­
ría combinar los siguientes cuatro arreglos bidimensionales en un arreglo tridimensional:
Idea clave: MATLAB
soporta arreglos en más
de dos dimensiones.
x=[1,2,3:4,5,6];
y=10*x;
z=10*y;
w=10*z;
Necesita definir cada página por separado:
my_3D_array(:,:,l)=x;
my_3D_array(:,:,2)=y;
my_3D_array(:,:.3)=z;
my_3D_array(:,:,4)=w;
Lea cada uno de los enunciados previos como todas la filas, todas las columnas, página 1,
etcétera.
Cuando llama my 3D a rray con el código
_
_
el resultado es
my_3D_array
my_3D_array(:,:,1)
1
2
3
4
5
6
my_3D_array(:,:.2)
10 20 30
40 50 60
rny_3D_array(:,:,3)
100 200 300
400 500 600
rny_3D_array(:,:,4)
2000
1000
5000
4000
=
=
=
3000
6000
Un arreglo multidimensional se puede visualizar como se muestra en la figura 10.5. En
una forma similar se pueden crear arreglos de dimensiones incluso mayores.
Columnas
I
Figura 10.5
Páginas
Los arreglos
multidimensionales se
agrupan en páginas.
354
Capítulo 10
http://jurgensoft.co.cc
Otros tipos de arreglos
Ejercicio de práctica 10.3
1. Cree un arreglo tridimensional que consista en un cuadrado mágico de 3 X 3,
una matriz de ceros 3 X 3, Y una matriz de unos 3 X 3.
A(m,n,p) para determinar cuál número está en la
fila 3, columna 2, página 1 de una matriz creada en el problema lo
2. Use triple indexación como
3. Encuentre todos los valores en la fila 2, columna 3 (en todas las páginas) de
la matriz.
4. Encuentre todos los valores en todas las filas y páginas de la
matriz.
10.3
ARREGLOS CARÁCTER
Se pueden crear arreglos carácter bidimensionales sólo si el número de elementos en cada fila
es el mismo. Por tanto, una lista de nombres como la siguiente no funcionará, porque cada
nombre tiene un número diferente dc caracteres:
Q=[' Holly' ¡' Steven' ¡' Meagan' ¡ 'David' ; ' Michael' ; ' Heidi' ]
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.
La función char "ajusta" un arreglo carácter con espacios, de modo que cada fila tenga
el mismo número de elementos:
Q=char(' Holly' ,' Steven' ,' Meagan' ,' David' ,' Michael' ,' Heidi' )
Q=
Holly
Steven
Meagan
David
Michael
Heidi
Q es un arreglo carácter 6 X 7. Note que, entre cada cadena en la función char, se usan
comas.
En un arreglo carácter MATLAB no sólo se pueden almacenar caracteres alfabéticos. Cua­
lesquiera de los símbolos o números que se encuentran en el teclado se pueden almacenar como
caracteres. Se puede sacar ventaja de esta caractenstica para crear tablas que parezca que incluyen
información carácter y numérica, pero que el realidad están compuestas sólo de caracteres.
Por ejemplo, suponga que el arreglo R contiene puntajes de examen para los estudiantes
en el arreglo carácter Q:
R=[98¡84¡73¡88¡95¡100]
R =
98
84
73
88
95
100
http://jurgensoft.co.cc
Sección 10.3 Arreglos carácter 355
Si se intenta combinar estos dos arreglos, se obtendrá un resultado extraño porque son
dos tipos de datos diferentes:
t abl e= [Q , R ]
t abl e =
H olly b
St ev en T
Meag an 1
D av i d X
M i chael
H ei d i d
Los valores de"doble precisión en R se usaron para definir caracteres sobre la base de su
equivalente ASCII. Cuando en el mismo arreglo se usan doubles y chars, MATLAB convierte
toda la información a chars. Esto es confuso pues, cuando se combinan caracteres y datos nu­
méricos en cálculos matemáticos, MATLAB convierte la información caráeter a información
numérica.
La función num2str (número a cadena) le permite convertir la matriz R doble a una
matriz compuesta de datos carácter:
S =n um2st r (R)
S =
98
84
73
88
95
1 00
R Y S se parecen, pero si verifica la ventana del área de trabajo (figura 10.6), verá que R
es un arreglo double 6 x 1 y S es el arreglo char 6 X 3 que se muestra abajo.
espacio
espacio,
espacio
espacio
espacio
1
9
8
7
8
9
O
8
4
3
8
5
O
<6x3 char>
36 char
<6x8 char>
96 char
Figura 10.6
Los datos carácter y
numérico se pueden
combinar en un solo
arreglo al cambiar los
valores numéricos a
caracteres con la función
num2str.
356 Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
Ahora se puede combinar Q, el alTeglo carácter de nombres, con S, el arreglo carácter
de puntajes:
t abl e= [Q , S ]
t abl e =
H ol ly
St ev en
Meag an
D av i d
M i chael
H ei d i
98
84
73
88
9S
1 00
Semuestran los resultados en la fuente monospace, que está uniformemente espaciada.
Usted puede controlar la fuente que usa MATLAB; si
una fuente proporcional, como
Times New Roman, sus columnas no se alinearán.
También se podría usar la función disp para desplegar los resultados:
d i s p ( [ L ,N ])
H olly
St ev en
Meag an
D av i d
M i chael
H ei d i
�
98
84
73
88
9S
1 00
Sugeren c i a
Ponga un espacio después d e su cadena más larga, d e modo que, cuando cree un
alTeglo carácter acolchado, habrá un espacio entre la información carácter y la
información numérica que convirtió a datos carácter.
•
Idea clave: combine
arreglos carácter
y numérico con la
función nurn2str para
crear nombres de archivo
de datos.
Una aplicación útil de los arreglos carácter y la función nurn2str es la creación de
nombres de archivo. Hay ocasiones en que usted quiere guardar datos en archivos .dat o .rnat,
Una solución sería nombrar sus archi­
pero no sabe por anticipado cuántos archivos
vos con el siguiente patrón:
my_ d at al. d at
my_d at a2. d at
my_ d at a3. d at etc.
Imagine que usted carga en MATLAB
un
archivo de tamaño desconocido, llamado
sorne_data, y le gustaría crear nuevos archivos, cada uno compuesto de una sola columna
de sorne_data:
l oad some_ d at a
Puede determinar cuán grande es el archivo con el uso de la función size:
[row s , col s] =siz e (some_ d at a)
Si quiere almacenar cada columna de los datos en su propio archivo. necesitará un
nombre de archivo para cada columna. Puede haccr esto en un bucle for, usando la forma de
función del comando save:
for k=l: col s
fil e_n ame= [' my_d at a' ,n um2st r (k) ]
http://jurgensoft.co.cc
Sección 10.3 Arreglos carácter
data=some_data(:,k)
save(file_name,'data')
end
I
El bucle se ejecutará una vez por cada columna. Usted construye el nombre de archivo
al crear un arreglo que combina caracteres y números con el enunciado
file_name=['my_data' ,num2str(k)];
Este enunciado establece la variable file_llame igual a un arreglo carácter, corno my_
data! o my_data2, dependiendo del paso actual a través del bucle. La función save acepta
entrada carácter. En la línea
save(file_name, 'data')
file_name es una variable carácter, y 'data' se reconoce corno infonnación carácter porque
está dentro de apóstrofes. Si corre el anterior bucle for en un archivo que contenga una matriz
5 X 3 de números aleatorios, obtiene el siguiente resultado:
rows =
5
cols
3
file_name =
my_data1
data =
-0.4326 -1.6656
file_name
my_data2
data =
1.1909
1.1892
file_name =
my_data3
data =
-0.1867
0.7258
0.1253
0.2877
-1.1465
-0.0376
0.3273
0.1746
-0.5883
2.1832
-0.1364
El directorio actual ahora contiene tres nuevos archivos.
Eiercicio de práctica 10.4
1. Cree una matriz carácter llamada llames de los nombres de todos los planetas.
Su matriz debe tener nueve filas.
2. Algunos de los planetas se puede clasificar corno enanos rocosos y otros
eomo gigantes gaseosos. Cree una matriz earácter llamada type, con la
designación apropiada en cada línea.
3. Cree una matriz carácter de nueve espacios, un espacio por fila.
4. Combine sus matrices para fOfilar una tabla que mencione los nombres de los
planetas y sus designaciones, separados por un espacio.
5. Use Internet para encontrar la masa de cada uno de los planetas y almacene la
infonnación en una matriz llamada mass. (O use los datos del ejemplo 10.2
de la página 362.) Use la función llum2str para convertir el arreglo numérico
en un arreglo carácter y agréguelo a su tabla.
357
358
Capítulo 10
Otros tipos de arreglos
.,,,MUi·II,H.
http://jurgensoft.co.cc
Creación de un esquema de codificación secreto simple
Mantener privada la información en una era electrónica se está volviendo cada vez más di­
fícil. Una alternativa es codificar la información, de modo que incluso si una persona no
autorizada ve la información no podrá entenderla. Las modernas técnicas de codificación son
extremadamente complicadas, pero usted puede crear un código simple al sacar ventaja de la
forma en que la información carácter se almacena en MATLAB. Si se agrega un valor entero
constante a la información carácter, se puede transformar la cadena en algo que sea difícil de
interpretar.
l . Establ�zca el problema.
Codificar y decodificar una cadena de información carácter.
2. Describa las entradas y salidas.
Entrada
Información carácter ingresada desde la ventana de comandos
Salida
Información codificada
3. Desarrolle un ejemplo a mano.
La letra minúscula a es equivalente al número decimal
vierte de nuevo en carácter, se vuelve la letra!
97.
Si se agrega 5 a a y se con­
4. Desarrolle una solución MATLAB .
%Ej empl o 10 . 1
•
%C on min e al u su ar i o a ing resar un a caden a de in formación
carácter .
A=in pu t ( 'Ing rese un a caden a de in formación a cod i fi car: ')
en coded=char (A+ S) ;
d i s p ('Su en t rada se tran sformó') ;
d i sp (en coded) ;
d i s p ('¿ Le gu sta r í a decod i fi car este men saj e?') ;
respon se=menu ('¿ s í o n o?' ,'SÍ' , 'N O') ;
sw i tch respon se
case 1
di s p (char(en coded- S)) ;
case 2
d i s p (' OK - Adió s') ;
en d
5. Ponga a prueba la solución.
Corra el programa y observe lo que ocurre. El programa le pide la entrada, que debe
ingresar como cadena (dentro de apóstrofes):
Ing rese un a caden a de in formación a cod i fi car:
'1 l ov e rock an d rol 1 ,
Una vez que oprima la tecla return, el programa responde
Su en trada se t ran s formó
N %qt {j %w thp%fs i %w tqq
¿ Le gu star í a decodi ficar este men saj e?
Sección 10.4
http://jurgensoft.co.cc
Arreglos celda
359
Puesto que se eligió usar una opción menú para la respuesta, aparece la ventana de
menú. Cuando se elige
1
sÍ, el programa responde con
l ov e r ock an d r ol l
Si se elige
OK
-
NO, responde con
Ad ió s
10.4 ARREGLOS CELDA
A diferencia de los arreglos numérico, carácter y simbólico, el arreglo celda puede almacenar
diferentes tipos de datos dentro del mismo arreglo. Cada elemento en el arreglo también es un
arreglo. Por ejemplo, considere estos tres diferentes arreglos:
almacenar información
usando varios tipos de
A=1: 3 ;
B = [' abcd efg' ] ;
C =sing l e ([ 1, 2 , 3 ; 4 , S , 6]) ;
datos.
Se crearon tres arreglos separados, todos de diferente tipo de datos y tamaño.
double,
B es un char y e es un
A es un
single. Se les puede combinar en un arreglo celda al usar llaves
como el constructor de arreglo celda (los corchetes son los constructores estándar de arreglo):
my_cel l arr ay= { A ,B ,C}
regresa
my_cel l arr ay =
[lx 3 d oubl e]
' abcd efg'
[2x 3 sing l e]
Para ahorrar espacio, los arreglos grandes se mencionan sólo con información de tama­
ño. Puede mostrar el arreglo completo con la función
celldisp:
cel l d i sp (my_cel l arr ay)
my_cel l arr ay{l}
1
2
3
my- cel l arr ay{ 2}
abcd efg
my_ cel1 arr ay{ 3}
1
2
3
El sistema de indexación que se usa para arreglos celda es el mismo que se usa en otros
arreglos. Puede usar un índice sencillo o un esquema de indexación fila y columna. Existen dos
enfoques para recuperar información de los arreglos celda: puede usar paréntesis, como en
my- cel l arr ay (l)
an s =
[lx 3 d oubl e]
o puede usar llaves, como en
my- cel l arr ay{l}
an s =
1
2
3
Idea clave: los
arreglos celda pueden
360 Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
Para acceder a un elemento particular dentro de un arreglo almacenado en un arreglo
celda, debe usar una combinación de llaves y paréntesis:
my_c ell a rray{ 3} (l, 2)
ans =
2
Los arreglos celda pueden ser útiles para proyectos complicados de programación o
para aplicaciones de bases de datos. Un uso común en aplicaciones de ingeniería sería alma­
cenar todos los diversos tipos de datos de un proyecto en un nombre de variable que se pueda
desensamblar y usar más tarde.
10.5 ARREGLOS ESTRUCTURA
Idea clave: los
Los arreglos estructura son similares a los arreglos celda. Los arreglos múltiples de diferentes
arreglos estructura
tipos de datos se pueden almacenar en arreglos estructura, tal como se puede hacer en arre­
pueden almacenar
glos celda. No obstante, en lugar de usar indexación de contenido, a cada una de las matrices
información usando
almacenadas en
varios tipos de datos.
ejemplo, al usar los tres arreglos de la sección anterior en arreglos celda, a saber,
un
arreg lo estructura se le asigna una ubicación llamada campo (field). Por
A =1: 3;
B = [ ' abcdefg ' ] ;
C= s i ng l e ( [l , 2, 3¡ 4, S. 6])¡
se puede crear un arreglo estructura simple llamado
my_structure:
que regresa
rny_ st ructu r e
some_ nu mbers: [1 2 3 ]
E l nombre del arreglo estruci:ura e s my_structure. Tiene u n campo, llamado some_
numbers. Ahora se puede agregar el contenido de la matriz carácterB a un segundo campo
llamado some_letters:
•
my_st ructu re. some_l ett ers=B
rny_st ructu re =
some_nurn bers: [1 2 3]
sorn e_ l ett ers: ' abc defg '
Finalmente, se agregan los números de precisión sencilla de la matriz
campo llamado
e a un tercer
some_more_numbers:
rny_st ructu re. some_rn ore_nurn bers=C
my_st ructu re =
some_nu mbers: [1 2 3]
some_ l ett e r s: ' abc defg '
some_ more_ nu mbers: [2x 3 s i ngl e]
Note en la ventana del área de trabajo
10.7) que la matriz estructura (llamada
struct) es un arreglo 1 X 1 que contiene toda la información de las tres matrices disímiles. La
estructura tiene tres campos, cada uno de los cuales contiene un tipo de datos diferente:
some_Dumbers
some_letters
some_more_Dumbers
datos numéricos precisi6n doble
datos carácter
datos numéricos precisi6n sencilla
http://jurgensoft.co.cc
'abcdefg'
1 x7
14
char
[1 23;4 5 6]
2>::3
24
single
2
1x1
4
<1 x3 cel!>
1x3
242
cell
<1>:: 1 struct>
1x1
434
struct
Sección 10.5
single
Se puede agregar más contenido a la estructura, y expandir su tamaño, al agregar más
matrices a los campos definidos:
my_ struc ture( 2 ). some_ numbers=[2 4 6 8]
my_ st ruc ture =
1x 2 s t ruc t array w i th fi el ds:
some_ numbers
some_l etters
some_ more_ numbers
Puede acceder a la información en los arreglos estructura con el uso del nombre de ma­
triz, nombre de campo y números Índice. La sintaxis es similar a la que se usó para otros tipos
de matrices. Un ejemplo es
my_ st ruc ture( 2)
ans =
some_ numbers: [2 4 6 8]
some_l etters: []
some_ more_ numbers: []
Note que some_letters y some_more_numbers son matrices vacías, porque no se
información a dichos campos.
Para acceder sólo a un campo, agregue el nombre del campo:
my_ struc tu re( 2) . some_ numbers
ans =
8
2
4
6
Finalmente, si quiere conocer el contenido de un elemento particular en un campo, debe
especificar el número Índice del elemento después del nombre de campo:
my_ struc tu re( 2). some_ numbers( 2)
ans =
4
La función disp despliega los contenidos de los arreglos estructura. Por ejemplo,
d i s p( my_ st ruc ture( 2). some_ numbers( 2»
regresa
4
Arreglos estructuro 361
Figura 10.7
Los arreglos estructuro
pueden contener muchos
diferentes tipos de
dotos.
362 Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
También puede usar el editor de arreglos para acceder al contenido de un arreglo estruc­
tura (y cualquier otro arreglo, si de eso se trata). Cuando hace doble dic en el arreglo estructura
en la ventana del área de trabajo, se abre el editor de arreglos (figura
10.8). Si hace doble dic en
uno de los elementos de la estructura en el editor de arreglo, el editor se expande para mostrarle
los contenidos de dicho elemento (figura
10.9).
Los arreglos estructura son de uso limitado en cálculos de ingeniería, pero son extrema­
damente útiles en aplicaciones como gestión
de bases de datos. Dado que usualmente grandes
cantidades de datos de ingeniería se almacenan en una base de datos, el arreglo estructura
es extremadamente útil para análisis de datos. Los ejemplos que siguen le ayudarán a tener una
mejor idea de cómo manipular y usar arreglos estructura.
Figura 10.8
El editor de arreglo
reporta el tamaño de un
arreglo con la finalidad
de ahorrar espacio.
.í
,
Field �
somejetters
some_more _numbers
Figura 10.9
, someJlumbers
VallJe
'abcdefg'
[1 23;456)
[123)
Hacer doble clic a un
componente en el editor de
arreglos le permite ver los
datos almacenados en el
arreglo.
·inMA'·II,.
Almacenamiento de datos planetarios con arreglos estructura
Los arreglos estructura se pueden usar en forma muy parecida a una base de datos. Puede
almacenar información numérica, así como datos carácter o cualquiera de los otros tipos
de datos soportados por MATLAB. Cree un arreglo estructura para almacenar información
acerca de los planetas. Conmine al usuario a ingresar los datos.
http://jurgensoft.co.cc
Sección 10.5
1. Establezca el problema.
Crear un arreglo estructura para almacenar datos planetarios e ingresar la información
de la tabla 10.3.
2. Describa las entradas y salidas.
Entrado
Tabla 10.3
Nombre
del planeta
Masa en múltiplos
terrestres
Mercurio
Venus
Tierra
Marte
Júpiter
Saturno
Urano
Neptuno
Plutón
Duración del año,
en años terrestres
Velocidad orbital
media, km/s
0.055
0.24
47.89
0.107
1.88
24.13
95
29.46
9.64
0.815
318
0.62
11.86
35.03
29.79
13.06
15
84.01
6.81
0.002
247.7
4.74
17
164.8
5.43
Salida
Un arreglo estructura que almacene los datos
3. Desarrolle un ejemplo a mano.
Desarrollar un ejemplo a mano para este problema sería difícil. En vez de ello, sería útil
un diagrama de flujo.
4. Desarrolle una solución MATLAB .
%Ej empl o 10. 2
cl ear , cl c
%C ree una estructura con 4 campos
k=l;
pl anetary
%saca l a i n formació n al macenada en pl anetary
Arreglos estructura
363
364
Capítulo 10
.
Otros tipos de arreglos
http://jurgensoft.co.cc
He aquí una muestra de interacción en la ventana de comandos cuando corre el progra­
ma y comienza a ingresar datos:
R ecuerde i ng res ar cadenas en apóst rofes
I ng res e el nom bre de un pl anet a en apóst rofes : ' Mercuri o '
I ng res e l a m as a pl anet ari a e n m últi pl os de l a m as a d e l a Ti erra:
0.055
I ng res e l a duració n del año pl anet ari o en años t errest res: 0.24
I ng res e l a v el oci dad orbit al m edi a en km /s: 47.89
ans
nam e: ' Mercuri o '
m ass : 0.0550
year: 0.2400
v el ocit y: 47.8900
5. Ponga a prueba la solución.
Ingrese los datos y compare su arreglo con la tabla de entrada. Como parte del progra­
ma, se reportaron los valores de entrada de vuelta a la pantalla, de modo que el usuario
podría verificar su precisión. Si el usuario responde que los datos no son correctos, la
información se sobrescribe la siguiente vez en el bucle. También se usaron menús en
lugar de respuestas libres a algunas preguntas, de modo que no habría ambigüedad
en cuanto a las respuestas. Note que el arreglo estructura que se construye, llamado pla­
netary,se menciona en la ventana del área de trabajo. Si hace doble clic en planetary,
se abre el editor de arreglo y le permite ver cualquiera de los datos en el arreglo (figura
10.10). También puede actualizar cualquiera de los valores en el editor de arreglo.
Este arreglo estructura se usará en el ejemplo 10.3 para realizar algunos cálculos.
Necesitará guardar sus resultados como
s av e
pl anet ary_i nform ati on
pl anet ary
Esta secuencia de comandos guarda el arreglo estructura
planetary en el archivo
planetary_information.mat.
�" :���'�
Edit y'iew §raphics De�ug º-esktop y!indow !:!elp
iE¡ Array Editor - planetary{1,l)
Figura 1 O. 1 O
El editor de arreglos le
permite ver (y cambiar)
dolos en el arreglo
estructura.
e
'Mercurio'
47.89
0.24
Iane\ary(1 ,2)
x
plane\ary(1 ,1 ) .y ear
http://jurgensoft.co.ccSección
10.5
Arreglos estructura
365
·inMOI·II.,.
Extracción y uso de datos desde arreglos estructura
Los arreglos estructura tienen algunas ventajas para almacenar infonnación. Primero, usan
nombres de campo para identificar componentes del arreglo. Segundo, se puede agregar in­
fonnación al arreglo fácilmente y siempre se asocia con un grupo. Finalmente, en los arreglos
estructura es difícil mezclar accidentalmente 1a información. Para demostrar estas ventajas,
use los datos que almacenó en el archivo planetary_information para completar las siguien­
tes tareas:
•
•
•
•
•
•
Identificar los nombres de campo en el arreglo y citarlos.
Crear una lista de los nombres de los planetas.
Crear una tabla que represente los datos en el arreglo estructura. Incluir los nombres de
campo como encabezados de columna en la tabla.
Calcular y reportar el promedio de los valores de velocidad orbital media.
Encontrar el planeta más grande y reportar su tamaño y nombres .
Encontrar y reportar el periodo orbital de Júpiter.
I
l . Establezca el problema.
Crear un programa para realizar las tareas mencionadas.
2. Describa las entradas y salidas.
Entrada
planetary_information.mat, almacenada en el directorio actual
Salida
Crear un reporte en la ventana de comandos
3 . Desarrolle un ejemplo a mano.
4.
Puede completar la mayoría de las tareas designadas al acceder a la información en el
arreglo estructural planetary a través del editor de arreglos (véase la figura 1 0. 1 1).
Desarrolle una solución MATLAB.
%E j empl o 10 . 3
cl ear , cl c
Herramienta tiling
Figura 1 O. 1 1
La opción tiling (mosaico)
le permite ver múltiples
componentes del arreglo
estructura.
http://jurgensoft.co.cc
366 Capitulo 10 Otros tipos de arreglos
•
l oad pl anetary_i n formati on
%Ident i fique l os nombres de campo en el arregl o estructura
pl anetary
%recuerda l os conteni dos del a rregl o
%est ructura l l amado
pause( 2)
%C ree una l i sta de pl anetas en el arch i vo
d i sp( 'E stos nombres están b i en , pero no están en el
a rregl o ' ) ; pl anetary . name
pause( 4)
fpri ntf( ' \n ' )
%C ree una l í nea vac i a en l a sal i da
%Con corchetes ponga l os resul tados en un arregl o
d i sp( 'E ste arregl o no es muy grande ' ) ;
d i sp( ' Todo corre en conj unto ' ) ;
names= [pl anetary . name]
pause( 4)
fpri ntf( ' \n ' )
%C ree una l í nea vací a en l a sal i da
%C on char crea una l i sta acol chada , que es más útil
d i sp( ' Al usar u n a rregl o carácter acol chado se obti ene l o
que se qui ere ' ) ;
names= [char( pl anetary. name) ]
pause( 4)
%C ree una tabl a al crear pri mero a rregl os carácter de todos
%l os datos
d i sp( 'E stos arregl os tambi én son arregl os carácte r ' ) ;
mass=num2str( [pl anetary . mass] ' )
fpr i ntf( ' \n ' )
%C ree una l í nea vac í a e n l a sal i da
pause( 4)
year=num2s t r( [pl anetary . year] ' )
fpri ntf( ' \n ' )
%C ree una l í nea vac í a en l a sal i da
pause( 2)
vel oci ty=num2str( [pl anetary( : ) . vel oci ty] ' )
fpri ntf( ' \n ' )
%C ree una l í nea vací a en l a sal i da
pause( 4)
fpri ntf( ' \n ' )
%C ree una l í nea vac í a en l a sal i da
%C ree un arregl o de espacios para separar l os datos
']' ;
space s= [ '
%Use d i sp para despl egar l os nombres de campo
d i s p( 'E l resul tado gl obal es un gran a rregl o carácter ' ) ;
fpri n t f( ' \n ' )
%C ree una l í nea vac í a en l a sal i da
d i s p( ' Pl anet mass
year vel oci ty ' ) ;
tabl e = [names , spaces , mass , spaces , year , spaces , vel oci ty] ;
di sp( tabl e) ;
fpri ntf( ' \n ' )
%C ree una l í nea vac í a en l a sal i da
pause( 2)
%E ncuentre l a vel oc i dad orbi tal med i a pl aneta r i a promedio
MOV=mean( [pl anetary . vel oc i ty] ) ;
fpri ntf( ' La vel oci dad orbi tal medi a es %8 . 2 f km/s\n ' , MOV)
pause( 1)
%E ncuent re el pl aneta con l a máx i ma masa
max_ mass=max( [pl anetary . mass] ) ;
fpri ntf( ' La máx i ma masa es %8 . 2 f veces l a de l a Tierra
\n ' , max_ mass)
pause( 1)
%Júpi ter es el pl aneta #5
%E ncuentre el peri odo orbi tal de Júp i ter
http://jurgensoft.co.cc
Resumen
367
pl anet_name=pl anetary (S) . name :
pl anet-year=pl anetary (S) . year ;
fpr i ntf( ' %s ti ene un año %6 . 2 f veces el de l a Tierra
\n ' , pl anet_name , pl anet_year)
La mayor parte de este programa contiene comandos de formateo. Antes de intentar
analizar el código, corra el programa en MATLAB y observe los resultados.
5. Ponga a prueba la solución.
Compare la información extraída del arreglo con la información disponible del editor
de arreglo. Usar el editor de arreglo se volvería difícil de manejar conforme aumenten
los datos almacenados en
planetary. Es fácil agregar nuevos campos y nueva informa­
ción conforme se vuelve disponible. Por ejemplo, se podría agregar el número de lunas
a la estructura existente:
pl anetary ( 1) . moons
pl anetary(2) . moons
pl anetary(3) . moons
pl anetary(4) . moons
pl anetary(S) . moons
pl anetary(6) . moons
pl anetary(7) . moons
pl anetary(8) . moons
pl anetary(9) . moons =
=
O;
O;
1;
2;
60 ;
31;
27 ;
13 ;
1:
Este código agrega un nuevo campo llamado
moons
a la estructura. Se puede reportar el
número de lunas para cada planeta en la ventana de comandos con el comando
di sp ( [pl anetary . moons] ) ;
--------�lIIijij" t'j��
La principal estructura de datos de MATLAB es el arreglo. Dentro del arreglo, MATLAB
permite al usuario almacenar algunos tipos diferentes de datos. El tipo de datos numérico por
defecto es el número punto flotante de precisión doble, usualmente referido como double.
MATLAB también soporta números punto flotante de precisión sencilla, así como ocho tipos
diferentes de enteros. La información carácter también se almacena en arreglos. Los caracte­
res se pueden agrupar en una cadena, aunque la cadena representa un arreglo unidimensional
en el que cada carácter se almacena en su propio elemento. La función char permite al usuario
crear arreglos carácter bidimensionales a partir de cadenas de diferentes tamaños al "ajustar"
el arreglo con un número apropiado de espacios en blanco. Además de datos numéricos y
carácter, MATLAB incluye un tipo de datos simbólico.
Todos estos diferentes tipos de datos se pueden almacenar como arreglos bidimensiona­
les. Los datos escalares y vectoriales en realidad se almacenan como arreglos bidimensionales:
sólo tienen una fila o columna. MATLAB también permite al usuario almacenar datos en arre­
glos multidimensionales. Cada rebanada bidimensional de un arreglo tridimensional o mayor
se llama página.
En general, los datos almacenados en un arreglo MATLAB deben ser todos del mismo
tipo. Si se mezclan datos numéricos y carácter en un arreglo, los datos numéricos se cambian
a datos carácter sobre la base de sus valores decimales equivalentes ASCII. Cuando se inten­
tan cálculos en datos carácter y numéricos combinados, los datos carácter se convierten a sus
equivalentes ASCII.
368 Capítulo 10 Otros tipos de arreglas
http://jurgensoft.co.cc
MATLAB ofrece dos tipos de arreglo que pueden almacenar múltiples tipos de datos al
mismo tiempo: el arreglo celda y el arreglo estructura. Los arreglos celda usan llaves, { y } ,
como constructores de arreglo. Los arreglos estructura dependen d e campos nombrados. Tanto
los arreglos celda como los estructura son particularmente útiles en aplicaciones de bases de
datos.
RESU M EN MATLAB
El siguiente resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y funciones especiales que se definieron en este capítulo:
{ }
"
constructor arreglo celda
cadena de datos (información carácter)
arreglo carácter
arreglo numérico
arreglo simbólico
arreglo lógico
arreglo esparcido
arreglo celda
arreglo estructura
cel l di sp
char
cumsum
convierte el formato de despliegue a números racionales (fracciones)
i nt32
entero con
de 32 bits
entero con
de 8 bits
i nt64
i nt 8
num2str
real max
real m i n
s i ngl e
sparse
str2num
uintl6
uint32
uint64
uint:8
TÉRMI NOS CLAVE
encuentra la suma acumulativa de los miembros de un arreglo
doubl e
eye
format: rat:
i ntl6
•
despliega los contenidos de un arreglo celda
crea un arreglo carácter acolchado
ASCII
cambia un
a un arreglo de precisión doble
crea una matriz identidad
entero con
de 16 bits
entero con signo de 64 bits
convierte un
numérico a un arreglo carácter
determina el número real más grande que se puede expresar en MATLAB
detemnina el número real más pequeño que se puede expresar en MATLAB
cambia un
a un arreglo de precisión sencilla
convierte una matriz de formato lleno a una matriz de formato esparcido
carácter a un arreglo numérico
convierte u n
entero sin signo de 16 bits
entero sin signo de 32 bits
entero sin signo de 64 bits
entero sin signo de 8 bits
datos simb6licos
números racionales
base 2
EBCDIC
páginas
cadena
entero
precisi6n doble
carácter
estructura
preci si6n sencilla
celda
gavetas
tipo de datos
clase
nú meros complej os
datos lógicos
números punto flotante
http://jurgensoft.co.cc
Tipos de datos numéricos
10.1
Calcule la suma (no las sumas parciales) de los primeros 10 millones de ténmnos en la
serie armónica
2 3 4
1
1
1
1
1
1
+-+-+
+
+
+
5
6
1
10.2
10.3
10.4
1
+ - +
n
con números de precisión doble y precisión sencilla. Compare los resultados. Explique
por qué son diferentes.
Defina un arreglo de los primeros 10 enteros, use la designación de tipo int8. Use
estos enteros para calcular los primeros
ténninos en la serie arm.ónica . Explique sus
resultados.
Explique por qué es mejor pennitir a MATLAB tener por defecto representaciones de
número punto flotante de precisión doble para la mayoría de los cálculos de ingeniería
que para especificar tipos sencillos y enteros.
Los números complejos se crean automáticamente en MATLAB como resultado de los
cálculos. También se pueden ingresar directamente, como la suma de un número real y
uno imaginario, y se pueden almacenar como cualquiera de los tipos de datos numéricos.
Defina dos variables, un número complejo de precisión sencilla y otra doble, como
10
doubl ea
=
5 + 3i
s i ngl ea
=
s i ngl e ( 5 + 3 ; )
Eleve cada uno de estos números a l a centésima potencia. Explique l a diferencia en
sus respuestas.
Datos carácter
10.5
10.6
Use un buscador de Internet para encontrar una lista que muestre los equivalentes
binarios de caracteres tanto en ASCII como en EBCDIC. Resalte brevemente las dife­
rencias en los dos esquemas de codificación.
A veces es confuso darse cuenta de que los números se pueden representar tanto como
datos numéricos como datos carácter. Use MATLAB para expresar el número 85
como un arreglo carácter.
(a) ¿Cuántos elementos hay en este arreglo?
(b) ¿Cuál es el equivalente numérico del carácter 8?
(e) ¿Cuál es el equivalente numérico del carácter 5?
Arreglos multidimensionales
10.7
Cree cada uno de los siguientes arreglos:
A
2J
4'
B
=
[ 10 20]
30 40
e
'
=
[3
9
l� J
(a) Combínelos en un gran arreglo multidimensíonal 2 X 2 X 3 llamado ABC.
(b) Extraiga cada columna 1 en un arreglo 2 X 3 llamado Column_A lBle1.
(e) Extraiga cada fila 2 en un arreglo 3 X 2 llamado Row_A2B2C2.
(d) Extraiga el valor en fila 1, columna 2, página 3.
10.8
Imagine que a una profesora universitaria le gustaría comparar cómo se desempeñan
los estudiantes en una prueba que imparte cada año. Cada año, califica los datos en un
arreglo bidimensional. Los datos del primero y segundo años son los siguientes:
Problemas 369
370 Capítulo 1 0 Otros tipos de arreglos
http://jurgensoft.co.cc
hegunta l
Preguuta 2
Pregunta 3
Pregtnúa 4
3
5
4
6
3
6
8
9
4
5
4
6
5
7
8
10
10
10
9
10
Pregunta l
Pregunta 2
Pregurlta 3
Preguuta 4
Estudiante 1
2
7
3
ID
Estudiante 2
3
4
3
3
7
5
3
5
5
5
8
2
10
10
!O
10
1
2
Estudiante 3
Estudiante 4
Estudiante 5
Estudiante
Estudiante
��
•
3
4
Estudiante 5
Estudiante
Estudiante
(a) Cree un arreglo bidimensional llamado yearl para los datos del primer año y otro
arreglo bidimensional llamado year2 para los datos del segundo año.
(b)
tridimensional con dos páginas. llamado
Combine los dos arreglos en un
testdata.
(e) Use su arreglo tridimensional para realizar los cálculos siguientes:
•
Calcule la calificación promedio para cada pregunta, para cada año y almacene
los resultados en un arreglo bidimensional. (Su respuesta debe ser un arreglo
2 X 4 o un arreglo 4 X 2.)
•
Calcule la calificación promedio para cada pregunta, con todos los datos.
•
Extraiga los datos para la Pregunta 3 para cada año y cree un arreglo con el
siguiente formato:
1
Prégunta 3, Año 2
Estudiante 1
Estudiante 2
etc.
•
10.9
Si la profesora descrita en la pregunta anterior quiere incluir los resultados de u n se­
gundo y un tercer exámenes en el arreglo, tendría que crear un arreglo tetradimensio­
nal. (La cuarta dimensión a veces se llama gaveta, drawer.) Todos los datos se incluyen
en un archivo llamado
test3esults.mat que eonsta de seis arreglos bidimensionales
similares a los descritos en el problema 1 0.8. Los nombres de arreglo son
testlyearl
test2yearl
test3yearl
testlyear2
test2year2
test3year2
Organice estos datos en un arreglo tetradimensional que se parezca al siguiente:
dimensión
1
(fila)
estudiante
dimensión
2
(columna)
pregunta
dimensión 3
(página)
año
dimensión 4
(drawer
prueba
http://jurgensoft.co.cc
(a) Extraiga la calificación para el Estudiante 1, en la Pregunta 2, del primer año, en
la Prueba 3.
(b) Cree un arreglo unidimensional que represente las calificaciones para el primer
estudiante, en la Pregunta 1, en la segunda prueba, para todos los años.
(e) Cree un arreglo unidimensional que represente las calificaciones del segundo es­
tudiante, en todas las preguntas, en la primera prueba, para el Año 2.
(d) Cree u n arreglo bidimensional que represente las calificaciones d e todos los estu­
diantes, en la Pregunta 3, de la segunda prueba, para todos los años.
Arreglos carácter
10.10
(a)
Cree un arreglo carácter acolchado con cinco nombres diferentes.
(b) Cree un arreglo bidimensional llamado birthdays para representar el cumpleaños
de cada persona. Por ejemplo, su arreglo puede parecer algo como esto:
birthdays
6
3
6
12
12
=
11
11
29
12
11
1983
1985
1986
1984
1987
(e) Use la función num2str para convertir birthdays a un arreglo carácter.
(d) Use la función disp para desplegar una tabla de nombres y cumpleaños.
10.11
Imagine que tiene el siguiente arreglo carácter que representa las dimensiones de algu­
nas cajas de embarque:
box_dimensions
boxl
box2
box3
box4
1
2
6
1
3
4
7
4
=
5
6
3
3
Necesita encontrar los volúmenes de las cajas para usar en un cálculo que determine
cuántos "cacahuates" empacados ordenar para su departamento de embarque. Dado
que el arreglo es un arreglo carácter 4 X 1 2, la representación carácter de la informa­
ción numérica se almacena en las columnas de la 6 a la 12 . Use la función str2num
para convertir la información en un arreglo numérico y use los datos para calcular el
volumen de cada caja. (Necesitará ingresar el arreglo box_dimensions como datos
cadena, con la función ehar.)
10.12
Considere el siguiente archivo llamado thermocouple.dat:
84.3
86.4
90.0
89.5
88.6
88.9
86.7
87.6
88.9
90.4
88.3
85.3
80.3
82.4
85.0
89.3
83.4
85.3
89.5
88.9
85.4
85.2
87.1
83.5
84.8
85.3
85.2
82.3
84.7
83.6
89. 1
89.5
89.4
89.8
86.3
85.3
89.0
87.3
87.2
Problemas 37 1
372
Capítulo 10 Otros tipos de arreglos
http://jurgensoft.co.cc
(a) Cree un programa que
•
•
•
cargue tbermocouple.dat en MATLAB.
determine el tamaño (número de filas y columnas) del archivo.
extraiga cada conjunto de datos tennocople y los almacene en un archivo se­
parado. Nombre los diversos archivos tbermocouplel.mat, tbermocouple2.
mat, etcétera.
(b) Su programa debe ser capaz de aceptar cualquier tamaño de archivo bidimensio­
nal. No suponga que sólo existen tres columnas; haga que el programa determine
el tamaño del arreglo y asigne nombres de archivo apropiados.
10.13 Cree un programa que codifique el texto ingresado por el usuario y lo guarde en un
arc4ivo. Su código debe agregar 1 0 al valor equivalente decimal de cada carácter in­
gresado.
10.14 Cree un programa para decodificar un mensaje almacenado en un archivo de datos al
restar 10 del valor equivalente decimal de cada carácter.
Arreg los celda
10.15 Crec un arreglo celda llamado sample3ell para almacenar los s iguientes arreglos in­
dividuales:
A
[� 5�]
[fred ralPh]
3
=
9
11
B
=
ken
C�m
( arreglo punto flotante precisión doble)
8
susan
(arreglo carácter acolchado)
(arreglo entero int8)
(a) Extraiga el arreglo A de sample3ell.
•
(b) Extraiga la infonnación en el arreglo e, fila 3, de sample:eelL
(e) Extraiga el nombrefred de samplc_ecll. Recuerde que el nombre fred es un arre­
glo 1 X 4, no una entidad sola.
10.16 Los arreglos celda se pueden usar para almacenar infonnación carácter sin acolchar los
arreglos carácter. Cree un arreglo carácter separado para cada una de las cadenas
aluminio
cobre
h ierro
molibdeno
cobalto
y
almacénelos en un arreglo celda.
http://jurgensoft.co.cc
10.17 Considere la siguiente información acerca de tos metales:
Peso
alómloo
Aluminio
Al
13
26.98
2.71
Cobre
Cu
29
63.55
8.94
FCC
Hierro
Fe
26
55.85
7.87
BCC
Mol ibdeno
Mo
42
95.94
1 0.22
BCC
Cobalto
Co
27
58.93
8.9
HCP
FCC
(a) Cree los siguientes arreglos:
•
Almacene el nombre de cada meta! en un arreglo carácter individua! y almace-
•
Almacene el símbolo de todos estos metales en un solo arreglo carácter acol-
.
ne todos estos arreglos carácter en un arreglo celda.
chado.
•
Almacene el número atómico en un arreglo entero intS.
•
Almacene el peso atómico en un arreglo numérico de precisión doble.
•
Almacene la densidad en un soto arreglo numérico de precisión doble.
•
Almacene la estructura en un solo arreglo carácter acolchado.
(b) Agrupe los arreglos que creó en la parte (a) en un arreglo celda de precisión
sencilla.
(e)
J.jA"'�L¡;; u la siguiente información de su arreglo celda:
•
Encuentre el nombre, peso atómico y estructura del cuarto elemento en la
•
Encuentre el nombre de todos los elementos almacenados en el arreglo.
•
Encuentre el peso atómico promedio de los elementos en la tabla. (Recucrde,
lista.
necesita extraer la información que usó en su cálculo del arreglo celda.)
Arreglos estructura
10.18 Almacene la información presentada en el problema 1 0. 1 7 en un arreglo estructura.
Use su arreglo estructura para determinar el elemento con la máxima densidad.
10.19 Cree un programa que permita a! usuario ingresar información adicional en el arreglo
estructura que creó en el problema 10. 1 8 . Use su programa para agregar los siguientes
datos a! arreglo:
Litio
Li
3
6.94
0.534
Germanio
Ge
32
72.59
5.32
Oro
Au
79
196.97
1 9.32
BCC
diamante cubico
FCC
10.20 Use el arreglo estructura que creó en el problema 10. 1 9 para encontrar el elemento con
el máximo peso atómico.
Problemas 373
http://jurgensoft.co.cc
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
•
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
j
http://jurgensoft.co.cc
Matemática simbólica
INTRODUCCiÓN
MATLAB tiene algunos tipos diferentes de datos, incluidos datos numéricos de pre­
cisión doble y sencilla, datos carácter, datos lógicos y datos simbólicos, los cuales se
almacenan en una variedad de distintos arreglos. En este capítulo se explorará cómo
los arreglos simbólicos permiten a los usuarios de MATLAB manipular y usar datos
simbólicos.
La capacidad simbólica de MATLAB se basa en el software Mapte 8, producido
por Waterloo Maple. (Ésta es una actualización en MATLAB 7; las versiones anterio­
res usaban Maple 5.) El motor Mapte 8 es parte de la caja de herramientas simbólica. Si
usted ha usado Maple anteriormente, encontrará similares la mayoría de los comandos
simbólicos MATLAB. Sin embargo, puesto que a diferente de Maple, MATLAB usa el
arreglo como su tipo de datos principal, y puesto que el motor Maple está incrustado en
MATLAB, la sintaxis se modificó para ser consistente con las convenciones y capaci­
dades subyacentes a MATLAB.
La caja de herramientas simbólica es una característica opcional de la versión
profesional de MATLAB 7 y se debe instalar con la finalidad de que funcionen los
ejemplos que siguen. Con la edición estudiantil de MATLAB se incluye un subconjun­
to de la caja de herramientas simbólica de MATLAB 7, porque se usa ampliamente. Si
usted tiene una versión anterior de MATLAB (Release 12 o anterior), es posible que
no funcionen algunos de los ejercicios descritos en este capítulo.
La caja de herramientas simbólicas de MATLAB le permite manipular expre­
siones simbólicas para simplificarlas, resolverlas simbólicamente y evaluarlas numé­
ricamente. También le permite obtener derivadas, integrar y realizar manipulaciones
algebraicas lineales. Las características más avanzadas incluyen transformadas de La­
Place, transformadas de Fourier y aritmética de precisión variable.
11.1
ÁLGEBRA SIMBÓLICA
La matemática simbólica se usa regularmente en las clases de matemáticas, ingenie­
ría y ciencias. Con frecuencia es preferible manipular las ecuaciones simbólicamente
antes de sustituir valores para las variables. Por ejemplo, considere la ecuación
376 Capítulo 11
http://jurgensoft.co.cc
Matemática simb6lica
Idea clave: la caja de
2 (x + 3 )2
2
x + 6x + 9
y
herramientas simbóliea es
un componente opcional
de la versión profesional,
Cuando la observa por primera vez, parece que y es una función bastante complicada
pero es estándar con la
de
versión estudiantil.
ecuación a
x.
(x +
Sin embargo, si expande la cantidad
y
=
, se hace evidente que puede simplificar la
---'-,-----'- =
��-��������
2
Acaso quiera o no realizar esta simplificación, porque al hacerla pierde algo de información. Por ejemplo, para valores de
x
y está indefinida, pues x +
igual a
igual que X 2 + 6x + 9. Por tanto,
y =
2(-3 +
9 - 18 +
O
9
2 ()
=
=
3 se vuelve O, al
.
.
mdefimdo
Las capacidades simbólicas de MATLAB le permiten realizar esta simplificación o ma­
nipular el numerador y denominador por separado.
Las relaciones no siempre se constituyen en formas fáciles de resolver. Por ejemplo,
considere la ecuación
Si se conocen los valores de Do'
Q,
R Y T, es fácil resolver para
Idea clave:
quiere encontrar T y se conocen los valores de
MATLAB facilita la
para obtener Ten el lado izquierdo de la ecuación:
resolución de ecuaciones
simbólicamente.
( )
ln D
In(Do)
D
D, Do' R y Q.
D)
In (
=
o
D. No es tan fácil si sc
Tiene que manipular la relación
RT
RT
JL
=
RT
Q
T
R
•
In(Do/D)
Aunque resolver para T es complicado manualmente, es fácil con las capacidades simbólicas
deMATLAB.
11.1.1
Creación de variables simbólicas
Las variables simbólicas simples se pueden crear en dos formas. Por ejemplo, para crear la
variable simbólica
x,
escriba o
x=sym('x')
o
syms x
Ambas técnicas hacen al carácter
'x'
igual a la variable simbólica
x.
Se pueden crear
variables más complicadas usando las variables simbólicas existentes, cOmO en la expresión
y = 2*(x+3)A1I(xA2+6*x+9)
http://jurgensoft.co.cc
Sección 11.1
Álgebra simbólica
377
Figura 11.1
Las variables sim bólicas se
identifican en la ventana
del área de trabajo.
Requieren una cantidad de
almacenamiento variable.
Note en la ventana del área de trabaj o (figura 1 1. 1 ) que x y y se mencionan como varia­
bles simbólicas y que el tamaño del arreglo para cada una es 1 X 1 .
El comando syms e s particularmente conveniente porque s e puede usar para crear múl­
tiples variables simbólicas al tnismo tiempo, como con el comando
Idea clave: las
expresiones son
diferentes de las
ecuaciones.
syms Q R T DO
Estas variables se pueden combinar matemáticamente para crear otra variable simbóli­
ca,D:
ex.presión: conjunto
de operaciones
matemáticas
D=DO*exp(-Q/(R*T»
Note que en ambos ejemplos se usaron los operadores algebraicos estándar, no los ope­
radores de arreglo, como
.*
o .". Esto tiene sentido cuando se observa que los operadores de
arreglo especifican que elementos correspondientes en arreglos se usan en los cálculos asocia­
dos, una situación que no se aplica aquí.
La función
sym también se puede usar para crear una expresión entera o una ecuación
entera. Por ejemplo.
otra expresión
E=sym('m*cA2')
crea una variable simbólica llamada
ecuación: expresión
que se iguala a un valor u
E. Note que m y e no se mencionan en la ventana del
área de trabajo (figura 1 1.2); no se tienen que definir específicamente como variables simbó­
licas. En vez de ello, E se igualó a una cadena carácter, definida por el apóstrofe dentro de la
función.
En este ejemplo, la expresión
m*c"2 se iguala con la variable E. También se puede
crear una ecuación entera y darle un nombre. Por ejemplo, se puede definir la ley del gas
ideal
Idea clave: la
caj a de herramientas
simbólica usa operadores
algebraicos estándar.
En este punto, si ha escrito los ej emplos conforme los lee, su ventana de área de trabajo
debe parecerse a la de la figura 1 1.3. Note que sólo
ideaCgas_Iaw se menciona como variable
n, R y Temp no se definieron explícitamente, sino que fueron parte de
la cadena carácter de entrada a la función sym.
simbólica, pues P, V,
378
Capítulo 1 1
Matemático simbólico
http://jurgensoft.co.cc
<1x1 sym>
Figura 11.2
A menos que uno variable
se defina explícitamente,
no se cita en la ventana del
área de trabajo.
<1x1 sym>
1 x1
sym
<1 x1 sym>
1x1
sym
<1x1 sym>
1x1
<1x1 sym>
1x1
<1x1 sym>
1x1
sym
<1x1 sym>
1x1
sym
sym
126
sym
<1x1 sym>
sym>
•
<1)(1 sym>
1x1
<1x1 sym>
1x1
..::1 >::1 sym;.
1>:: 1
<1x1 sym>
1x1
126
sym
<1x1 sym>
1x1
126
sym
<1x1 sym>
1x1
148 sym
<1x1 sym>
1>:: 1
126
sym
1::<1
166
sym
<1x1 sym>
sym
sym
Figura 11.3
La variable ideatgas_
law es un ecuación, no
una expresión.
Ejercicio de práctica 11.1
1. Cree las siguientes variables simbólicas con el comando syrn o syms:
x,
a,
b, e, d
http://jurgensoft.co.cc
Sección 1 1 . 1
2. Verifique que las variables que creó en el problema 1 se mencionan en la
ventana del área de trabajo como variables simbólicas. Úselas para crear
las siguientes expresiones simbólicas:
ex1
ex2
ex3
ex4
ex5
ex6
xA2-1
(x+1)A2
a*xA2 - 1
a*xA2 + b*x + e
a*xA3 + b*xA2 + c*x + d
s i n (x)
3 . Cree las siguientes expresiones simbólicas, con la función sym:
sym ( ' XA2 - 1 ' )
EX1
sym ( ' (X +1)A2 ' )
EX2
sym ( ' A*X A2 - 1 ' )
EX3
EX4
sym ( ' A*X 112 + B*X + C ' )
EX5 = sym ( ' A*X A 3 + B*X 112 + C*X + O ' )
sym ( ' s i n (X) ' )
EX6
4. Cree las siguientes ecuaciones simbólicas, con la función sym:
eq1
eq2
eq3
eq4
eq5
eq6
sym ( ' x1l2=1 ' )
sym ( ' (x+1)1I2=0 ' )
sym ( ' a*xIl2=1 ' )
sym ( ' a*xIl2 + b*x + c=O ' )
sym ( ' a*xIl3 + b*xll2 + c*x + d=O ' )
sym ( ' si n (x) =O ' )
5. Cree las siguientes ecuaciones simbólicas, con la función sym:
EQ1
sym ( ' XII2 = 1 ' )
sym ( ' (X +1) 112=0 )
EQ2
EQ3 = sym ( ' A*X 112 =1 ' )
EQ4
sym ( ' A*X 112 + B*X + C = O ' )
sym ( ' A*X 113 + B*X 112 + C*X + O
EQ5
sym ( ' s i n (X) = O ' )
EQ6
'
O ')
Note que sólo las variables, expresiones y ecuaciones definidas explícitamente se
mencionan en la ventana del área de trabajo. Guarde las variables, expresiones y
ecuaciones que cree en esta práctica para usarlas más tarde en los ejercicios de
práctica del capítulo.
1 1.1.2
Manipulación de expresiones y ecuaciones simbólicas
Primero debe recordar cómo difieren las expresiones y ecuaciones. Las ecuaciones se igualan
a algo; las expresiones no. La variable ideat.gas_Iaw se igualó a una ecuación. Si escribe
MATLAB responderá
i deal_gas_law =
P*V=n*R*Temp
Sin embargo, si escribe
E
Álgebra simbólica
379
380
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
MATLAB responde
E=
m*cA2
o si escribe
y
MATLAB responde
y =
2 * (x+3)A2f(xA2+6*x+9)
Las variables
E
y Y son expresiones, pero la variable
ideaCgas_law
mayor parte del tiempo trabajará con expresiones simbólicas.
�
es una
ecuación.
La
Sugerencia
Note que cuando usa variables simbólicas MATLAB no sangra el resultado, a
diferencia del formato que se usa para resultados numéricos. Esto puede ayudarlo
a rastrear los tipos de variable sin hacer referencia a la ventana del área de trabajo.
MATLAB tiene algunas funciones diseñadas para manipular variables simbólicas, in­
cluidas funciones para separar una expresión en su numerador y denominador, para expandir
o factorizar expresiones, y algunas formas de simplificar expresiones.
Ex.trcrcción de numeradores y deno.minodores
La función numden extrae el numerador y el denominador de una expresión.
definió y como
y
=
Por ejemplo, si
2 * (x+3)A2f(xA2+6*x+9)
entonces puede extraer el numerador y denominador con
[num,den]
=
numden (y)
•
MATLAB crea dos nuevas variables,
nUID y den (desde
luego, podría llamarlas como
a usted le guste):
num
2 * (x+3)A2
den
xA2+6*x+9
=
=
Estas o cualesquiera expresiones simbólicas se pueden recombinar al usar operadores
algebraicos estándar:
num*den
ans
2 * (x+3) A2 * (xA2+6*x+9)
=
numfden
ans
2* (x+3)A2f(xA2+6*x+9)
=
http://jurgensoft.co.cc
Sección 1 1 . 1
num+den
ans =
2 * (x+3) A2+xA2+6*x+9
ExpGnsión de expresiones, factorización de expresiones y recolección de términos
expand, fac­
tor y collect. Por tanto,
Se pueden usar las expresiones definidas para demostrar el uso de las funciones
expand (num)
regresa
ans =
2 *xA2+12*x+18
y
factor (den)
regresa
ans =
(x+3)A2
La función
collect recopila términos iguales y es similar a la función expand:
collect ( num)
ans =
18+2*xA2+12*x
Esto funciona sin importar si cada variable individual en una expresión fue o no defini­
da como variable simbólica. Defina una nueva variable
z:
z = sym ( ' 3*a- (a+ 3 ) * (a- 3 ) A2 ' )
En este caso, tanto expand como
factor dan el mismo resultado:
factor(z)
ans =
1 2*a-aA3+3*aA 2 - 2 7
expand (z)
ans =
1 2*a-aA3+3*aA 2 - 2 7
E l resultado que s e obtuvo al usar
el que se mencionan los términos:
collect e s similar;
la única diferencia e s e l orden en
collect (z)
ans =
-27-aA3+3*aA2+12*a
Puede usar las tres funciones con ecuaciones así como con expresiones. Con las ecua­
ciones, cada lado de la ecuación se trata como una expresión separada. Para ilustrar, se puede
definir una ecuación
w:
w=sym ( ' xA 3 - 1=(x- 3 ) * (x+3) ' )
expand(w)
ans =
Álgebra simbólico
381
382
Capítulo 1 1
Matemótica simbólica
http://jurgensoft.co.cc
xA3 - 1 = xAZ - 9
factor (w)
ans =
(x- l ) * (xA2+x+l) = (x- 3 ) * (x+3)
coll ect (w)
ans =
xA3 - 1 '" xA2-9
Simplificación de funciones
Se puede pensar en las funciones
expand, factor y collect como
fOnTIas de simplificar una
ecuación. Sin embargo, qué constituye una ecuación "simple" no siempre es obvio. La fun­
ción simplify simplifica cada parte de una expresión o ecuación, al usar las reglas de simplifi­
cación internas de Maple. Por ejemplo, suponga de nuevo que
z
se definió como
z=sym(' 3*a- (a+3 ) * (a-3)AZ ' )
Entonces el comando
s i mpl i fy (z)
regresa
ans
l Z*a-aA3+3*aA 2 - 2 7
==
S i la ecuación
w
s e definió como
w=sym ( ' xA3 - 1= (x-3) * (x+3 ) ' )
entonces
s impli fy(w)
regresa
•
ans =
xA3- 1 = xAZ - 9
Note d e nuevo que esto funciona sin importar s i cada variable individual e n una expre­
sión fue o no definida como una variable simbólica: la expresión
z
contiene la variable
no se definió explícitamente y que no se menciona en la ventana del área de trabajo.
La función
simple
a, que
es ligeramente diferente. Intente algunas técnicas de simplificación
diferentes y reporte el resultado que es el más corto. Todos los intentos se reportan en la pan­
talla. Por ejemplo,
si mple(w)
da los siguientes resultados:
s i mpli fy:
xA3 -1 = xAZ-9
rad s i mp :
xA3 - 1 = (x- 3 ) * (x+3)
http://jurgensoft.co.cc
Sección 11.1
Á lgebra simbólica
383
Idea clave: MATLAB
combi ne(trig) :
xA3-1 = xA2-9
define la representación
factor:
más simple de una
(x-l) *(xA2+x+l) = (x-3) * (x+3)
expand:
xA3-1 = xA2-9
expresión como l a
versión más corta de
la expresión.
combi ne:
xA3-1 = (x-3 ) * (x+3)
convert (exp) :
xA3-1 = (x-3) *(x+3)
convert (si ncos ) :
xA3 - 1 = (x-3 ) *(x+3)
Idea clave: muchas,
convert (tan):
mas no todas las
xA3-1 = (x-3 ) * (x+3)
expresiones simbólicas
col l ec t (x) :
funcionan tanto para
xA3-1 = xA2-9
expresiones como
para ecuaciones.
mwcos2si n:
xA3-1 = (x-3) * (x+3)
ans =
xA3-1 = xA2-9
Note que, aunque una gran cantidad de resultados se despliegan en la pantalla, sólo hay
una respuesta:
ans =
xA2-1 = xA2-9
Tanto simple como
simplify funcionan en expresiones lo mismo que en ecuaciones.
La tabla 11.1 menciona algunas de las funciones MATLAB que se usan para manipular
expresiones y ecuaciones.
Sugerencia
Un ataj o para crear un polinomio simbólico es la función
poly2sym. Esta función
requiere un vector como entrada y crea un polinomio, usando el vector para los
coeficientes de cada término del polinomio.
a=[1,3,2]
a =
1
3
b=pol y2sym(a)
b =
xA2+3*x+2
De modo similar, la función
2
sym2poly convierte un polinomio en un vector de
valores coeficiente:
c=sym2pol y (b)
c =
1
3
2
384
Capítulo 11
Matemática simbólica
http://jurgensoft.co.cc
Funciones que s e usan para manipular expresiones y ecuaciones
Tabla 1 1. 1
expandeS)
multiplica todas las porciones
de la expresión o ecuación
syms X
expand ( (x-S) * (x+S»
ans =
xA2- 2 S
factor (S)
factoriza la expresión o
ecuación
syms x
factor(xA 3 - 1)
ans
(x- l) * (xA2+x+l)
=
recopila términos similares
col1 ect(S)
S=2* (x+3)A2+xA2+6*x+9
coll ect(S)
S
2 7+3*xA2+18*x
=
s i mpl i fy (S)
simplifica en concordancia con
las reglas de simplificación de
Maple
syms a
si mpl i fy (exp(log (a» )
ans =
a
si mple (S)
simplifica a la representación
más corta de la expresión o
ecuación
syms x
s i mpl e ( s i n (x) A2+
cos (x) A2)
ans=l
1
numden(S)
encuentra el numerador de
una expresión; esto función
no es válida para ecuaciones
syms x
numde n ( (x-S)/(x+S»
ans =
x-S
[num, den]=numden (S)
encuentra tanto el numerador
como el denominador de una
expresión; esta función no es
válida para ecuaciones
syms x
[num , den]=numden ( (x­
S)/ (x+S»
num =
x-S
den =
x+S
Ejercicio de práctica
11.2
Use en estos ejercicios las variables definidas en la práctica 1 1.1.
1. Multiplique exI por ex2 y llame al resultado yI.
2. Divida exI entre
ex2 y llame al resultado y2.
3. Use la función numden para extraer el numerador y denominador de yI y y2.
EXI por EX2 y llame al resultado YI.
EXI entre EX2 y llame al resultado Y2.
6. Use la función numden para extraer el numerador y denominador de YI
y Y2.
7. Intente usar la función numden en una de las ecuaciones que definió.
4. Multiplique
S. Divida
¿Funciona?
8. Use las funciones factor, expand, collect y simplify en yI, y2, YI Y Y2.
Sección 1 1,2 Resolución de expresiones
http://jurgensoft.co.cc
9. Use las funciones
ex1 y ex2 y sobre
y ecuaciones
385
factor, expand, collect y simplify en las expresiones
las correspondientes ecuaciones eql y eq2. Explique las
diferencias que observe.
RESOLUCiÓN DE EXPRESIONES Y ECUACIONES
11.2
Una de las funciones más útiles en la caja de herramientas simbólica es
solve.
Se le puede
usar para determinar las raíces de expresiones, para encontrar respuestas numéricas cuando
hay una sola variable y para resolver simbólicamente una incógnita. La función solve también
puede resolver sistemas de ecuaciones tanto lineales como no lineales. Cuando se parea con la
función sustitución
(subs), la función solve permite al usuario encontrar soluciones analíticas
a una variedad de problemas.
1 1.2. 1
La función solve
Cuando se usa con una expresión, la función
las raíces. Por ejemplo (si supone que
solve iguala la expresión a cero y resuelve
x ya se definió como una variable simbólica), si
para
El=x-3
entonces
solve (El)
regresa
ans =
3
Solve se puede usar con el nombre de una expresión o creando una expresión simbólica
directamente en la función solve. Por tanto,
para x.
sol ve ( ' xA2 - 9 ' )
regresa
ans =
3
-3
Note que
ans
es un arreglo simbólico 2 X 1. Si
variable simbólica, entonces
x se definió anteriormente como una
los apóstrofes no son necesarios. Si no, toda la expresión se debe
encerrar dentro de apóstrofes.
Usted puede resolver fácilmente expresiones simbólicas con más de una variable. Por
ejemplo, para la ecuación cuadrática ax2
+
bx +
e,
solve('a*xA2+b*x +c ' )
regresa
ans
1/2/a* ( -b+ (bA2-4*a*c) A ( 1/2»
1/2/a* (-b- (bA2-4*a*c) A ( 1/2»
=
MATLAB resuelve preferentemente para
encuentra la variable más cercana a
x.
Idea clave: MATLAB
resuelve preferentemente
x.
Si no hay
x
en la expresión, MATLAB
Si quiere especificar la variable por resolver, sólo in-
386
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
'
clúyala en el segundo campo. Por ejemplo, para resolver la ecuación cuadrática para a, el
comando
sol ve('a*xA2+b*x +c' , 'a')
regresa
ans =
- (b*x+c)/xA2
De nuevo, si a se definió específicamente como variable simbólica, no es necesario
encerrarla entre apóstrofes:
syms a b c x
sol ve(a*x*xA2+b*x+c , b)
ans =
- (a*xA3+c)/x
Para resolver una expresión igualada a algo, además de cero requiere que use uno de
dos enfoques. Si la ecuación es simple, puede transformarla en una expresión al restar eI Iado
derecho del lado izquierdo. Por ejemplo,
5X2
+ 6x + 3
=
10
se podría reformular como
sx2 + 6x
Idea clave: incluso
cuando el resultado de
la función solve sea
un número, todavía se
almacena como una
variable simbólica.
7
=
O
solve('S*xA2+6*x-7')
ans =
- 3/S+2/S* 1 1A ( 1/2)
- 3/S-Z/S*1 IA ( I/2)
Si la ecuación es más compli cada, debe definir una nueva ecuación, como en
EZ=sym('S*xAZ + 6*x +3=10' )
sol ve(E2)
que regresa
ans
-3/S+2/S* 11A(I/Z)
- 3/S-2/S * 1 1 A ( 1/2)
Note que, en ambos casos, los resultados se expresan tan simplemente como sea posible
usando fracciones (es decir: números racionales). En el área de trabajo, ans se menciona como
matriz simbólica 2 x l. Puede usar la función doubIe para convertir una representación sim­
bólica a un número punto flotante de precisión doble:
double(ans)
ans =
0.7266
- 1.9266
Sección
Resolución de expresiones
http://jurgensoft.co.cc
11.2
Sugerencia
Puesto que las capacidades simbólicas de MATLAB se basan en Mapte, necesita
entender cómo Maple maneja los cálculos. Maple reconoce dos tipos de datos
numéricos: enteros y punto flotante. Los números punto flotante se consideran
aproximaciones y usan punto decimal, mientras que los enteros son exactos y se
representan sin punto decimaL En los cálculos que usan enteros, Maple fuerza
una respuesta exacta, que resulta en fracciones. Si hay punto decimal (números
punto flotante) en los cálculos Maple, el resultado también será una aproximación
y contendrá punto decimal. Maple tiene por defecto 32 cifras significativas, de
modo que en los resultados se muestran 32 dígitos. Considere un ejemplo que
usa
solve. Si la expresión usa números punto flotante, se obtiene el siguiente
resultado:
sol ve( ' 5.0*xA2.0+6.0*x-7.0 ' )
ans =
.72664991614215993964597309466828
- 1.9266499161421599396459730946683
Si la expresión usa enteros, los resultados son fracciones:
sol ve( ' S*xA2+6*x -7 ' )
ans =
- 3/S+2/S*11A(1/2)
-3/5-2/5*11A(1/2)
L a función
solve es particularmente útil con expresiones sintbólicas con múltiples va­
riables:
E3=sym( ' P=PO*exp(r*t) ' )
sol ve (E3. t ' )
J
ans
l og (P/PO) /r
=
Si anteriormente definió
t como variable simbólica, no necesita apóstrofes. (Recuerde
que la función log es un logaritmo natural.)
Con frecuencia es útil redefinir una variable, como t, en términos de las otras variables:
t=sol ve(E3, ' t ' )
t =
l og (P/PO) /r
Eiercicio de práctica
11.3
Use las variables y expresiones que definió en la práctica 11.1 para resolver estos
ejercicios:
1. Use la función solve para resolver las cuatro versiones de expresiónJecuación
1:
ex1, EX1 , eq1 y EQ1.
2. Use la función solve para resolver las cuatro versiones de expresiónJecuación
2: ex2, EX2, eq2 y EQ2.
y ecuaciones
387
388
Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
3. Use la función
solve para resolver ex3 y eq3 tanto para x como para a.
4. Use la función solve para resolver EX3 y
Recuerde que ni
S. Use la función
EQ3 tanto para X como para A.
X ni A se definieron explícitamente como variable simbólica.
solve para resolver ex4 y eq4 tanto para x como para
a.
6. Use la función solve para resolver EX4 y EQ4 tanto para X como para A.
Recuerde que ni
X ni A se definieron explícitamente como variable simbólica.
7. Las cuatro versiones de expresión/ecuación 4 representan la ecuación
cuadrática, la forma general de un polinomio de segundo orden. La solución
de esta ecuación para
x
usualmente la memorizan los estudiantes en las
primeras clases de álgebra. La expresión/ecuación S en estos ejercicios es
la forma general de un polinomio de tercer orden. Use la función
solve para
resolver estas expresiones/ecuaciones y comente por qué los estudiantes no
memorizan la solución general de un polinomio de tercer orden.
8. Use la función solve para resolver ex6, EX6, eq6 y EQ6. Sobre la base de su
conocimiento de trigonometría, comente esta solución.
•!"MU'·lil.
U so de matemática simbólica
Las capacidades simbólicas de MATLAB le permiten hacer que la computadora haga las ma­
temáticas. Considere la ecuación para difusividad:
Resuelva esta ecuación para
Q usando MATLAB.
l. Establezca el problema.
Encontrar la ecuación para
Q.
2. Describa las entradas y salidas.
Entrada
Ecuación para
Salida
Ecuación para
D
Q
3. Desarrolle un ejemplo a mano.
D Doexp(��)
�o (�;)
(!!"'Do )
= (�)
=
=
ln
=
Q
exp
-Q
RT
RTln
Note que el signo menos hizo que se inviertan los valores dentro del logaritrno naturaL
4. Desarrolle una solución MATLAB.
Defma primero una ecuación simbólica y asígnele un nombre (recuerde que está bien
colocar una igualdad dentro de la expresión):
Sección 1 1 .2 Resolución de expresiones
http://jurgensoft.co.cc
x
sym( ' O = OO*exp(-Qj(R*T) ) ')
X
O = OO*exp (-Qj (R*T) )
Ahora pida a MATLAB resolver la ecuación. Es necesario aclarar que MATLAB resol­
verá para
Q, y
que
Q necesita estar entre apóstrofes, porque no se definió por separado
como variable simbólica:
sol ve(X , ' Q ' )
ans =
- 1 og (OjOO) *R*T
De manera alternativa, se podría definir la respuesta como Q:
Q = sol ve(X , ' Q ' )
Q =
- l og (OjOO) *R*T
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. La única diferencia es que se
empujó el signo menos dentro del logaritmo. Note que MATLAB (así como la mayo­
ría de los programas de cómputo) representa In como
loglO).
log (logiO se representa como
Ahora que se sabe que esta estrategia funciona, se podría resolver para cualquiera
de las variables. Por ejemplo, se podría tener
T=sol ve (X , 'T ' )
T =
-Qjl og(OjOO)jR
�
Sugere n cia
El comando
findsym es útil para determinar cuáles variables existen en una
expresión o ecuación simbólica. En el ejemplo previo, la variable X se definió como
X = sym( ' O = OO*exp (-Qj(R*T) ) ' )
La función
findsyrn identifica todas las variables, ya sea que se definieron
explícitamente o no:
fi ndsym(X)
ans =
O , DO , Q , R , T
11.2.2
Resolución de sistemas de ecuaciones
La función
solve no sólo puede resolver ecuaciones o expresiones sencillas para algunas de
las variables incluidas, también puede resolver sistemas de ecuaciones. Tome, por ejemplo,
estas tres ecuaciones simbólicas:
one = sym( ' 3*x + 2*y -z = 10 ' ) ;
two = sym ( ' -x + 3*y + 2*z = 5');
three = sym ( ' x - y - z = - 1 ' ) ;
Para resolver las tres variables incrustadas x,
ciones en la función
solve:
y y z, simplemente mencione las tres ecua­
y ecuaciones
389
390
Capítulo 1 1
Matemático simbólico
Idea clave: la función
solve puede resolver
sistemas de ecuaciones
tanto lineales como no
lineales.
http://jurgensoft.co.cc
an5wer::501 ve(one , two , three)
answer =
x : [IxI sym]
y : [IxI sym]
z : [IxI sym]
Estos resultados son intrigantes. Cada respuesta se menciona como una variable sim­
bólica 1 X 1, pero el programa no revela los valores de dichas variables. Además,
answer se
menciona en la ventana del área de trabajo como un arreglo estructura 1 X l. Para acceder a
los valores reales, necesitará usar la sintaxis del arreglo estructura:
Idea clave:
los resultados de la
función solve
simbólica se mencionan
alfabéticamente.
an5wer.x
an5 ::
-2
an5we r . y
ans =
5
an5wer . z
an5 ::
-6
Para forzar los resultados a desplegarse sin usar un arreglo estructura y la sintaxis aso­
ciada, debe asignar nombres a las variables individuales. Por tanto, para el ejemplo, se tiene
[x , y , z]=501 ve (one , two , t hree)
x =
-2
Y ::
5
z =
-6
Los resultados s e asignan alfabéticamente. Por ejemplo, si l as variables que usó e n sus
expresiones simbólicas son q,
dientemente
x y p, los resultados se regresarán en el orden p, q, x, indepen­
de los nombres que asignó para los resultados.
Note en el ejemplo que x,
yy
z
todavía se mencionan como variables simbólicas, aun
cuando los resultados sean números. El resultado de la función solve es una variable simbóli­
•
ca, o ans o un nombre definido por el usuario. Si quiere usar dicho resultado en una expresión
MATLAB que requiere una entrada punto flotante de precisión doble, puede cambiar el tipo
de variable con la función double. Por ejemplo,
doubl e (x)
cambia x de una variable simbólica a una variable numérica correspondiente.
Sugerencia
Usar la función solve para ecuaciones múltiples tiene ventajas y desventajas sobre el
uso de las técnicas del álgebra lineal. En
si un problema se puede resolver
mediante matrices, la solución matricial tornará menos tiempo de cómputo. Sin
embargo, el álgebra lineal está limitada a ecuaciones de primer orden. La funcÍón
solve
puede tardar más, pero puede resolver problemas no lineales y problemas con
variables simbólicas. La tabla 11.2 menciona algunos usos de la función solve.
Sección 1 1 .2 Resolución de expresiones
http://jurgensoft.co.cc
Tabla 1 1.2
Uso de la función solve
sol ve(5)
resuelve una expresión con
una sola variable
sol ve ( ' x- S ' )
ans
S
sol ve(5)
resuelve una ecuación con
una sola variable
sol ve ( ' xA2-2=S ' )
ans =
7A ( 1/2)
-7A ( lj2)
sol ve(5)
resuelve una ecuación cuyas
soluciones son números complejos
sol ve ( ' xA2=- S ' )
ans =
i * S A ( 1/2)
- i * SA ( 1/2)
sol ve(5)
resuelve una ecuación con más de
una variable para x o la variable
más cercana a x
sol ve ( ' y=xA2+2 ' )
ans =
(y- 2 ) A ( 1/2)
- (y - 2 ) A (1/2)
solve (5 , y)
resuelve una ecuación con más de
una variable para una variable
especificada
sol ve ( ' y+6*x ' )
ans =
- 1/6*y
solve (51 , 52 , 53)
resuelve un sistema de ecuaciones
y presenta las soluciones como un
arreglo estructura
one = sym ( ' 3*x+2*y
- z = 10 ' ) :
two = sym ( ' -x+3*y+2
*z =5 ' ) ;
three =sym ( ' x - y
- z = - 1 ' );
sol ve (one,two , th ree)
ans =
x : [lxl sym]
y : [lxl sym]
z : [lxl sym]
[A , B , e]= sol ve
(51 , 52 , 53)
resuelve un sistema de ecuaciones
y asigna las soluciones a nombres
de variable definidos por el usuario.
Los resultados se despliegan
alfabéticamente
one = sym ( ' 3 *x+2*y
-z = 10 ' ) ;
two = sym ( ' -x+3*y+2
*z = S ' ) :
three = sym ( ' x - y
- z = -1 ' ):
[x , y , z]=sol ve (one ,
two , three)
x =
-2
Y
S
z
-6
Ejercicio de práctica 11.4
Considere e l siguiente sistema d e ecuaciones lineales para usar e n los problemas del
1 al 5:
y ecuaciones
391
392
Capítulo 1 1
Malemótica simbólica
http://jurgensoft.co.cc
5x+ 6y 3z
3x - 3y + 2z
2x - 4y - 12z
=
=
10
14
24
l. Resuelva este sistema de ecuaciones mediante las técnicas del álgebra lineal
discutidas en el capítulo 9.
2. Defina una ecuación simbólica que represente cada ecuación en el sistema de
ecuaciones dado. Use la función solve para resolver para x, y y z.
3. Despliegue los resultados del problema 2 con la sintaxis del arreglo
estructura.
4.
Despliegue los resultados del problema 2 especificando los nombres de salida.
5. Agregue puntos decimales a los números en sus definiciones de ecuación y
use
6.
solve de nuevo. ¿Cómo cambian sus respuestas?
Considere el siguiente sistema de ecuaciones no lineales:
X2 + 5y
4x + y2
x+y+z
Z
15
10
15
Resuelve el sistema no lineal con la función solve. Use la función double en
sus resultados para simplificar la respuesta.
1 1.2.3
Sustitución
En particular para ingenieros o científicos, una vez que se tiene una expresión simbólica, con
frecuencia se quiere sustituir valores en ella. Consi dere de nuevo la ecuación cuadrática:
E4 = sym ( ' a*xA2+b*x+c ' )
Idea clave: si una
variable no se menciona
como variable simbólica
en la ventana del área de
•
trabajo, se debe encerrar
en apóstrofes cuando se
use en la función
subs.
Existen algunas sustituciones que se pueden hacer. Por ejemplo, es posible que se quiera
cambiar la variable
x
en la variable
y. Para lograr esto, la función subs requiere tres entradas:
y
la expresión a modificar, la variable a modificar y la nueva variable a insertar. Para sustituir
para todas las
x,
se usaría el comando
subs (E4 , ' x ' ' y ' )
•
que regresa
ans
a* (y)A2+b* (y)+c
La variable E4 no se cambió; en vez de ello, la nueva información se almacenó en
o se le podría dar un nuevo nombre, como
E5:
E S =subs (E4, ' x ' , ' y ' )
ES
a* (y)A2+b* (y)+c
=
Al recordar E4, se ve que permanece invariable:
E4
E4 =
a*xA2+b*x+c
ans,
Sección 1 1 .2 Resolución de expresiones
http://jurgensoft.co.cc
Para sustituir números, se usa el mismo procedimiento:
subs(E4 , 'x' , 3)
ans =
9*a+3*b+c
Como con otras operaciones simbólicas, si las variables se definieron anteriormente de
manera explícita eomo simbólieas, no se requieren los apóstrofes. Por ejemplo,
syms a b e x
subs(E4 , x , 4)
regresa
ans =
16*a+4*b+c
Se pueden realizar múltiples sustituciones al mencionar las variables dentro de llaves,
lo que define un arreglo celda:
s ub s (E4 , {a , b , c , x} , {1 , 2 , 3 , 4} )
ans =
27
Incluso se puede sustituir e n arreglos numéricos. Por ejemplo, primero cree una nueva
expresión que contenga sólo x:
E6=subs (E4 , {a , b,c} , {1 , 2 , 3 } )
Esto produce
E6 =
xA2+2*x+3
Ahora se define un arreglo de números y se les sustituye en E6:
numbers = 1 : 5;
subs(E6 , x , numbers)
ans
6
18
27
11
38
N o s e podría realizar esto en u n solo paso, porque cada uno de los elementos del arre­
glo celda almacenados entre llaves debe tener el mismo tamaño para que funcione la función
subs.
Eiercicio de práctica 1 1.5
1. Con la función subs, sustituya 4 en cada expresión/ecuación definida en la
práctica 11.1 para x (o X). Comente sus resultados.
2. Defina un vector v de los números pares del O al 10. Sustituya este vector
en las cuatro versiones de expresión/ecuación: ex!,
EXl, eql
y EQl. ¿Esto
funciona para las cuatro versiones de la expresión/ecuación? Comente sus
resultados.
y ecuaciones
393
394
Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
3. Sustituya los siguientes valores en las cuatro versiones de expresión/ecuación 4,
ex4, EX4, eq4 y EQ4 (éste es un proceso de dos pasos porque x es un vector):
a
=
3
b
=
4
e
=
x
=
A
B
o
5
e
1:0.5:5
X
=
=
=
=
3
4
5
1:0.5: 5
4. Verifique sus resultados para el problema 3 en la ventana del área de trabajo.
¿Qué tipo de variable es su resultado, doble o simbólico?
U so de las matemáticas simbólica s para resolver un problema
de balística
Se pueden usar las capacidades de las matemáticas simbólicas de MATLAB para explorar las
ecuaciones que representan la ruta seguida por un proyectil sin combustible, como la bola de
cañón que se muestra en la figura 11.4.
Se sabe por la física elemental que la distancia que recorre horizontalmente un proyectil es
dx = Vi cos(8)
y la distancia recorrida verticalmente es
dy
=
Vol sen(8)
-
1
"2gt2
donde
Vo
8
g
velocidad en el lanzamiento,
=
tiempo,
=
ángulo de lanzamiento, y
aceleración debida a la gravedad.
Use estas ecuaciones y la capacidad simbólica de MATLAB para derivar una ecuación para la
distancia que recorre horizontalmente el proyectil cuando golpea el suelo (el rango).
1. Establezca el problema.
Encontrar la ecuación del rango.
Distancia horizontal
Distancia
vertical
Figura
1 1 .4
El rango de un proyectil
depende de la velocidad
i nicial y el á ngulo de
lanzamiento.
Rango
11.2
Sección
Resolución de expresiones
http://jurgensoft.co.cc
2. Describa las entradas y salidas.
Entrada
Ecuaciones para distancias horizontal y vertical
Salida
Ecuación para rango
3. Desarrolle un ejemplo a mano.
dy
1
=
vot sen (e) - -gt
2
2
=
O
Reordene para obtener
vol sen (e)
Divida entre
=
1 2
-gt
2
t y resuelva:
t
=
Ahora sustituya esta expresión para
tener
dx
=
rango
=
2vo sen (O)
-'-'-"-
-
t en
g
la fórmula de la distancia horizontal para ob­
vot cos(e)
vo*
(2VoSen(0)) cos(e)
g
Por la trigonometría se sabe que 2 sen O cos O es lo mismo que sen(2 O), que permitiría
una mayor simplificación si se desea.
4. Desarrolle una solución MATLAB.
Defina primero las variables simbólicas:
syms vO t theta 9
A continuación defma la expresión simbólica para la distancia vertical recorrida:
Di stancey
=
vO * t *si n (theta) - lj2*g*tA2;
Ahora defina la expresión simbólica para la distancia horizontal recorrida:
Di stancex
=
vO * t * cos(theta) ;
Resuelva la expresión de distancia vertical para el tiempo de impacto, pues la distancia
vertical = O al impacto:
i mpact_ti me
=
sol ve (Di stancey,t)
Esto regresa dos respuestas:
i mpact_ti me
O]
[
[ 2 *vO* s i n (theta)jg]
=
-ic
Este resultado tiene sentido, pues la distancia vertical es cero al lanzarniento y de nuevo
en el impacto. Sustituya el tiempo de impacto en la expresión de distancia horizontal.
Dado que sólo se tiene interés en el segundo tiempo, necesitará usar
i mpact_di stance
=
impacCtime(2):
subs (Di stancex , t , i mpact_ti me ( 2 ) )
y ecuaciones
395
396
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
La sustitución resulta en una ecuación para la distancia que el proyectil recorre cuando
golpea el. suelo:
i mpact_d i stance =
2*vOA2*s i n (theta)/g*cos (theta)
5. Ponga a prueba la solución.
Compare la solución MATLAB con la solución a mano. Ambos enfoques dan el mismo
resultado.
MATLAB puede simplificar el resultado, aunque ya es bastante simple. Se elige
usar el comando simple para demostrar todas las posibilidades. El comando
s i mple ( i mpact_di stance)
da los siguientes resultados:
s impli fy :
rads i mp :
combi ne(tri g) :
facto r :
expand :
combi ne :
convert (exp) :
convert ( s i ncos) :
convert (tan ) :
collect (vO) :
mwcos2si n :
2*vOA2*si n (theta) /g*cos (theta)
2*vOA2*s i n (theta)/g*cos (theta)
vOA2*si n (2*theta)/g
2*vOA2*si n (theta)/g*cos (theta)
2*vOA2*s i n (theta) /g*cos (theta)
vOA2*si n (2*theta)/g
-;*vOA2*(exp(;*theta) 1/exp( i *theta) ) /g* (lf2*exp (i *theta)+
1/2jexp(;*theta) )
2*vOA2*s i n (theta)/g*cos (theta)
4*vOA2*tan ( 1/2*theta)j
(1+tan ( 1/2*theta)A2)A2jg*
(1-tan (1/2*theta) A2)
2*vOA2*s i n (theta)/g*cos (theta)
2*vOA2*si n (theta)lg*cos(theta)
ans =
vOA2*si n (2*theta)jg
GRAFICACIÓN SIMBÓLICA
11.3
La caja de herramientas simbólica incluye un grupo de funciones que le permiten graficar
funciones simbólicas. La más básica es
1 1.3.1
ezplot.
la función ezplot
Considere una función simple de x, como
y=sym ( ' xA2-2 ' )
Para graficar esta función, use
ezplot(y)
La gráfica resultante se muestra en la figura 1l.5. La función
ezplot tiene por defecto
una x que varía de -27T a +27T. MATLAB creó esta gráfica al elegir valores de x y calcular
correspondientes valores de y, de modo que se produjo una curva suave. Note que la expresión
graficada se despliega automáticamente como el título de una
ezplot.
El usuario que no quiera aceptar los valores por defecto puede especificar los valores
mínimo y máximo de x en el segundo campo de la función
ezplot:
http://jurgensoft.co.ccSección 1 1.3
Figura
Polinomio de segundo orden
x2-2
40
100
30
;;..,
20
;;..,
50
10
O
O
-10
O
-5
-5
x
O
5
Graficación simbólica
10
x
397
1 1 .5
las expresiones simbólicas
se pueden groficar con
ezplot. En la gráfica de
la i zquierda, el título por
defecto es la expresión
graficada y el rango por
defecto es -211 a +211. En
la gráfica de la derecha,
títulos, etiquetas y otras
anotaciones se agregan a
ezplot con las funciones
MATLAB estándar.
ezplot (y , [-10 , 10])
Los valores se encierran en corchetes, lo que indica quc son elementos en el arreglo
que define los extremos de la gráfica. Además, puede especificar títulos, etiquetas de ejes y
MATLAB. Por ejemplo, para agregar un título
anotaciones, tal como hizo para otras
y etiquetas a la gráfica, use
t i tle ( ' Poli nomi o de segundo orden')
xlabel ('x')
ylabel ('y')
La función
ezplot también le permite
graficar funciones implícitas de x y y, así como
funciones paramétricas. Por ejemplo, considere la ecuación implícita
x2+y2
1
que puede reconocer como la ecuación de un círculo de radio l. Podría resolver para y, pero
no es necesario con
ezplot. Cualquiera de los comandos
ezplot('xA2 + yA2 = 1 ' , [- 1 . 5 , 1.5])
ezplot('xA2 + yA2 - 1 ' , [- 1 . 5 , 1.5])
y
z=sym('xA2 + yA2 _1')
ezplot (z , [ - 1 . 5 , 1 . 5])
se puede usar para crear la gráfica del círculo que se muestra en el l ado izquierdo de la figura
11.6.
Otra forma de definir una ecuación es paramétricamente; esto es: definir ecuaciones
separadas para x y para
y
en términos de una tercera variable. Un círculo se puede definir
paramétricamente como
ecuaciones que definen
x = sen(t)
x
y = cos(t)
Para graficar el círculo paramétricamente con
simbólica para x y luego para y:
ecuaciones
paramétricas:
y y en términos de otra
variable, usualmente t
ezplot,
mencione primero la expresión
,
ezplot ( ' sen(x) ,'cos (x) ' )
Los resultados se muestran en el lado derecho de la figura 1 1.6.
Aunque la anotación de gráficas se realiza de la misma forma para
simbólicas que
para gráficas numérica., estándar, con la finalidad de graficar múltiples líneas en la misma gráfica,
necesitará usar el comando hold on. Para ajustar colores, estilos de línea y estilos de marcador, use
398
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
x
1.5 ,------,
sen(x), y
cos(x)
1
0.5
Figura
1 1 .6
La función ezplot se
puede usar para graficar
funciones tanto implícitas
como paramétricas,
además de funciones de
una sola variable.
o
-0.5
-1
-1.5
L--��__�___�_....J
-1
O
x
1
x
las herramientas interactivas disponibles en la ventana de graficación. Por ejemplo, para graticar
sen(x), sen(2x) y sen(3x) en la misma gráfica, primero defina algunas expresiones simbólicas:
yl=sym ( ' sen(x) ' )
y2=sym ( ' sen(2*x) ' )
y3=sym ( ' sen (3*x) ' )
Luego grafique cada expresión:
ezplot (yl)
hold on
ezplot (y2)
ezplot(y3)
Los resultados se muestran en la figura 11.7. Para cambiar los colores de línea, los esti­
los de línea o los estilos de marcador, necesitará seleccionar la flecha en la barra de menú (en
círculo en la figura) y luego seleccionar la línea que le gustaría editar. Una vez que seleccione
la línea, haga clic derecho para activar el menú de edición. No olvide emitir el comando
hold off
una vez que realice la graficación.
.....
Sugerencia
La mayoría de las funciones simbólicas le permitirán ingresar una variable simbólica
que represente una función o ingresar la función misma encerrada entre apóstrofes.
Por ejemplo,
y=sym ( ' xA2 - I ' )
ezplot(y)
es equivalente a
ezplot ( ' xA2 - I ' )
Eiercicio de práctico 11.6
Asegúrese de agregar títulos y etiquetas de
1. Use ezplot para graficar ex1 desde
-
a todas sus gráficas.
27T hasta
+ 27T.
http://jurgensoft.co.ccSección
11.3
Graficac ión simbólica
399
2. Use ezplot para graficar EX1 desde -21T hasta +21T.
3. Use
ezplot para graficar ex2 desde -10 hasta+ 10.
4. Use
ezplot para graficar EX2 desde
10 hasta + 10.
5. ¿Por qué no se pueden graficar las ecuaciones con sólo una variable?
6. Use
ezplot para graficar ex6 desde -27T hasta +27T.
7. Use
ezplot para graficar cos(x) dcsde -27T hasta + 27T. No defina una
ezplot como una cadena carácter:
expresión para cos(x); sólo ingrésela en
ezplot('cos(x)')
8.
Use
ezplot para crear una gráfica implícita de xA2 - yA4=5.
9 . Use ezplot para graficar sen(x) y cos(x) en la misma gráfica. Use las
herramientas interactivas de graficación para cambiar el color de la gráfica seno.
10. Use
ezplot para crear una gráfica paramétrica de x = scn(t) y y = 3 cos(t).
11.3.2 Gráficas simbólicas adicionales
Las funciones de graficación simbólica adicionales que reflejan las funciones que se usan
en las opciones de graficación numéricas MATLAB se citan en la tabla 11.3.
Para demostrar cómo trabajan las funciones de graficación de superficie tridimensional (ezmesh, ezmesch, ezsurf y ezsurfc), primero defina una versión simb6lica de la función peaks:
zl =sym ( ' 3* (1-x) A2*exp( - (xA2) - (y+l) A2 ) ' )
z2=sym( ' - lO*(x/5 - xA3 - yA5) *exp (-xA2-y A2) ' )
z3=sym( ' - 1/3*exp( - (x+l) A2 - yA2) ' )
z=zl+z2+z3
Esta función s e descompone e n tres partes para hacerla más fácil de ingresar e n la compu­
tadora. Note que en estas expresiones no se usan operadores "punto", pues todos son simbóli­
cos. Las funciones
ezplot funcionan de manera similar a sus contrapartes numéricas:
Figura 11.7
Use las herramientas
interactivas de g raficación
para ajustar estilo de línea,
color y marcadores.
400
Capítulo 11
Matemática simbólica
Idea clave: la mayoría
http://jurgensoft.co.cc
Tabla 1 1 .3 Funciones de graficación simbólica
de las funciones de
z es
una función de x; ezp 1 ot (z)
graficaCÍón MATLAB para
ezplot
graficador de función
si
arreglos tienen funciones
ezmesh
gráfico molla
si z es uno función de x y y: ezmesh (z)
graficador combinado molla
si
z es
una función de x y y: ezmeshc (z)
si
z es
una función de x y y: ezsurf(z)
correspondientes para
aplicaciones simbólicas.
ezmeshc
y contorno
ezsur f
graficador d e superficie
ezsur fc
graficador combinado superficie si
y contorno
ezcontour
graneador contorno
si z es una función de x y y:
ezcontou r (z)
ezcontourf
graficador contorno lleno
si z es una función de x y y:
ezcontourf(z)
ezpl ot3
graneador curva paramétrica
tridimensional
y si
graficador coordenada polar
si r es una función de O: ezpol ar(r)
ezpol ar
z
es una función de x y y: ezsurfc (z)
si x es uno función de t, si y es una función de t
z es una función de t
ezpl ot3 (x , y , z)
subpl ot (2 , 2 , 1)
ezmesh (z)
t i tl e ('ezmesh')
Las gráficas que resultan de estos comandos se
subpl ot (2,2 , 2)
ezmeshc (z)
t i t l e('ezmeshc')
arreglo de valores x y y, ponerlos en malla y
muestran en la figura 1 1 .8. Cuando se crearon
las mismas gráficas mediante un enfoque
MATLAB estándar, fue necesario definir un
calcular los valores de z sobre la base de los
arreglos bidimensionales. La capacidad de
graficación simbólica contenida en la caja
de herramientas simbólica hace mucho más
•
subpl ot(2. 2,3)
ezsur f(z)
t i tl e ( ' ezsurf')
subpl ot (2,2 . 4)
ezsurfc (z)
t i tl e ('ezsurfc ' )
sencilla la creación de estas gráficas.
Todas estas gráficas se pueden anotar con el
uso de las funciones MATLAB estándar, como
title, xIabel, text, etcétera.
Las gráficas bidimensionales y de contorno también son similares a sus contrapartes
numéricas:
subpl ot (2,2 ,l)
ezcontour (z)
ti tl e ('ezcontou r')
Estas gráficas de contorno son una representa­
ción bidimensional de la función
peaks
tridimensional y se muestran en la figura 1 1.9.
La gráfica polar requiere defmir una nueva
subpl ot(2 , 2 , 2)
ezcontour f(z)
t i tl e ('ezcontourf')
subpl ot (2,2 , 3)
z=sym('s i n (x) ')
ezpol ar (z)
t i tl e ('ezpol ar')
subpl ot (2,2 , 4)
ezpl ot (z)
t i tl e ( ' ezplot')
función, que también se graficó con el uso de
la ezplot básica.
http://jurgensoft.co.ccSección 1 1 .3
ezmesh
10
O
O
2
O
Y
: . ',
. ', �
..
. .
-2
. . .. ..
-2
.
'
-10
O
2
x
ezsurf
ezsurfc
..
10
10
O
O
-10
2
O
Y
-".: ' : , : :
. .
: . .. .
-2
'
-2
.
.
Figura
-10
O
-2
x
1 1 .8
Ejemplos de gráficas
de superficie simbólica
tridimensional.
2
x
ezcontourf
ezcontour
3
3
2
2
1
1
;>,
40 1
ezmeshc
10
-10
Graficación simbólica
O
;>,
-1
O
-1
-2
-2
-3
-3
O
-2
-2
2
x
2
x
ezpolar
90
O
1
ezplot
1
0.5
O
-0.5
210
Figura
-1
270
r
=
sen(x)
-5
O
x
5
1 1 .9
Ejemplos de gráficas
simbólicas bidimensional
y de contorno.
402
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
E j erc i c i o de prác ti c a
Cree una expresión simbólica para Z
1 1 .7
=
sen
(v
X2 +
y2).
l. Use ezmesh para crear una gráfica d e malla de Z. Asegúrese d e agregar un
título y etiquetas de ej e.
2 . Use
ezmeshc para crear una combinación de gráfica de malla y contorno de
Z. Asegúrese de agregar un título y etiquetas de eje .
3 . Use ezsurf para crear una gráfica d e superficie de Z. Asegúrese d e agregar un
título y etiquetas de ej e.
4.
Use
ezsurfc para crear una combinación de gráfica de superficie y de
contorno de Z. Asegúrese de agregar un título y etiquetas de ej e.
5 . Use
ezcontour para crear una gráfica de contorno de Z. Asegúrese de agregar
un título y etiquetas de eje.
6. Use ezcontourf para crear una gráfica de contorno llena de Z. Asegúrese de
agregar un título y etiquetas de eje.
7. Use ezpolar para crear una gráfica polar de x sen(x). No defina una expresión
simbólica, ingrese esta expresión directamente en
ezpolar:
ezpolar('x*sen(x)')
Asegúrese de agregar un título.
8. La función ezplot3 requiere definir tres variables como función de una cuarta.
Para hacerlo, primero defina t como una variable simbólica, y luego haga
x = t
Y = senCt)
z = cos(r)
Use ezplot3 para graficar esta función paramétrica desde O hasta 30. Es
posible que tenga problemas al crear gráficas
ezplot3 dentro de ventanas
de sub gráfica, debido a una idiosincrasia de programa MATLAB. Versiones
posteriores pueden corregir este problema .
•,,,Mél-I',-
Uso de graficación simbólica para ilustrar un problema de balística
En el ejemplo 1 1 .2 se usaron las c apacidades simbólicas de MATLAB para derivar una ecua­
ción para la distancia que recorre un proyectil antes de golpear el suelo. La fórmula de distan­
cia horizontal
dx =
Vi cosCO)
y la fórmula de distancia vertical
dy
=
vot sen(e)
donde
Va
t
O
g
velocidad en el lanzamiento,
=
tiempo,
=
ángulo de lanzamiento, y
aceleración debida a la gravedad.
-
1
'2 gt2
http://jurgensoft.co.ccSección 1 1 .3
se combinaron para dar
Vo (2Vo g )
sen ( 8 )
rango
=
cos ( 8 )
100
Con las capacidades d e graficación simbólica d e MATLAB, cree una gráfica que muestre el
rango recorrido para ángulos desde O hasta 17/2. Suponga una velocidad inicial de
una aceleración debida a la gravedad de 9.8 mls2•
mis y
1 . Establezca el problema.
Grafique el rango como función del ángulo de l anzamiento.
2. Describa las entradas y salidas.
Entrada
Ecuación simbólica para rango
Vo 100
=
mis
g = 9 . 8 mls2
Salida
Gráfic a de rango contra ángulo
3. Desarrolle un ejemplo a mano.
rango =
Vo(2Vo Sen(8))
g
cos ( 8 )
Por l a trigonometría s e sabe que 2 sen 8 c o s 8 es igual a sen(28). Por tanto, s e puede
simplificar el resultado a
rango
=
V6
g sen ( 2 8 )
Con esta ecuación, es fácil calcular unos cuantos puntos de datos:
Ángulo
Rango, m
O
O
17/6
884
17/4
1 020
71'/3
884
17/2
O
El rango parece aumentar con ángulo creciente y luego disminuye de nuevo a cero
cuando el cañón apunta directo hacia arriba.
4. Desarrolle una solución MATLAB.
Primero se necesita modificar la ecuación del ejemplo
11.2
para incluir la velocidad de
lanzamiento y la aceleración debida a la gravedad. Recuerde que
i mpact_di stance
2*vOA2*si n (theta)/g*cos (theta)
=
Use la función subs para sustituir los valores numéricos en la ecuación:
i mpact_100
=
subs (i mpact_di stance , {vO , g} , { lOO , 9 . 8} )
Graficación simbólica
403
404
Capítulo 1 1
Matemática -simbólica
http://jurgensoft.co.cc
Esto regresa
i mpact_lOO
lOOOOO/49*s i n (theta) *cos (theta)
=
Finalmente, grafique los resultados y agregue un título y etiquetas:
ezplot ( i mpact_lOO , [O , p i /2 ] )
ti tle ( ' Oi stan c i a máxima recorr i da por e l p royecti l ' )
xlabel( ' ángulo , radi anes ' )
ylabel ( ' rango , m ' )
5.
Esto genera la figura
1 1.1 O.
Ponga a prueba la solución.
La solución MATLAB concuerda con la solución a mano. El rango es cero cuando el .
cañón apunta recto hacia arriba y también es cero cuando se apunta horizontalmente. El
rango parece tener un pico a un ángulo de aproximadamente 0.8 radianes, que corres­
ponde más o menos a 45 grados.
Distancia máxima recorrida por el proyectil
1 000
800
E
6
CO
e
ro
o::
600
+00
200
o
Figura
o
1 1.10
0.5
Rango de proyectil.
1
1.5
Ángulo, radianes
11.4
CÁLCULO
La caj a de herramientas simbólica de MATLAB permite al usuario diferenciar simbólica­
mente y realizar integraciones. Esto hace posible encontrar soluciones analíticas, en lugar de
aproximaciones numéricas, para muchos problemas.
1 1.4.1
Diferenciación
El cálculo diferencial se estudia extensamente en el cálculo de primer semestre. La derivada se
puede considerar como la pendiente de una función o como la tasa de cambio de la función. Por
ejemplo, considere un auto de carreras. La velocidad del automóvil se puede aproximar como
el cambio en distancia dividido por el cambio en tiempo. Suponga que, durante una carrera, el
automóvil parte lentamente y alcanza su mayor rapidez en la línea final . Desde luego, para
evitar precipitarse sobre las gradas, el automóvil debe frenar entonces hasta detenerse final-
http://jurgensoft.co.cc
Sección 1 1 .4
Cálculo
405
Posición del automóvil
cd
]
40
35
cd
o. 30
<ll
"O
cd
<ll 25
¡..,
ª
..§! 20
<ll
"O
en
<ll
Figura
"O 15
cd
'13
<=:
lO
i5
5
.s
en
O
L5
LO
5
O
Tiempo.
20
s
mente. Se debe modelar la posición del automóvil con una onda seno. como se muestra en la
figura 11. 1 1 . La ecuación relevante es
d
=
20
+
20 sen
La gráfica en la figura 1 1 . 1 1 se creó con
(7T(1 - 10) )
20
ezplot y matemáticas simbólicas. Primero se
define una expresión simbólica para distancia:
dist
=
sym ( ' 20+20*si n (p i * (t - lO)j20) ' )
Una vez que se tiene la expresión simbólica, se le puede sustituir en la función ezplot y
anotar la gráfica resultante:
ezplo t (di st , [O , 20] )
t i tle ( ' Posi c i ón del auto ' )
xlabel ( ' ti empo , s ' )
yl abel ( ' Oi stanci a desde l a l í nea de parti da ' )
text (lO , 20 , ' Lí nea f i nal ' )
MATLAB incluye una función llamada diff para encontrar la derivada de una expresión
simbólica. (La palabra
diferencial es otro término para la derivada.) La velocidad
es la deri­
vada de la posición, de modo que, para encontrar la ecuación de velocidad del automóvil, se
usará la función
diff:
veloci ty=di ff(di st)
veloci ty =
cos ( lj20*p i * ( t - lO) ) *pi
Se puede usar l a función ezplot para graficar la velocidad:
ezpl ot (vel oci ty , [O , 20] )
t i tle ( ' Veloci dad del auto de carreras ' )
xl abel ( ' ti empo , s ' )
1 1.1 1
Posición de un auto de
carreras. El a utomóvil
acelera hasta que alcanza
la línea final. Luego frena
hasta detenerse. ( La línea
punteada que indica
la línea final se agregó
después de creada la
gráfica.)
406
Capítulo 11
Matemática simbólico
http://jurgensoft.co.cc
ylabel ( ' veloc i dad , di stanci a/ti empo ' )
text ( lO , 3 , ' Li nea fi nal ' )
Los resultados se muestran en l a figura 1 1 . 12.
La aceleración del auto de catreras es el cambio en la velocidad dividida por el cambio
en tiempo, de modo que la aceleración es la derivada de la función velocity:
accelerati on=d i ff (veloci ty)
accelerati on =
- 1/20*s; n ( l/20*pi * (t- 10» '�pi A2
La gráfica de la aceleración (figura
graficación simbólica:
1 1 . 13)
también se creó con el uso de la función
ezplot (accelerati on , [0 , 20])
t i tle( ' Acelerac i ón del auto de carreras ' )
xlabel ( ' t i empo , s ' )
ylabel( ' aceleraci ón , veloci dad/ti empo ' )
text(10 , O , ' Li nea fi nal ' )
derivada: la tasa
instantánea de cambio de
una variable con respecto
a una segunda variable
La aceleración es la primera derivada de la velocidad y la segunda derivada de la posi­
ción. MATLAB ofrece muchas formas ligeramente diferentes para encontrar tanto primeras
derivadas como n-ésimas derivadas. (Véase la tabla
1 1 .4.)
Si se tiene una ecuación más complieada con múltiples variables, como
y=sym ( ' xA2+t- 3*zA3 ' )
MATLAB calculará l a derivada con respecto a x, la variable por defecto:
d i ff(y)
ans =
2*x
E l resultado es la tasa de cambio de
y conforme x cambia (si s e mantienen constantes
todas las otras variables). Usualmente esto se expresa como a y/a x y se llama derivada parcial.
Velocidad dcl auto de carreras
3
2.5
2
.¿
1.5
'"
"O
]
<l)
>
Figura
1 1.12
Lo velocidad móximo se
alca nzo en lo línea final.
0.5
O
O
5
10
Tiempo, s
l5
20
http://jurgensoft.co.cc
Sección 1 1 .4
Cálculo
407
Aceleración del auto de carreras
0.6
o
o.
S
.!:l
;a
ro
0.4
0.2
"O
'0
o
"i)
O
;>
¿
'0
'o
ro
..
<l)
"i)
u
�
-0.2
Figura
-0.6
El auto de carreras a celera
hasta la línea final y luego
desacelera. La aceleración
en la línea final es cero.
O
5
10
Tiempo, s
15
20
Si se quiere ver cómo cambia
la función
y con respecto a otra variable, como t, se debe especificar en
diff (recuerde que si t se definió previamente como una variable simbólica, no es
necesario encerrarla entre apóstrofes):
di ff(y , ' t ' )
ans
1
De igual modo, para ver cómo cambia
y con z cuando todo lo demás se mantiene cons­
tante, se usa
d i ff(y , ' z ' )
ans =
-9*zA2
Tabla 11.4
Diferenciación simbólica
di ff(f)
1 1.13
-0.4
regresa la derivada de la expresión
f con respecto a la variable
independiente por defecto
y=sym ( ' xA3+zA2 ' )
di ff (y)
ans =
3*xA2
d i ff ( f , ' t ' )
regresa la derivada de la expresión f
con respecto a la variable t
y=sym ( ' xA3+zA2 ' )
di ff(y , ' z ' )
ans =
2*z
di ff(f , n)
regresa la n-ésima derivada de la
expresión f con respecto a la variable
independiente por defecto
y=sym ( ' xA3+zA2 ' )
di ff(y , 2)
ans =
6*x
di ff(f , ' t ' , n)
regresa la n-ésima derivada de la
expresión f con respecto a la variable t
y=sym ( ' xA3+zA2 ' )
di ff(y , ' z ' , 2)
ans
2
408
Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
Para encontrar derivada de orden superior, se puede anidar la función
el orden de la derivada en la funcíón
Idea clave: l a
integración es l o opuesto
de sacar la derivada.
diff. Cualquiera de los
diff o especificar
enunciados
di ff(y , 2)
y
di ff(di ff(y»
regresa e l mismo resultado:
ans
2
=
Note que, aunque el resultado parezca ser un número, es una variable simbólica. Con l a
finalidad de u sarla e n un cálculo M ATLAB, necesitará convertirla a u n número punto flotante
de precisión doble.
Si quiere obtener una derivada superior de
y con respecto a una variable que no sea por
defecto, necesita especificar tanto el grado de la derivada como la variable. Por ejemplo, para
encontrar l a segunda derivada de
y con respecto a z, eseriba
d i ff(y , 'z ' , 2)
ans
- 18*z
=
Eierc ic io de prác tic a
l . Encuentre l a
1 1. 8
derivada eon respecto a x de las siguientes expresiones:
x2+x + l
sen(x)
tan (x)
2.
ln(x)
Encuentre la primera derivada parcíal con respecto a x de las siguientes
expresiones :
ax + bx+ e
x O.5 3y
tan(x+ y)
3x+4y - 3xy
3.
Encuentre la segunda derivada con respecto a x para cada una de las
expresiones del problema 1 y 2.
4. Encuentre l a primera derivada con respecto a y para las �iglli"nt"�
expresiones:
y
1
2y+3x2
ay+bx+ cz
5 . Encuentre l a segunda derivada con respecto a y para cada una de las
expresiones del problema 4.
http://jurgensoft.co.cc
Sección 1 1 .4
Cálculo
409
Uso de matemáticas ' simbólicas para encontrar el ángulo
de lanzamiento óptimo
En el ejemplo 1 1.3, se usó la capacidad de graficación simbólica de M ATLAB para crear una
gráfica de rango contra ángulo de lanzamiento, con base en la fórmula de rango derivada en
el ejemplo 1 1.2, a saber,
rango
=
Vo
(
'
Vo SeU(8)
g
) cos(8)
donde
velocidad en el lanzamiento, la cual elegimos sea 100 mis,
Va
8
g
ángulo de lanzamiento,
,
y
aceleración debida a la gravedad.
Use la c apacidad simbólica de M ATLAB para encontrar el ángulo al que ocurre el rango
máximo
y encontrar el rango máximo.
1. Establezca el problema.
Encontrar el ángulo al que ocurre el rango máximo.
Encontrar el rango máximo.
2. Describa las entradas
Entrada
y
salidas.
Ecuación simbólica para rango
Vo
=
100 mis
g = 9 . 8 mls2
Salida
El ángulo al que ocurre el rango máximo
El rango máximo
3.
Desarrolle un ejemplo a mano.
A partir de la gráfica de la figura 1 1. 14, el rango máximo parece ocurrir a un ángulo
de lanzamiento de aproximadamente 0.7 o 0 . 8 radianes, y la altura máxima parece ser
aproximadamente 1000 m.
Distancia máxima recorrida por el proyectil
1000
800
E
o
0Il
¡::
'"
�
600
400
200
Fig ura
O
O
0.5
1
Ángulo, radianes
1.5
1 1 .1 4
El rango del proyectil como
u na función del á ngulo de
lanzamiento.
410
Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
4. Desarrolle u n ejemplo a mano.
Recuerde que la expresión simbólica para la distancia de impacto con
como 1 00 mis y 9.8 m/s2, respectivamente, es
va
y g definida
i mpacC100 =
100000/ 49*s i n (theta) '�cos (theta)
A partir de la gráfica, se puede ver que la distancia máxima ocurre cuando la pendiente
es igual a cero. La pendiente es la derivada de impacCIOO, así que. necesita igualar la
derivada a cero y resol ver. Dado que MATLAB supone automáticamente que una ex­
presión es igual a cero, se tiene
max_angl e=sol ve (di ff(i mpact_100))
que regresa el ángulo al que ocurre la altura máxima:
max_angl e =
[ - 1/4*pi ]
[ 1/4*p i ]
Existen dos resultados, pero sólo tiene interés el segundo, que s e puede sustituir e n la
expresión para el rango:
max_di stance = subs (i mpact_100 , theta , max_angl e (2 ) )
1 1 . 4.2
Integración
La integración se puede considerar como lo opuesto de la diferenciación (encontrar una de­
rivada) e incluso a veces se le llama antiderivada. Comúnmente se le visualiza como el área
baj o una curva. Por ej emplo, el trabaj o realizado por un pistón conforme se mueve arriba y
abaj o se puede calcular al obtener la integral de P con respecto a V; esto es,
w
=
J
P dV
Para efectuar el cálculo, es necesario saber cómo cambia P con V. Si, por ej emplo, P es
una constante, se podría crear la gráfica que se muestra en la figura 1 1 . 1 5 .
E l trabaj o consumido o producido conforme se mueve el pistón es el área baj o l a curva
•
desde el volumen inicial hasta el volumen final. Por ejemplo, si se mueve el pistón desde
1 cm3 hasta 4 cm3, el trabaj o correspondería al área que se muestra en la figura 1 1 . 1 6 .
Como puede saber a partir d e un curso d e cálculo integral (usualmente Cálculo
II),
la
integración es bastante simple:
Si
P
=
1 00 psia,
entonces
w = 3 cm3 X 1 00 psi a
La caj a de herramientas simbólica le permite obtener fácilmente integrales de algunas
funciones muy complicadas. Por ejemplo, si quiere encontrar una integral indefinida (una inte­
gral para la que no se especifican los valores frontera de la variable), puede usar la función ¡nt.
Primero se necesita especificar una función:
http://jurgensoft.co.cc
Sección 1 1 .4 cálculo
41 1
Perfil de presión en un pistón
101
100.5
'"
.�
o.
¿
'o
'",
1 00
J:
99.5
Figura 1 1 . 1 5
99
2
O
4
3
El perfil de presión e n un
5
pistón. En este ejem plo,
lo presión es constante.
Volumen. cm3
Perfil de presión en un pistón
110
100
90
80
'"
. ¡;;¡
o.
¿
'O
. ¡;;¡
..,
.t
70
60
50
40
30
20
10
O
Figura 1 1 . 1 6
O
0.5
1
2
3
3.5
4
4.5
5
Volumen, cm3
y=sym('xA3 + sen(x) ' )
Para encontrar la integral indefinida, escriba
i nt (y)
ans =
l/4*xA4-cos(x)
La función
int usa
x
como la variable por defecto. Por ejemplo, si se define una fun­
ción con dos variables, la función int encontrará la integral con respecto a x o la variable más
cercana a x:
y=sym( ' xA3 +sen(t) ' )
i nt (y)
ans =
1/4*xA4+sen(t)*x
El trabajo producido e n un
pistón es el área bajo la
curva.
412
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
Si se quiere obtener la integral con respecto a una variable definida por el usuario, dicha
variable necesita especificarse en el segundo campo de la función
int:
i nt (y , ' t ' )
ans =
xA3*t-cos (t)
Para encontrar la integral definida es necesario especificar el rango de interés. Consi­
dere esta expresión:
y =sym ( ' xA2 ' )
Si no se especifica el rango de interés, se obtiene
i nt (y)
ans =
1/3*xA3
Se podría evaluar esto desde 2 hasta 3 al usar la función
subs:
yy= i nt (y)
yy
1/3*xA3
subs(yy , 3) - subs (yy , 2)
ans =
6 . 3333
Un enfoque más simple es especificar las fronteras en l a función
int:
i nt (y , 2 , 3)
ans =
19/3
double(ans)
ans =
6 . 3333
S i se quiere especificar tanto la variable como las fronteras, e s necesario mencionarlas:
y=sym ( ' sen(x)+cos(z) ' )
i nt (y , ' z ' , 2 , 3)
ans =
sen(x)+sen( 3 ) - sen(Z)
Las fronteras pueden ser numéricas o pueden ser variables simbólicas:
i nt (y , ' z ' , ' b ' , ' c ' )
ans =
sen (x) *c+sen(c) -sen(x) *b-sen(b)
L a tabla 1 1 .5 menciona las funciones MATLAB que tienen relación con la integración.
http://jurgensoft.co.cc
Tabla 1 1.5
Integración simbólica
regreso lo integral de lo expresión
i nt (f)
y=sym ( ' xA3+zA2 ' )
i nt (y)
ans =
1/4*xA4+zA2*x
f con respecto a la variable
independiente por defecto
regreso lo i ntegral de l a expresión
y=sym ( ' xA3+zA2 ' )
i nt (y , ' z ' )
ans =
xA3*z+l/3*zA3
i n t (f , a , b)
regreso lo integral, con respecto a la
variable por defecto, de la expresión
f entre las fronteras numéricos a y b
y=sym ( ' xA 3+zA2 ' )
i nt (y , 2 . 3)
ans =
6 5/4+zA2
i nt ( f , ' t ' , a , b)
regresa la integral, con respecto o la
variable t , de l a expresión f entre
las fronteras numéricos a y b
y=sym ( ' xA 3+zA2 ' )
; nt (y , ' z ' , 2 , 3 )
ans
xA3+19/3
regresa la integral, con respecto o lo
variable t, de l a expresión f entre
los fronteros simbólicos a y b
y=sym ( ' xA3+zA2 ' )
i nt (y , ' z ' , ' a ' , ' b ' )
ans =
xA3 * (b-a)+1/3* bA 3 1/3*aA3
i nt ( f , ' t ' )
f con respeto o lo variable t
i nt (f , ' t ' , a , b)
=
Eje r ci cio de p r áctica 11 . 9
1. Integre las siguientes expresiones con respecto a x:
x2 + x + l
sen(x)
tan(x)
ln(x)
2.
Integre las siguientes expresiones con respeto a x:
ax2 + bx+ e
x°.5 3y
tan(x +y)
3x+4y - 3xy
3.
Realice una integración doble con respecto a x para cada una de las
4.
Integre las siguientes expresiones con respecto a
expresiones de los problemas 1
y 2.
y:
y2 - 1
2y+ 3X2
ay+bx+ cz
5. Realice una integración doble con respecto a y para cada una de las
expresiones en el problema 4.
6. Integre cada una de las expresiones e n el problema 1 con respecto a x desde O
hasta 5.
Sección 1 1 .4
Cólculo
41 3
414
Capítulo 1 1
Matemática simbólica
·'UMU'·II',
http://jurgensoft.co.cc
Uso de matemáticas simbólicas para encontrar
el trabajo producido en un pistón
Los pistones se usan en un amplio rango de instrumentación cientifica y dispositivos de inge­
niería. Probablemente el más presente es el motor de combustión interna (figura 1 1 . 1 7), que
por lo general, usa cuatro para ocho cilindros.
El trabajo producido por un pistón depende de la presión dentro del cilindro y de la can­
tidad que se mueve el pistón, lo que resulta en un cambio en el volumen dentro del cilindro.
Matemáticamente,
w
=
J
P dV
Para integrar esta ecuación, necesita entender cómo cambia la presión con el volumen. Se
puede modelar la mayoría de los gases de combustión, como el aire, y suponer que siguen la
ley del gas ideal
PV = nRT
donde
P
V
presión, kPa,
n
número de moles, lanol,
volumen, m3,
constante universal de los gases, 8.3 1 4 kPa m3/kmol K, y
R
T
=
temperatura, K.
Si supone que hay 1 mol de gas a 300 K Y que la temperatura permanece constante durante
el proceso, se pueden usar estas ecuaciones para calcular el trabajo realizado sobre el gas o
producido por el gas conforme se expande o contrae entre dos volúmenes conocidos.
l . Establezca el problema.
Calcular el trabaj o realizado por mol en un pistón isotérmico (temperatura constante)
conforme el gas se expande o contrae entre dos volúmenes conocidos.
2. Describa las entradas y salidas.
Entrada
•
Temperatura = 300 K
Constante universal de los gases
Figura
1 1.17
Motor de combustión
interna.
=
8.3 1 4 kPa m3/kmol K = 8 . 3 1 4 kJ/kmol K
http://jurgensoft.co.cc
Valores arbitrarios de volumen inicial y final; para este ejemplo, se usarán
volumen inicial
volumen final
= 1 m3
= 5 m3
Salida
Trabajo producido por el pistón, en kJ
3. Desarrolle un ejemplo a mano.
Primero necesitará resolver la ley del gas ideal para P:
PV = nRT
P = nRT/V
Dado que
n, R
y
T son
constantes durante el proceso, ahora se puede realizar la inte­
gración:
w
J � dV
n
=
T
=
nRT
J d;
= nRT ln
(�)
Al sustituir los valores, se encuentra que
W
=
1 kmol X 8.314 1d/kmol K X 300 K X
Si se usan los valores arbitrarios
VI =
1
m3 y
V2 =
5
3
m ,
ln(�)
entonces el trabajo se convierte en
W = 40 1 4 kJ
Puesto que el trabajo es positivo, se produce por (no
sobre) el
sistema.
4. Desarrolle una solución MATLAB.
Primero necesitará resolver la ley del gas ideal para presión. El código
syrns P V n R T VI V2
i deal _gas_l aw=syrn( ' P*V=n�'R�'T ' )
P=sol ve (i deal _gas_l aw , ' P ' )
%Defi na var i abl es
%Defi na l ey del gas i deal
%Resuel va para P
regresa
P =
n*R*T/V
Una vez que se tiene la ecuación para
P,
W=i nt(P , V , VI , V2 )
regres a
W
n*R*T*l og(V2) - n*R*T*l og(VI)
=
se puede integrar. El comando
%Integra P con respecto
%a V desde VI hasta V2
Sección 1 1 .4
Cálculo
41 5
416
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
Finalmente, se pueden sustituir los valores en la ecuación. Escriba
work=subs (W , {n , R , Vl , V2 , T} , { 1 , 8 . 3 14 , 1 , S , 300 . 0})
para obtener
work =
4 . 0143e+003
5.
Ponga a prueba la solución.
La prueba más obvia es comparar las soluciones a mano y computadora. Sin embargo,
la misma respuesta con ambas técnicas sólo significa que se hicieron los cálculos de la
misma manera. Una forma de verificar la razonabilidad sería crear una gráfica PV y
estimar el área bajo la curva.
Para crear la gráfica, necesitará regresar a la ecuación para
para
n,
Ry
T:
Py
sustituir valores
p=subs (P , {n , R , T} , { 1 , 8 . 3 1 4 , 300} )
Esto regresa la siguiente ecuación para P:
p =
124 71/5/V
Ahora se puede usar ezplot para crear una gráfica de P contra V (véase la figura 1 1 . 1 8):
ezpl ot (p , [ 1 , 5] ) %Grafi ca l a pres i ón contra V
titl e ( ' La presi ón cambia con volumen para un si stema i sotérmi co ' )
xl abel ( ' Vol umen ' )
yl abel ( ' Presi ón , ps ia ' )
xl abel ( ' Vol umen , cmA3 ' )
axi s ( [1 , 5 , O , 2 500] )
Para estimar el trabajo se podría encontrar el área de un triángulo que aproxime l a
forma que se muestra en la figura 1 1 . 19. Se tiene
área
área
•
==
==
� base*altura
0.5*(5 - 1 )*2400
=
4800
La presión cambia con volumen para un sistema isotérmico
2500 r-------�--�--,
2000
'"
.§..
1500
=
'O
.¡;¡
....
o..
Figura
1 1 .1 8
Para un sistema isotérmico,
conforme el volumen
aumenta, la presión
disminuye.
1000
500
2
3
3
Volumen, cm
4
5
Sección 1 1 .4 Cálculo 4 1 7
http://jurgensoft.co.cc
La presión cambia con volumen para un sistema isotérmico
2500 �------�--,
2000
'"
' 00
o..
ci'
'o
.�
p:
1 500
1000
500
Figura
2
3
4
5
3
Volumen, cm
que corresponde a 4800 kJ . Esto coincide bastante bien con el valor calculado de
40 1 4 kJ .
Ahora que se tiene un proceso que funciona, se podría crear un archivo-m que
conmine al usuario a ingresar valores para cualquier cambio en volumen:
c l ear , cl c
syms P V n R T VI V2
i deal _gas_l aw=sym ( ' P*V=n*R*T ' )
P=sol ve ( i deal _gas_l aw , ' P ' )
W=i nt (P , V , V I , V2)
%Defi na var i abl es
%Defi na l ey de gas i deal
%Resuel ve para P
%Integre para encontrar trabajo
%Ahora permi ta al usuar i o i ngresar l os datos
temp=i nput ( ' Ingrese una temperatura : ' )
vI=i nput ( ' Ingrese el vol umen i ni ci al : ' )
v2=i nput ( ' Ingrese el vol umen fi nal : ' )
work=subs (W , {n , R , VI , V2 , T} , {1 , 8 . 3 14 , vl , v2 , temp})
Este archivo-m genera l a siguiente interacción con el usuario:
Ingrese una temperatura : 300
temp
300
=
Ingrese el vol umen i ni c i al : I
vI =
I
Ingrese el vol umen fi nal : 5
v2 =
5
work
4 . 0I43e+003
1 1.19
Se puede estimar el área
bajo la curva con un
triángulo.
418
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
11. 5
ECUACIONES DIFERENCIALES
Las ecuaciones diferenciales contienen tanto variables dependientes como la derivada de la
variable dependiente con respecto a la variable independiente. Por ejemplo,
y
dt
Idea clave: la variable
independiente por
defecto para ecuaciones
diferenciales en
MATLAB es t.
es una ecuación diferencial.
Aunque cualquier símbolo se puede usar para la variable independiente o para la va­
riable dependiente, la variable independiente por defecto en MATLAB es t (y es la elección
usual para la mayoría de las formulaciones de ecuación diferencial ordinaria). Considere esta
simple ecuación:
La derivada de y con respecto a t es
dt
Esto también se podría expresar como una ecuación diferencial:
y
dt
Por lo general, la,> ecuaciones diferenciales tienen más de una solución. La siguiente fa­
milia de funciones de t se podría expresar mediante la misma ecuación diferencial (dy/dt = y):
y
C1et
Puede especificar la ecuación particular de interés al especificar una condición inicial.
Por ejemplo, si
y(O)
::=
1,
entonces
el
=
1
Una función ligeramente más complicada de J puede ser
La derivada de y con respecto a t es
dt
=
2t
Si se quiere, se podría rescribir esta ecuación como
dt
2t2
t
2y
t
La caja de herramientas simbólica incluye una función llamada dsolve que resuelve ecua­
ciones diferenciales. (Cuando se resuelve una ecuación diferencial, se busca una expresión para
y en términos de l.) Esta función requiere que el usuario ingrese la ecuación diferencial, usando
el símbolo D para especificar derivadas con respecto a la variable independiente, como en
dsol ve ( ' Oy=y ' )
ans =
Cl*exp(t)
http://jurgensoft.co.ccSección 1 1 .5
El uso de una sola entrada resulta en una familia de resultados. Si t am bién incluye un
segundo campo que especifique una condición inicial (o una condición de frontera) , se regresa
la respuesta exacta:
dsol ve( ' Oy=y ' , ' y (O)=l ' )
ans =
exp(t)
De m anera similar,
dsol ve( ' Oy=2*yjt ' , ' y( - I ) =I ' )
ans =
tA2
Si t no es la variable independiente en su ecuación diferencial, p uede especifi car la va­
riable independiente en un tercer campo:
dsol ve( ' Dy=2*yjt ' , ' y( - I ) = I ' ,
ans =
tA2
't')
Si una ecuación diferencial incluye sólo una primera derivada, se llama ecuación dife­
rencial de primer orden. Las ecuaciones diferenciales de segundo orden incluyen una segun­
da derivada; las ecuaciones de tercer orden, una tercera derivada, etcétera. Para especifi car
una derivada de orden superior en la función dsolve, ponga el orden inm ediatamente después
de la D. Por ejemplo,
dsol ve( ' D2y=-y ' )
ans =
Cl*s i n (t)+C2*cos (t)
resuelve una ecuación diferencial de segundo orden.
�
Suge r encia
No use la letra D en los nombres de sus vari able en ecuaciones diferenciales. La
función interp retará la D como especifi cación de una derivada.
La función
dsolve
t am bién se puede usar para resolver sistemas de ecuaciones dife­
renciales. Primero mencione las ecuaciones a resolver, y luego las condiciones. La función
dsolve
aceptará hasta 1 2 entradas. Por ejemplo:
dsol ve( ' eql , eq2 , . . . ' ,
' condl , cond2 , . . . ' ,
'v')
o
dsol ve( ' eql ' , ' eq2 ' , . . . , ' cond l ' , ' cond2 ' , . . . , ' v ' )
(La vari able v es la variable independiente.) Ahora considere el siguiente ejemplo:
a=dsol ve( ' Ox=y ' , ' Oy=x ' )
a =
x : [1xl sym]
y : [ 1xl sym]
Ecuaciones diferenciales
41 9
420 Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
Los resultados se reportan como elementos simbólicos en un arreglo estructura, tal
como los resultados se reportaron con el comando solve. Para acceder a dichos elementos, use
la sintaxis del arreglo estructura:
a.x
ans =
Cl*exp (t) -C2*exp(-t)
y
a.y
ans
Cl*exp (t) +C2*exp ( -t)
También podría especificar múltiples salidas desde la función:
[x , y] =dsol ve ('Dx=y ' , ' Dy=x ' )
x =
Cl*exp (t) -C2*exp(-t)
y =
Cl*exp(t) +C2*exp (-t)
Idea clave: no toda
ecuación diferencial
se puede resolver
analíticamente.
MATLAB no puede resolver simbólicamente toda ecuación diferenciaL Para sistemas
de ecuaciones complicados (o mal condicionados), puede encontrar más fácil usar Maple.
(Recuerde que la capacidad simbólica de MATLAB se basa en el motor Maple 8.) Existen
muchas ecuaciones diferenciales que no se pueden resolver analíticamente en absoluto, sin
importar cuán sofisticada sea la herramienta. Para dichas ecuaciones, con frecuencia son sufi­
cientes las técnicas numéricas .
•ijii" Mn.I------�
•
La caja de herramientas matemáticas simbólicas de MATLAB usa el software Maple 8, producido por Waterloo Maple. La caja de herramientas simbólica es un componente opcional
de la versión profesional de MATLAB. Un s ubconj unto de la caj a de herramientas simbóli­
ca, incluidos los componentes más populares, acompaña a la versión estudiantiL La sintaxis
que usa la caja de herramientas simbólica es similar a la que usa Maple; sin embargo, debido
a que la estructura subyacente de cada programa es diferente, los usuarios de Maple reconoce­
rán algunas diferencias en la sintaxis.
Las variables simbólicas se crean en MATLAB con los comandos sym o syms:
x=sym ( ' x ' ) o
syms x
El comando syms tiene la ventaja de que hace fáci l crear múltiples variables simbólicas en un
enunciado:
syms a b e
El comando sym se puede usar para crear expresiones o ecuaciones completas en un solo
paso:
y=sym( ' zA2- 3')
Aunque z se incluye en esta expresión simbólica, no se define explícitamente como variable
simbólica.
http://jurgensoft.co.cc
Una vez definidas las variables simbólieas, se pueden usar para crear expresiones más
complicadas. Dado que
x, a, b y e se definieron como variables simbólicas, se pueden combi­
nar para crear la ecuación cuadrática:
EQ=a*xA2 + b*x + e
MATLAB permite a los usuarios manipular expresiones simbólicas o ecuaciones sim­
bólicas. Las ecuaciones se igualan a algo; las expresiones no. Todos los enunciados en este
resumen hasta el momento han creado expresiones. En contraste, el enunciado
EQ = sym ( ' n=m/MW ' )
define una ecuación simbólica.
Tanto las expresiones simbólicas como las ecuaciones simbólicas se pueden manipu­
lar mediante funciones internas MATLAB de la caj a de herramientas simbólíca. La función
nurnden extrae el numerador y denominador de una expresión, pero no es válido para ecua­
ciones. Las funciones expand, factor y collect se pueden usar para modificar una expresión
o una ecuación. La función simplif'y simplifica una expresión o una ecuación sobre la base de
reglas internas Maple, y la función simple prueba cada miembro de la familia de funciones
de simplíficación y reporta l a respuesta más corta.
Una de las funciones simbólicas más útiles es
solve, que permite al usuario resolver
ecuaciones simbólicamente. Si la entrada a la función es una expresión, MATLAB iguala l a
expresión a cero. L a función
solve puede resolver no sólo una sola ecuación para l a variable es­
pecificada, sino también sistemas de ecuaciones. A diferencia de las técnieas empleadas en ál­
solve no necesita ser lineal.
subs, permite al usuario sustituir variables con valores numéricos
gebra matricial para resolver sistemas de ecuaciones, la entrada a
La función sustitución,
o con nuevas variables. Es importante recordar que si una variable no se define explícitamente
como simbólica, se debe encerrar en apóstrofes cuando se usa en la función
subs. Cuando y s e
define como
y=sym ( ' m +2*n + p ' )
las variables
m, n y p no se definen explícitamente como simbólicas y, por tanto, s e deben
encerrar entre apóstrofes. Note que, cuando se sustituyen múltiples variables, se mencionan
dentro de llaves. Si se sustituye una sola variable no se requieren las llaves. Dada la definición
precedente de
y, el comando
subs (y , { ' m ' ,
'
n
'
,
' p ' } , { 1 , 2 , 3 })
regresa
ans =
8
El comando subs se puede usar para sustituir tanto valores numéricos como variables simbólicas .
La capacidad de graficación simbólica de MATLAB reflej a aproximadamente las op­
ciones de graficación estándar. La más útil de estas gráficas para ingenieros y científicos pro­
bablemente es la gráfica x-y,
para valores de
ezplot. Esta función acepta una expresión simbólica y las grafica
x desde -27T hasta +27T . El usuario también puedc asignar los valores mínimo
y máximo de x. las gráficas simbólicas se anotan con el uso de la misma sintaxis que las grá­
ficas MATLAB estándar.
La c aj a de herramientas simbólica incluye algunas funciones de cálculo, de las cuales
las más básicas son
diff (diferenciación) e int (integración). La función diff permite al usua­
(x o cualquiera que esté más
rio obtener la derivada con respecto a lma variable por defecto
cerca de
x en la expresión) o especificar la variable de diferenciación. También se pueden
int también permite al usuario integrar
especificar derivadas de orden superior. La función
Resumen
42 1
422
Capítulo 11 Matemática simbólica
http://jurgensoft.co.cc
con respecto a la variable por defecto (x) o especificar la variable de integración. Se pueden
evaluar integrales definidas e indefinidas. Están disponibles funciones de cálculo adicionales
no discutidas en este capítulo. Use la función
RES U M E N MAnAB
help para más información.
El siguiente resumen MATLAB menciona todos los caracteres, comandos y funciones espe­
ciales que se definieron en este capítulo:
identifica una variable simbólica que no se ha
definido explícitamente
{ }
encierra un arreglo celda. usado en la función
solve para crear listas de variables simbólicas
col l ect
di ff
dsolve
expand
ezcontour
ezcontour f
ezmesh
ezmeshc
recopila ténninos iguales
encuentra la derivada simbólica de una expresión simbólica
solucionador de ecuaciones diferenciales
expande una expresión o ecuación
crea una gráfica de contomo
crea una gráfica de contorno llena
crea una gráfica de malla a partir de una expresión simbólica
grafica tanto malla como contomo creadas a prutir de una
expresión simbólica
ezpl ot
ezpl ot3
ezpol ar
ezsur f
ezsurfc
grafica una expresión simbólica (crea una
x-y)
crea una gráfica lineal tridimensional
crea una gráfica en coordenadas polares
crea una gráfica de superficie a partir de una expresión simbólica
tanto malla como contorno creadas a partir de una
expresión simbólica
factor
i nt
numden
factoriza una expresión o ecuación
encuentra la integral simbólica de una expresión simbólica
extrae el numerador y denominador de una expresión o una
ecuación
si mpl e
prueba y reporta sobre todas las funciones de simplificación y
selecciona la respuesta más corta
s i mpl i fy
sol ve
subs
sym
syms
simplifica con las reglas de simplificación intemas dc Maple
resuelve una expresión o ecuación simbólica
sustituye en una expresión o ecuación simbólica
crea una variable, expresión o ecuación simbólica
crea variables simbólicas
Álgebra simbólica
11.1
Cree las variables simbólicas
a b c d x
y úselas para crear las siguientes expresiones simbólicas:
se!
se2
se3
se4
= xA3 - 3*xA2 +x
= s i n (x) + tan (x)
= ( 2 *xA2 - 3*x - 2)/ (xA2 - 5*x)
= (xA2 -9)/(x+3)
Problemas 423
http://jurgensoft.co.cc
1 1.2
1 1.3
(a)
(b)
(e)
(d)
se2.
Multiplique se3 por se4.
Divida
sel entre x.
se3.
Sume sel a
Cree las siguientes ecuaciones simbólicas:
(a)
(b)
(�
(d)
1 1.4
Divida sel entre
sql=sym ( ' xA2 + yA2 =4 ' )
sq 2
sym( 1 5 *xA5 - 4*xA4 + 3*xA3 + 2 *xA2 - x =24 ' )
sq3 = sym ( ' s i n (a) + cos(b) -x*c = d ' )
sq4 = sym ( ' (xA3 - 3*x)j(3-x) = 14 ' )
Intente usar la función
y
sq4.
numden para
extraer el numerador y el denominador de
se4
¿Esta función también sirve para expresiones y ecuaciones? Describa cómo
varían sus resultados. Intente explicar las diferencias.
11.5
Use las funciones expand,
sq4.
factor, collect, simplifiy y simple en sel a se4, y en sql
a
En sus propias palabras, describa cómo operan estas funciones para los diversos
tipos de ecuaciones y expresiones.
Resolución simbólica y uso del comando subs
1 1.6
11.7
1 1.8
11.9
x.
x.
Resuelva cada una de las expresiones creadas en el problema 1 1 . 1 para
Resuelva cada una de las ecuaciones creadas en el problema 1 1 .3 para
Resuelva la ecuación
sq3, creada en el problema 1 1 .3 , para a.
Un péndulo es un objeto rígido suspendido de un punto pivote sin fricción. (Véase la
figura P1 1 .9.) Si el péndulo se deja balancear con una inercia dada, sc puede encontrar
la frecuencia de oscilación con la ecuación
donde
f
=
frecuencia,
g
=
aceleración debida a la gravedad,
m
L
1
=
=
masa del péndulo,
distancia desde el punto pivote al centro de gravedad del péndulo, e
inercia.
Use la capacidad simbólica de MATLAB para resolver la longitud L.
Punto pivote
L
Figura
P l l .9
Péndulo descrito en el
problema 1 1 .9.
424
Capítulo 1 1
Matemótica simbólico
http://jurgensoft.co.cc
11.10 Sean la masa, inercia y frecuencia del péndulo en el problema anterior, respectiva­
mente,
m = l O kg,
f = 0.2 s - 1 , y
1
Si el péndulo está en la Tierra
60 kg mis.
(g
9.8 rnIs2), ¿cuál es la longitud desde el punto pivote
hasta el centro de gravedad? (Use la función
11.11 La
subs para resolver este problema.)
cinética se define como
Ec = l mV2
2
donde
EC
m
V
=
=
energía cinética, medida en joules,
masa, medida en kg, y
velocidad, medida en mis.
Cree una ecuación simbólica para energía cinética y rcsuélvala para velocidad.
11.12 Encuentre la energía cinética de un automóvil que pesa 2000 lbm y viaj a a 60 mph.
(Véase la figura P l l . I 2.) Sus unidades serán lbm milla2fh2. Una vez que calcule este
resultado, cámbielo a Btu al usar los siguientes factores de conversión:
l lbf
= 32. 174 Ibm - ftls2
1 h
1 milla
1 Btu
3600 s
=
5280 ft
778. 169 ft. lbf
11.13 La capacidad calorífica de un gas se puede modelar con la siguiente ecuación, com­
puesta de las constantes empíricas a, b, e y d Y la temperatura T en grados K:
Las constantes empíricas no tienen un significado físico, pero se usan para hacer que
la ecuación ajuste los datos. Cree una ecuación simbólica para capacidad calorífica y
resuelva para T.
11.14 Sustituya los siguientes valores para a, b,
e
y d en la ecuación de capacidad calorífica
del problema anterior y dé a su resultado un nuevo nombre (estos valores modelan l a
capacidad calorífica del nitrógeno gaseoso e n kJ/(kmol
tura entre aproximadamente 273 y 1 800
K):
a = 28.90
b
=
5
0.8081 X 10-
e
d
=
EC
Figura P11_ 1 2
Auto descrito en el
problema 1 1 . 1 2.
60
-0.1571 X 10-
9
-2.873 X 10-
2
K) conforme cambia tempera­
http://jurgensoft.co.cc
T
Resuelva su nueva ecuación para
si la capacidad calorífica
(Cp)
es igual a 29. 1 5
kJ/(kmol K).
11.15
La ecuación Antaine usa constantes empíricas para modelar la presión de vapor de un
gas como función de la temperatura. La ecuación modelo es
lOglO (P)
= A
-
e
B
+
T
donde
presión, en mmHg,
P
A
=
C
=
B
T
constante empírica,
constante empírica,
constante empírica, y
temperatura en grados C .
El punto de ebullición nonnal d e un líquido es la temperatura a la que la presión de
vapor (P) del gas es igual a la presión atmosférica, 760 mmHg. Use la capacidad
simbólica MATLAB para encontrar el punto de ebullición normal del benceno si las
constantes empíricas son
A
B
e
1 1.16
=
6.89272
=
1203.531
=
2 19.888
Un estudiante hambriento va a la cafetería y compra su almuerzo. Al día siguiente gasta
el doble de dinero. Al tercer día gasta $1 menos que el segundo día. Al final de los tres
días gasta
¿Cuánto gastó cada día? Use la capacidad simbólica de MATLAB para
ayudar a resolver este problema.
Resolución de sistemas de ecuaciones
1 1.17
Considere el siguiente conjunto de siete ecuaciones:
3Xl
+4X2 + 2X3 -X4
- 2X2 +3X3 - 4X4 + 5xs
Xl
+ 2X2 + 3X3 +X4
5 Xl
+ lOx2 +4X3 + 3X4 +9X5
3 Xl
+ 2xz -2X3 - 4X4 - 5xs
-2Xl
+9X2 +x3 +3X4
Xl
- 2X2 -8X3 +4X4
+ 8X7
+ 4xó +6X7
+X7
6X6
=
42
=
32
= 12
= -5
+ 7x7
= 10
+X7
= 18
+4X6 + 5X7
= 17
Defina una variable simbólica para cada una de las ecuaciones y use la capacidad
bólica de MATLAB para resolver cada una de las incógnitas.
1 1.18
Compare la cantidad de tiempo que le toma resolver el problema anterior si usa divi­
sión izquierda y matemática simbólica con las funciones
tic
cód i go a c ronometrar
toc
tic y toe, cuya sintaxis es
Problemas
425
426 Capítulo 1 1
Matemático simbólica
http://jurgensoft.co.cc
.
?
m arriba
I
.
XHZO
XEtanol
Figura P l l . 1 9
0.20
=
0.35
0.45
XMetanol
XEtanol
100
mentrada
0.50
=
XMetanol
X
=
1
-
0. 5
x
=
XHZO
'-------,1--'
o
?
m.bajo
Proceso de separación con
tres componentes, descrito
en el problema 1 1 . 1 9.
XH20
0.65
= 0.25
XMetanol = 0.10
=
XEtanol
11.19 Use las capacidades simbólicas de MATLAB para resolver el siguiente problema me­
diante álgebra matricial:
Considere un proceso de separación en el que una corriente de agua, etanol y
metanol entra a una unidad de proceso. Dos corrientes salen de la unidad, cada una con
cantidades variables de los tres componentes. (Véase la figura P l l . 19.)
Determine las tasas de flujo de masa adentro del sistema y afuera por arriba y
abajo de la unidad de separación.
(a) Primero configure las siguientes ecuaciones de balance de materiales para cada
uno de los tres componentes:
Agua
0.5 ( 100)
50
=
=
O .2marrib a
0.2marriba
+
0.65mabajo
+
O.65mabajo
Etanol
100x
=
0.35 marriba
O = -lOOx
+
0.35marriba
100(1 - 0.5 - x)
50
=
100x
+
0 .25mabajo
+
0 .25mabajo
+
0.45marriba + O.l mabajo
0 .45marriba
+
O.lmabajo
(b) Cree ecuaciones simbólicas para representar cada balance de material .
(e) Use la función solve para resolver el sistema de tres ecuaciones y tres incógnitas.
11.20 Considere las siguientes dos ecuaciones:
X2
x
+
+
y2
3y
=
+
42
2y2
6
Defina una ecuación simbólica para cada una y resuélvala con la capacidad simbó­
lica de MATLAB. ¿Podría resolver estas ecuaciones usando matrices? Intente este
problema dos veces, una vez sólo con enteros en sus definiciones de ecuación y una
vez con números punto flotante (los que tienen puntos decimales). ¿Cómo varían sus
resultados? Verifique la ventana del área de trabajo para determinar si los resultados
todavía son simbólicos.
http://jurgensoft.co.cc
Graficación simbólica
11.21
Cree gráficas de las siguientes expresiones desde x =
O hasta
10:
(a) y = eX
(h) y =
sen (x )
(e) y = ax2 + bx +
e,
donde
a =
5,
b =
2 Y
e
=
4
(d) Y = Vi
Cada una de sus gráficas debe incluir un título, una etiqueta de eje x, una etiqueta de
eje y y una retícula.
11.22
Use
ezplot para graficar las
siguientes expresiones en la misma figura para valores x
de - 27T a 27T (necesitará usar el comando
hold on):
Y ¡ = sen(x)
Y2 = sen(2x)
Y3 = sen(3x)
Use las herramientas de graficación interactivas para asignar a cada línea un color y
estilo de línea diferente.
11.23
Use ezplot para graficar las siguientes ecuaciones implícitas:
(a) x2 + l = O
(b) x
+
x2 - y = O
(e) x2 +
3i
(d) x ' y =
11.24
Use
(a)
(b)
(e)
(d)
(e)
3
4
ezplot para graficar las
f¡ (t)
= x =
= y =
cos (t)
f¡ (t)
= x =
sen (t)
fz(t)
= y =
3 cos ( t )
f¡ (t)
= x =
sen ( t )
fz(t)
= y =
cos ( 3t )
f¡ (t)
= x = 10 sen (t)
f (t) = y = t cos ( t )
2
f¡ (t)
= x =
= y =
siguientes funciones paramétricas:
sen ( t )
fz(t)
f (t)
2
1 1.25
=
t sen ( t )
t cos ( t )
de t
de t
=O
=O
a 30
a 30
La distancia que recorre un proyectil cuando se dispara a u n ángulo O es una fun­
ción del tiempo y se puede dividir en distancias horizontal y vertical (véase la figura
P l l .25), dados respectivamente por
Horizonta1(t) = tVo cosCO)
y
Vertical(t) = tVo sen(O)
-
� gt2
Problemas 427
428
Capítulo 1 1
http://jurgensoft.co.cc
Matemática simbólica
r
Figura
P l 1 .25
Trayectoria de un proyectil .
"(')I a�
--
��
/
- - - -.. ,
"-
"-
"-
"-
"-
"-
"-
"­
"-
---
'------h(t) ----�
�
donde
Horizontal
=
Vertical
distancia recorrida en la dirección x,
distancia recorrida en la dirección y,
velocidad inicial del proyectil,
aceleración debida a la gravedad, 9.8 mls2, y
tiempo, s .
Suponga que un proyectil se dispara con una velocidad inicial d e 1 00 mis y un ángulo
de lanzamiento de 'iT/4 radianes (45°). Use
ezplot para graficar distancia horizontal en
el eje x y distancia vertical en el eje y para tiempos de O a 20 segundos.
11.26
Para cada una de las siguientes expresiones, use la función gráfica
ezpolar para crear
una gráfica de la expresión, y use la función subplot para poner sus cuatro gráficas en
la misma figura:
(a) sen2(8) + cos2(8)
(b)
(e)
(d)
11.27 Use
sen(8)
e
0/5
para 8 de O a 20
senh(8) para 8 de O a 20
ezplot3 para crear una gráfica lineal tridimensional de las funciones siguientes:
f1(t) = x = t sen(t)
h(t) = y = t cos(t)
f3(t) = z = t
11.28
Use la siguiente ecuación para crear una función simbólica Z:
Z
(a)
(b)
(e)
(d)
=
sen ( VX2 + y2 )
-V
----X=;;:
-;= 2=+=
y"
2-
Use la función de graficación
Use l a función d e graficación
ezmesh para crear una gráfica tridimensional de Z .
ezsurf para crear una gráfica tridimensional d e Z.
Use ezcontour para crear un mapa de contorno de Z.
Genere una combinación de superficie y contorno de Z, con
ezsurfc.
Use subgráficas para poner todas las gráficas que crea en la misma figura.
Cálculo
11.29
Determine la primera y segunda derivadas de las siguientes funciones, use las funcio­
nes simbólicas MATLAB:
(a) fl(X)
(b)
=
h(x) =
y
y
= x3 4x2 + 3x +
= (x2 2x + l ) (x
-
-
8
-
1)
(e)
(d)
1 1.30
= y = cos(2x) sen (x)
= y
3xér
Use las funciones simbólicas de MATLAB para realizar las integraciones siguientes:
(a)
(b)
(e)
(d)
11.31
!3 (X)
!4(X)
Problemas
http://jurgensoft.co.cc
J(X2
¡1.3
0.3 (X2 +
J(X2 + y2)
+ x) dx
x) dx
(ax2
124
3.5
+
dx
bx +
e
) dx
Sea el siguiente polinomio que representa la altitud en metros durante las primeras 48
horas siguientes al lanzarnÍento de un globo meteorológico:
h(t) = - 0. 1 2t4
+
12t 3
380t2
+ 4 1 00t +
220
Suponga que las unidades de t son horas.
(a)
Use MATLAB junto con el hecho de que la velocidad es la primera derivada de la
altitud para determinar la ecuación para la velocidad del globo.
(b)
Use MATLAB junto con el hecho de que la aceleración es la derivada de la ve­
locidad, o la segunda derivada de la altitud, para detennínar la ecuación para la
(e)
aeeleración del globo.
Use MATLAB para determinar cuándo el globo golpea el suelo. Puesto que
h(t)
es un polinomio de cuarto orden, habrá cuatro respuestas. Sin embargo, sólo una
respuesta será físicamente signit1eativa.
(d)
Use la capacidad de graficación simbólica de MATLAB para crear gráfieas de
altitud, velocidad y aceleración de tiempo O hasta que el globo golpea el suelo
[que se determinó en la parte (e)]. Necesitará tres gráficas separadas, pues altitud,
velocidad y aceleración tienen unidades diferentes.
(e)
Determine la altura máxima que alcanza el globo. Use el hecho de que la veloci­
dad del globo es cero a la altura máxima.
11.32
Suponga que se bombeará agua en un tanque inicialmente vacío. (Véase la figura P 1 1 .32.)
Se sabe que la tasa de flujo de agua en el tanque en el tiempo
t (en segundos)
es 50
-t
litros por segundo. Se puede demostrar que la cantidad de agua Q que fluye en el tanque
durante los primeros x segundos es igual a la
O a x segundos. *
de la expresión (50 - t) evaluada de
(a)
Determine una ecuación simbólica que represente l a cantidad de agua en el tanque
(b)
(e)
Determine la cantidad de agua en el tanque después de 30 segundos.
después de x segundos.
Determine la cantidad de agua que fluyó en eltanque entre los segundos 1 0 y 1 5
después de iniciado el flujo.
*Tomado de Elter, Kuncicky y Moore, lntroduction to M,1TLAB
tice Hall,
2005).
7 (Upper Saddle River, NJ: PearsonlPren­
429
430 Capítulo 1 1
Matemática simbólica
http://jurgensoft.co.cc
La tasa de flujo en el ,,',¡;il1UU./
t
Figura P l l .32
Tanque vacío en t
por tanto,
Q
=
O
es (50 - t) litros/s
Cantidad de
O;
Problema de llenado de
tanque.
11.33 Considere un resorte con el extremo izquierdo fijo y el derecho libre para moverse a lo
largo del
x.
(Véase la figura P I I .33.) Se supone que el extremo derecho del resorte
está en el origen
x =
O cuando el resorte está en reposo. Cuando el resorte se estira,
el extremo derecho del resorte está en un nuevo valor de
x
que es mayor que cero.
Cuando el resorte se comprime, el extremo derecho del resorte está en algún valor que
es menor que cero. Suponga que el resorte tiene una longitud natural de 1 ft Y que se
requiere una fuerza de 10 lb para comprimir el resorte a una longitud de 0.5 fr. Enton­
ces se puede demostrar que el trabajo, en ft lbf' realizado para estirar el resorte desde
n
su longitud natural hasta un total de
de O a n
ft es igual a la integral de 20x sobre el intervalo
L*
Longitud = 1
x
x=O
x>O
Figura P l 1 .33
Problema del resorte
descrito en el problema
1 1 .33.
x<O
t
x=O
(a) Use MATLAB para determinar una expresión simbólica que represente la canti­
dad de trabajo necesario para estirar el resorte a una longitud total de n ft.
(b) ¿Cuál es la cantidad de trabajo realizado para estirar el resorte a un total de 2 ft?
(e) Si la cantidad de trabajo ejercido es 25 ft lbf' ¿cuál es la longitud del resorte esti­
rado?
11.34 La capacidad calorífica Cp de un gas se puede modelar con la ecuación empírica
ep = a +
bT + cT2 + dT3
*Tomado de Etter, Kuncicky y Moore, lntroduction
tice Hall, 2005).
lo
MATLAB 7 (Upper Saddle River, NJ: PearsonlPren­
http://jurgensoft.co.cc
donde a, b,
e
y
Problemas 43 1
d son constantes empíricas y T es la temperatura en grados Kelvin. El
cambio en entalpía (una medida de energía) conforme el gas se caliente de TI a T2 e s la
integral de esta ecuación eon respecto a T:
Encuentre el cambio en entalpía del oxígeno gaseoso conforme se calienta de 300
1000 K.
Los valores de
a,
b,
e
y
d para el oxígeno son
a =
25.48
b
1.520
=
X
e
-0.7155
d
1.312
X
10-2
10-5
10-9
X
Ka
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Técnicas numéricas
;,.Objetivos
12.1
.
.
OespuéSdeteei��I'
el alUmflO ser6 c�pozde
.'
••.•
interpobr �fhl�s�.
datos �.I'6Od�i>s:1i�.
o�����·�··
•
(splinel.
, . /\,: .,
"
Cuando se miden cosas. comúnmente no se recopilan datos en todo posible punto de
datos. Considere un conjunto de datos xy recopilados durante un experimento. Al usar
una técnica de interpolación, se puede estimar el valor de y en valores de
x
donde no
se realiza una medición. (Véase la figura 1 2. 1 .) Las dos técnicas de interpolación más
comunes son la interpolación lineal y la interpolación cúbica segmentaria (spline o de
trazador), las cuales son soportadas por MATLAB.
;
modelDl' tlfI¡tC�it.tntq;4
puntos de dato$ (lomó
un poJfnó�.·
INTERPOLACiÓN
\
�.IG.¡herr�¡�d$·
aju. básko. "" . ' .
uSGr la
de':J\ .
herra�lentas.de·�ti
12.1.1 Interpolación lineal
La forma más común de estimar un punto de datos entre dos puntos conocidos es la
interpolación lineal. En esta técnica, se supone que la función entre los puntos se
puede estimar mediante una línea recta dibujada entre ellos, como se muestra en la
figura 12.2. Si se encuentra la ecuación de una línea recta definida por los dos pun­
tos conocidos. se puede encontrar y para cualquier valor de x. Cuanto más cerca estén los
puntos, es más probable que sea más precisa la aproximación.
Sug e r e nc i a
Aunque posible, rara vez es aconsejable extrapolar la
donde se
recopilaron los datos. Puede ser tentador suponer que los datos seguirán el
mismo patrón, pero esta suposición puede conducir a grandes errores.
�
Suge r e n c i a
El último carácter e n e l nombre d e función
interp 1
e s e l número uno.
Dependiendo de la fuente, puede parecer como la letra ']'.
434
Capítulo
12
http://jurgensoft.co.cc
Técnicas numéricas
Gráfica de datos
12
10
O
8
¿Cuál es el valor
correspondiente de
y para esta x?
>.
'.l
¡¡:r
6
4
2
Figura 1 2. 1
O
Interpolación entre puntos
de datos.
2
1
O
4
3
Eje x
16 r-�--�----�--�
14
10
>.
'.l
¡¡:r
Figura 1 2.2
Interpolación lineal:
conecte los puntos con una
línea recto para encontrar y.
12
Punto interpolado
8
___
6
2
2
plear
.la.
:r
4
0
6
Datos medidos
Gráfica de datos
12
5
0
1
2
3
Eje x
4
5
6
I
I
I
------
Puntos interpolados
i
il
I
I
�---------
O
��--�r_��--�T-��
1
2
-1
O
4
5
6
3
Eje x
La interpolación lineal se puede realizar en MATLAB con la función
interpl,
---
interpl.
Para em­
primero necesitará crear un conjunto de pares ordenados a usar como entrada
para la función. Los datos que se usan para crear la gráfica de la derecha en la figura 12.2 son
x=0:5j
y= [1 5 , ID, 9, 6, 2, O];
Para realizar una sola interpolación, la entrada a interpl son los datos x, los datos y y el
nuevo valor x para el que le gustaría estimar
x es igual a 3.5, escriba
i nterp l (x , y , 3 . 5)
ans =
4
y. Por ejemplo, para estimar el valor de y cuando
http://jurgensoft.co.cc
Sección 1 2. 1
Puede realizar múltiples interpolaciones al mismo tiempo al colocar un vector de valo­
res x en el tercer campo de la función interpl. Por ejemplo, para estimar valores y para nuevas x
igualmente espaciadas desde O hasta 5 por 0.2, eseriba
new_x=0 : 0.2 : 5;
new_y=i nterpl (x,y,new_x)
Interpolación 435
interpolación: técnica
para estimar un valor
intermedio con base en
valores cercanos
que regresa
new_y =
Columns 1 through 5
15.0000 14.0000 13.0000 12.0000 11.0000
Columns 6 through 10
10.0000 9.8000 9.6000 9 . 4000 9 . 2000
Columns 11 through 15
9.0000 8.4000 7.8000 7.2000 6.6000
Columns 16 through 20
6.0000 5.2000 4.4000 3.6000 2.8000
Col umns 2 1 through 2 5
2 . 0000 1.6000 1.2000 0.8000 0.4000
Col umn 2 6
O
Se puede presentar los resultados en la misma gráfica con los datos originales en la figura
12.3:
(En este capítulo, por claridad, se dejaron fuera los comandos usados para agregar títulos y
etiquetas de eje a las gráficas.)
La función interpl tiene por defecto la interpolación lineal para realizar sus estima­
ciones. Sin embargo, como se verá en la siguiente sección, son posibles otros enfoques. Si se
Datos medidos e interpolados
16
14
12
10
>..
O)
¡:¡:r
8
6
Figura 12.3
4
2
O
-1
O
1
2
3
Eje x
4
5
6
Tanto los datos medidos
como los interpolados se
mostraron en la misma
gráfica. Los puntos
originales se modificaron
en la función de
grafícación interactiva para
hacerlos círculos sólidos.
436 Capítulo 12 Técnicas numéricos
http://jurgensoft.co.cc
quiere (probablemente para propósitos de documentación) definir explícitamente el enfoque
usado en
interpl como interpolación lineal, se puede especificar en un cuarto campo:
i nterp l (x , y , 3 . 5 ,
ans =
4
' l i near ' )
12. 1 .2 Interpolación cúbica segmentaría
Conectar los puntos de datos con líneas rectas probablemente no es la mejor fonna de estimar
valores intennedios, aunque seguramente es la más simple. Se puede crear una curva más
suave al usar la técnica de interpolación cúbica segmentaría (de trazador o spline), incluida
en la función
interpl. Este enfoque usa un polinomio de tercer orden para modelar el com­
portamiento de los datos. Para llamar la spline cúbica, se necesita agregar un cuarto campo a
interpl:
i nterpl(x , y , 3 . 5 , 'spl i ne' )
Este comando regresa una estimación mejorada de y en x
=
3.5:
ans =
3 . 9417
Desde luego, también se podría usar la técnica cúbica segmentaría para crear un arreglo de
nuevas estimaciones para y, para cada miembro de
un
arreglo de valores
x:
new_x=O:O . 2: 5 ;
new-y_spl i ne=i nterpl(x , y,new_x , ' spl i ne' ) ;
de los datos medidos (figura 12.4) con el uso
Una gráfica de estos datos en la misma
del comando
resulta en dos líneas diferentes.
Interpolación cúbica segmentaria
16
•
14
12
10
Figura 12.4
Interpolación cúbica
segmentaria (de trazador
o spline). Los puntos de
datos en la curva suave se
calcularon. Los puntos de
datos en los segmentos
de línea recto se midieron.
Note que todo punto
medido también cae en la
línea curva.
>.
Q
�
8
6
4
2
O
-1
O
1
2
x
3
4
5
6
http://jurgensoft.co.cc
Tabla 12.1
' li near '
Sección 12.1
Interpolación
437
Opciones de interpolación en la función interp1
interpolación lineal, que es por defecto
i nterpl (x , y , 3 . 5 , '1 i near ' )
ans
4
=
' nearest '
interpolación al vecino más cercano
i nterp l (x , y , 3 . 5 , ' nearest ' )
ans
2
=
' spl i n e '
interpolación cúbica segmentaria
i nterp l (x , y , 3 . 5 , ' spl i ne ' )
ans
3.9417
=
' pchi p '
' cubi c '
interpolación cúbica segmentaria que
preserva la forma
i nterp l (x , y , 3. 5 , ' pchi p ' )
ans
3 . 9048
igual que 'pchip'
i nterp l (x , y , 3 . 5 , ' cubi c ' )
ans
3 . 9048
=
=
' v5cubi c '
la interpolación cúbica de MTALAB 5
que no extrapola y usa 'spline' si x
no está igualmente espaciada
i nterpl (x , y , 3. 5 , ' v5cubi c ' )
ans
3.9375
=
La línea curva en la figura 1 2.4 se dibujó con el uso de los puntos de datos interpolados.
La línea compuesta de segmentos de línea recta se dibujó a través de los datos originales.
Aunque las formas más comunes de interpolar entre puntos de datos son los enfoques
lineal y spline, MATLAB ofrece algunas otras opciones, como se menciona en la tabla 12.1.
Propiedades termodinámicas: uso de las tablas de vapor
La materia de termodinámica hace uso extenso de tablas. Aunque muchas propiedades ter­
modinámicas se pueden describir mediante ecuaciones bastante simples, otras son pobremen­
te entendidas o las ecuaciones que describen su comportamiento son muy complicadas. Es
mucho más fácil sólo tabular los valores. Por ejemplo, considere los valores en la tabla 1 2.2
para vapor a O. l MPa (aproximadamente 1 atm) (figura 12.5).
Use interpolación lineal para determinar la energía interna a 2 1 5 oC. Use interpolación
lineal para determinar la temperatura si la energía interna es 2600 kJ/kg.
1 . Establezca el problema.
Encontrar la energía interna del vapor con interpolación lineal.
Encontrar la temperatura del vapor con interpolación lineal.
2. Describa las entradas y salidas.
Entrada
Tabla de temperatura y energía interna
desconocida
T desconocida
u
.,,,MOI·IE'·
438
Capítulo 12
Técnicas numéricas
http://jurgensoft.co.cc
Figura 12.5
los géiseres rocían agua y
vapor a alta temperatura
y gran presión.
Tabla 12.2
Energía interna como función de la temperatura
Energía interna
Temperatura, oC
100
2506.7
150
2582.8
200
2658.1
250
2733.7
300
2810.4
400
2967.9
500 .
3131.6
u,
kJ/kg
Dolos tomados de Joseph H. Keenan, Frederick G. Keyes, Philip G. Hill,
Y Joan G. Moore, 5team Tables, SI units (New York: John Wiley and Sons,
1978).
Salida
Energía interna
Temperatura
3. Desarrolle un ejemplo a mano.
En la primera parte del problema, se necesita encontrar la energía interna a 215 oC. La
tabla incluye valores a'200 oC y 250 oC. Primero se necesita determinar la fracción de
la distancia entre 200 y 250 a la que cae el valor 2 1 5:
215 - 200
250 - 200
=
0.30
Si se modela la relación entre temperatura y energía interna como lineal, la energía in­
terna también debe estar a 30% la distancia entre los valores tabulados:
0.30
u
=
- 2658.1
2733.7- - 2658.1
http://jurgensoft.co.cc
Al resolver para
u
Sección 12.1
Interpolación
439
se obtiene
u =
2680.78 kJ/kg
4. Desarrolle una solución MATLAB.
Cree la $olución MATLAB en un archivo-m y luego córralo en el entorno de comando:
%Ejempl o 12 . 1
%Termodi námica
T=[100, ISO, 200, 2 50, 300, 400, 500]¡
u= [2506 . 7, 2 582 . 8, 2658 . 1, 2 73 3 .7, 2 810 . 4, 2967 . 9, 3 13 1 .6]¡
newu=interpl (T, u, 2 1 5)
newT=i nterp1 ( u, T, 2600)
El código regresa
newu
2680 . 78
newT
161 . 42
=
=
5. Ponga a prueba la solución.
El resultado MATLAB coincide con el resultado a mano. Este enfoque se podría usar
para cualquiera de las propiedades tabuladas en las tablas de vapor. Las tablas JANAF
son una fuente similar de propiedades termodinámicas publicadas por el Natíonal Insti­
tute of Standards and Technology (Instituto Nacional de Estándares y Tecnología).
Propiedades termodinámicas: expansión de las tablas de vapor
Como se vio en el ejemplo 1 2. 1 , la termodinámica hace uso extenso de tablas. Comúnmen­
te, muchos experimentos se llevan a cabo bajo presión atmosférica, de modo que regular­
mente tendrá necesidad de usar la tabla 1 2.3, que sólo es una porción de las tablas de vapor
(figura 12.6).
Figura 1 2.6
Las plantas de electricidad
usan vapor como un "fluido
de trabajo".
440
Capítulo 12
http://jurgensoft.co.cc
Técnicas numéricas
Tabla 12.3
Propiedades de vapor supercalentado a 0.1 MPa
(aproximadamente 1 atm)
Volumen específico
v, m3/kg
Energía interna
Uf kJ/kg
h, kJ/kg
100
1.6958
2506.7
2676.2
150
1.9364
2582.8
2776.4
200
2.172
2658.1
2875.3
250
2.406
2733.7
2974.3
300
2.639
2810.4
3074.3
400
3.103
2967.9
3278.2
500
3.565
3131.6
3488.1
Temperatura, ·C
Entalpía
Datos tomados de Joseph H. Keenan, Frederick G. Keyes, Philip G. Hill, Y Joan G. Moore,
Steom Tables, SI units (New York: John Wiley and Sons, 1978).
Note que la tabla está espaciada a intervalos de 50 grados al principio y luego a intervalos de ;
100 grados. Suponga que tiene un proyecto que le requiere el uso de esta tabla y usted prefe­
riría no tener que realizar una interpolación lineal cada vez que la utilice. Use MATLAB para
crear una tabla, a través de interpolación lineal, con un espaciamiento de temperatura de 25 ;
grados.
1. Establezca el problema.
Encontrar el volumen específico, energía interna y entalpía cada 5 grados.
2. Describa las entradas y salidas.
Entrada
Salida
Tabla de temperatura y energía interna
Nuevo intervalo de tabla de 5 grados
Tabla
3. Desarrolle un ejemplo a mano.
En el ejemplo 1 2. 1 se encontró la energía interna a 2 15 oc. Dado que 215 no está en la
tabla de salida, se volverán a hacer los cálculos a 2 25 oC:
225 - 200
250 - 200
=
0.50
y
0.50
Al resolver para
u
u
=
-
2658.1
2733.7 - 2658.1
se obtiene
u =
2695.9 kJ/kg
Se puede usar este mismo cálculo para confirmar los de la tabla que cree.
http://jurgensoft.co.cc
Sección 12.1
4. Desarrolle una solución MATLAB.
Cree la solución MATLAB en un archivo-m y luego córralo en el entorno de comandos:
%Ej empl o 12 . 2
%Termodi námi ea
el ear , el e
T= [100 , I S O , 200 , 2 5 0 , 300 , 400 , 500] ';
v= [1 . 69 5 8 , 1.9364 , 2.172 , 2 . 406 , 2 . 639 , 3 . 10 3 , 3 . 56 5] ' ;
u= [2506 . 7 , 2 5 82 . 8 , 26 5 8.1 , 273 3 . 7 , 2810.4 , 2967 . 9 , 3 1 3 1 . 6] ' ;
h= [2676.2 , 2776 . 4 , 2875 . 3 , 2974.3 , 3074 . 3 , 3278.2 , 3488 . 1] ' ;
props= [v , u , h] ;
newT= [100 : 25 : 500] ' ;
newprop= i nterp l (T , props , newT) ;
d i sp ( ' Propi edades de vapor a 0 . 1 MPa')
d i sp ( ' Temp Speei f i e Vol ume Internal Energy Enthal py ' )
d i sp(' e mA3/kg kJ/kg kJ/kg ' )
fpri ntf('%6 . 0f %10 . 4f %8 . 1 f %8 . 1f \n ' , [newT , newprop] ' )
El código MATLAB imprime la tabla siguiente:
Propi edades de vapor a 0.1 MPa
Temp Speei fi e Vol ume Internal Energy Enthal py
mA3/kg
e
kJ/kg
kJ/kg
100
1 . 69 5 8
2506 . 7
2676 . 2
125
1 . 8161
2 5 44.8
2726 . 3
150
1.9364
2 5 82 . 8
2776.4
175
2 . 0 542
2620.4
2825.9
200
2 . 1720
2658.1
2875 . 3
225
2 . 2890
2695 . 9
2924 . 8
250
2.4060
273 3 . 7
2974 . 3
275
2.522 5
2772.1
3024 . 3
300
2 . 6390
2810 . 4
3074 . 3
325
2 . 75 50
2849 . 8
3125 . 3
3 50
2.8710
2889.2
3 176 . 3
37 5
2.9870
2928 . 5
3227 . 2
400
3 . 1030
2967.9
3278.2
425
3 . 21 8 5
3008 . 8
3 3 30 . 7
4 50
3 . 3340
3049.8
3383 . 1
475
3 . 4495
3090 . 7
343 5.6
500
3 . 5650
3 13 1 . 6
3488 . 1
5. Ponga a prueba 1a solución.
El resultado MATLAB coincide con el resultado a mano. Ahora que se sabe que el pro­
grama funciona, puede crear tablas más extensas al cambiar la definición de newT de
newT= [100 : 2 5 : 500] ' ;
a un vector con un incremento de temperatura más pequeño, por ejemplo
newT= [100 : 1 : 500] ' ;
Interpolación
44 1
Capítulo
12
Técnicas numéricas
http://jurgensoft.co.cc
Ejercicio de práctica 12.1
Cree veetores xyy para representar los siguientes datos:
y
10
20
23
45
30
40
50
60
82
111
140
167
60
70
198
200
220
80
90
100
l. Grafique los datos en una gráfica xy.
2. Use interpolación lineal para aproximar el valor de y cuandox = 15.
3. Use interpolación cúbica segmentaria (spline) para aproximar el valor de y
cuandox
15.
4. Use interpolación lineal para aproximar el valor de x cuando y = 80.
5. Use interpolación cúbica segmentaria (spline) para aproximar el valor de x
cuandoy
80.
6. Use interpolación cúbica segmentaria (spline) para aproximar valores y para
valores x igualmente espaciados entre 10 Y 100 a intervalos de 2.
7. Grafique los datos originales en una gráfica.ry como puntos de datos no
conectados por una línea. Además, grafique los valores calculados en el
problema 6.
12.1.3 Interpolación multidimensional
Imagine que tiene un conjunto de datos z que depende de dos variables x y y. Por ejemplo,
•
considere esta tabla:
x=4
y=2
Y = 4
Y=6
7
54
403
22
15
109
807
Si quiere detennÍnar el valor de z en y = 3 Y x
164
1210
=
30
218
1614
1.5, tendría que realizar dos interpola­
ciones. Un enfoque sería encontrar los valores de z en y = 3 Y todos los valores x dados con el
uso de
interpl y Juego hacer una segunda interpolación en su nuevo gráfico. Primero defina
x,yy zenMATLAB:
y=2:2:6:
x=I:4:
z=[ 7
1 5 22
30
54 109 164 2 18
403 807 1 2 10 1614]:
http://jurgensoft.co.cc
Ahora se puede usar
interpl
valores x:
Sección 12.1
para encontrar los valores de z en y = 3 para todos los
new_z=i nterpl (y,z,3)
regresa
new_z =
30.50
62 . 00
93.00
124.00
Finalmente, dado que se tienen valores z en y = 3, se puede usar
y
3 Yx
interpl para encontrar z en
1.5:
new_z2=i nterpl (x,new_z,I.5)
new_z2 =
46.25
Aunque este enfoque funciona, es complicado tener que realizar los cálculos en dos pasos.
MATLAB incluye una función de interpolación lineal bidimensional,
interp2,
que puede re­
solver el problema en un solo paso:
i nterp2 (x,y,z,I.5,3)
ans =
46.2500
El primer campo en la fundón interp2 debe ser un vector que defina el valor asociado con
cada columna (en este caso, x), y el segundo campo debe ser un vector que defina los valores
asociados con cada fila (en este caso, y). El arreglo
z
debe tener el mismo número de colum­
nas como el número de elementos en x y debe tener el mismo número de filas como el número
de elementos en y. El cuarto y quinto campos corresponden al valor de x y el valor de
el que le gustaría determinar nuevos valores
MATLAB también incluye una función,
Consulte la característica
help para
y para
z.
interp3,
para interpolación tridimensional.
los detalles acerca de cómo usar esta función e
interpn,
que le permite realizar interpolación n-dimensional. Todas estas funciones tienen por defecto
la técnica de interpolación lineal, pero aceptarán cualquiera de las otras técnicas mencionadas
en la tabla 12.1.
Eiercicio de práctica 12.2
...
Cree vectores
x
y y para representa los siguientes datos:
10
20
30
40
50
60
70
80
90
100
23
45
60
82
111
140
167
198
200
20
33
55
70
92
121
150
177
198
210
230
l . Grafique ambos conjuntos de datos yz en la misma gráfica. Agregue una
leyenda que identifique cuál valor de x aplica a cada conjunto de datos.
2. Use interpolación lineal bidimensional para aproximar el valor de z cuando
y= 15 Y x=20.
Inter polación 443
444
Capítulo 12 Técnicas numéricas
http://jurgensoft.co.cc
3. Use interpolación cúbica segmentaria (spline) para aproximar el valor de z
cuando y
15 Y x = 2 0.
4. Use interpolación lineal para crear una nueva subtabla para x = 20 Y
para todos los valores y.
12.2
Idea clave: el ajuste de
curva es una técnica para
el modelado de datos con
una ecuación.
x
= 25
AJUSTE DE CURVAS
Aunque se podrían usar técnicas de interpolación para encontrar valores de )' entre valores
x
medidos, sería más conveniente si se pudieran modelar los datos experimentales como y = f(x).
Entonces se podría calcular cualquier valor de y que se quisiera. Si se sabe algo acerca de la
relación subyacente entre x y y, podría ser capaz de determinar una ecuación sobre la base de
dichos principios, Por ejemplo, la ley del gas ideal se basa en dos suposiciones subyacentes:
•
Todas las moléculas en un gas chocan elásticamente.
•
Las moléculas no ocupan espacio en su contenedor,
Ninguna de estas suposiciones es completamente precisa, de modo que la ley del gas
ideal funciona sólo cuando hay una buena aproximación de la realidad, pero esto es cierto para
muchas situaciones, y la ley del gas ideal es extremadamente va1iosa. Sin embargo, cuando
los gases reales se desvían de esta relación simple. se tienen dos opciones para cómo modelar
su comportamiento: se puede intentar entender la física de la süuación y ajustar la ecuación
en concordancia o se puede tomar los datos y modelarlos empíricamente. Las ecuaciones em­
píricas no se relacionan con teoría alguna de por qué ocurre un comportamiento; sólo hacen
un buen trabajo de predicción acerca de cómo cambia un parámetro en relación con otro
parámetro.
MATLAB tiene funciones internas de ajuste de curvas que le pernlÍten modelar los
datos empíricamente, Es importante recordar que estos modelos son buenos s6lo en la región
donde se recopilaron los datos. Si no se entiende por qué un parámetro como y cambia como
lo hace con x, no puede predecir si la ecuación de ajuste de datos todavía funcionará afuera del
rango donde se recopilaron los datos.
12.2.1 Regresión lineal
...
La forma más simple de modelar un conjunto de datos es una línea recta. Vuelva a revisar los
•
datos de la sección 12. 1. 1:
x=0:5;
y=[1 5, 10, 9, 6, 2 , O];
Si grafica los datos en la
12.7. puede intentar dibujar una línea recta a través
de los puntos de datos para obtener un modelo burdo del comportamiento de los datos. Este
proceso a veces se denomina "a ojo de buen cubero", lo que significa que no se realizaron
cálculos, pero que parece
un
buen ajuste.
Al observar la gráfica. puede ver que muchos de los puntos parecen caer exactamente
en la línea, pero otros están afuera por cantidades variables. Para comparar la calidad del
ajuste de esta línea con otros posibles estimados se debe encontrar la diferencia entre el valor
y real y el valor calculado del estimado.
Se puede encontrar la ecuación de la línea en la
en x
12.7 al notar que x
5, y = O. Por tanto, la pendiente de la línea es
elevación
uy
carrera
ux
0- 15
5
-
O
-3
O, y = 15, Y
http://jurgensoft.co.cc
Sección 12.2 Ajuste de curvas 445
Modelo lineal d e algunos datos
16
14
12
10
;>,
e,)
8
¡r:r
6
Desviación del
modelo
4
2
Figura 12.7
O
-1
1
o
2
5
4
3
6
x
La línea cruza el eje yen
15,
Modelo lineal; la línea
fue echa "a ojo de buen
cubero".
de modo que la ecuación de la línea es
-3x+ 15
y
Las diferencias entre los valores reales y los valores calculados se presentan en la ta­
bla
12.4.
La técnica de regresión líneal usa un enfoque llamado mínimos cuadrados para compa­
regresión lineal:
rar qué tan diferentes son las ecuaciones que modelan el comportamiento de los datos. En esta
técnica para modelar
técnica, las diferencias entre los valores reales y calculados se elevan al cuadrado y se suman.
datos como una línea
Esto tiene la xentaja de que las desviaciones positivas y negativas no se cancelan mutuamente.
recta
Se podría usar MATLAB para calcular este parámetro para los datos. Se tiene
que produce
suma_de_cuadrados
5
Tabla 12.4 Diferencia entre valores reales y calculados
x
y (real)
y_cale (calculado)
diferencia
=
15
15
O
10
12
-2
9
9
O
3
6
6
O
4
2
3
-1
5
O
O
O
O
2
calc
446
http://jurgensoft.co.cc
Capítulo 12 Técnicas numéricas
Está más allá del ámbito de este texto explicar cómo funciona la técnica de regresión lineal,
excepto decir que compara diferentes modelos y
el modelo en el que la suma de los cuaen MATLAB con la función polyfit. Se
drados es la más pequeña. La regresión lineal se
requieren tres campos para
polyfit: un vector de valores x, un vector de valores y y un entero
que indique qué orden de polinomio se usaría para ajustar los datos. Dado que una línea recta
es un polinomio de primer orden, se ingresará el número 1 en la función
polyfit:
pol yfi t (x , y , l)
ans =
- 2 . 9143 14 . 2 8 57
Los resultados son los coeficientes correspondientes a la ecuación polinomial de primer
orden de mejor ajuste:
y = -2.9143x + 14.2857
¿Realmente esto es un mejor ajuste que el modelo "de buen cubero"? Se puede calcular
la suma de los cuadrados para encontrar:
best-y=-2.9143*x+14 . 28 57 ;
new_sum=sum((y-best-y).A2)
new_sum =
3 . 3714
Dado que el resultado del cálculo de suma de cuadrados de hecho es menor que el valor
encontrado por la línea "buen cubero", se puede concluir que MATLAB encontró un mejor
ajuste a los datos. Se puede graficar los datos y la línea de mejor ajuste determinada por regre­
sión lineal (véase la figura 12.8) para intentar y obtener un sentido visual de si la línea ajusta
bien los datos:
pl ot (x , y , ' o' , x , best-y)
Mejor ajuste con uso de
líneal
16
O
14
12
O
10
;;.,
o
iiJ'
8e
6
4
Figura 1 2.8
Datos y línea de mejor
ajuste con el uso de
regresión lineal.
O
f
L
:¡
-1
O
I.....
O
2
3
x
4
S
6
http://jurgensoft.co.cc
Sección 12.2
12.2.2 Regresión polinomial
Desde luego, las líneas rectas no son las únicas ecuaciones que se podrían analizar con la
técnica de regresión. Por ejemplo, un enfoque común es ajustar los datos con un polinomio de
orden superior de la forma
La regresión polinomial se usa para obtener el mejor aj uste al minimizar la suma de los
cuadrados en las desviaciones de los valores calculados de los datos. La función polyñt le per­
mite hacer esto fácilmente en MATLAB. Se puede ajustar los datos de muestra a ecuaciones
de segundo y tercer orden con los comandos
pol yfi t (x,y,2)
ans =
0 . 0536 -3 . 182 1 14.4643
y
polyfit (x,y,3)
ans =
-0.0648 0.5397 -4 . 0701 14.6587
que corresponden a las siguientes ecuaciones
Y2
O.0536x 2
Y3
-O.0648x 3 + 0.5397x2 - 4.0701x + 14.6587
3.1821x + 14.4643
Se puede encontrar la suma de los cuadrados para determinar si estos modelos ajustan
mejor los datos:
y2=0.0536*x.A2-3.182*x + 14.4643;
sum«y2-y) . A;!)
ans =
3 . 2643
y3=-0.0648*x . A3+0.S398*x.A2-4 . 0701*x + 14.6587
sum«y3-y) .A2)
ans
2.9921
Como se esperaba, cuanto más ténninos agregue a la ecuación, "mejor" es el ajuste.
al menos en el sentido de que disminuye la distancia entre los puntos de datos medidos y
predichos.
Con l a finalidad de graficar las curvas definidas por estas nuevas ecuaciones. necesitará
más de seis puntos de datos usados en el modelo lineal. Recuerde que MATLAB crea gráficas
al conectar puntos calculados con líneas rectas. así que si quiere una curva suave necesitará más
puntos. Se pueden obtener más puntos y graficar las curvas con el siguiente código:
smooth_x=0:0.2:5 ;
smooth_y2=0 . 0536*smooth_x.A2-3.182*smooth_x + 14 . 4643;
subpl ot ( 1,2,1)
plot (x,y,'o',smooth_x,smooth_y2)
Ajuste de curvas
447
448
Capítulo 12
http://jurgensoft.co.cc
Técnicas numéricos
smooth_y3=-O.0648*smooth_x . A3+0 . 5 398*smooth_x . A2 - 4 . 0701*
smooth_x + 14.6 5 87 ;
subpl ot (1 , 2 , 2)
pl ot (x , y , ' o ' , smooth_x , smooth-y3)
Idea clave: el
modelado de datos
Los resultados s e muestran e n l a figura 12.9. Note que l a ligera curvatura e n cada mode­
lo. Aunque matemáticamente estos modelos ajustan mejor los datos, pueden no ser una repre­
se debe basar en una
sentación tan buena de la realidad como la línea recta. Como ingeniero o científico, necesitará
comprensión física del
evaluar cualquier modelado que haga. Necesitará considerar lo que sabe acerca de la física del
proceso, además de los
proceso que modela y qué tan precisas y reproducibles son sus mediciones.
datos reales recopilados.
12.2.3 La función polyval
La función
polyñt regresa los coeficientes de un polinomio que ajusta mejor los datos, al
menos sobre la base de un criterio de
En la sección previa se
dichos
coeficientes en una expresión MATLAB para el polinomio correspondiente y se les usó para
calcular nuevos valores de y. La función
polyval puede realizar la misma labor sin tener que
reingresar los coeficientes.
La función
polyval requiere dos entradas. La primera es un arreglo coeficiente, como
polyñt. La segunda es un arreglo de valores x para el que le gustaría
el que creó mediante
calcular nuevos valores y. Por ejemplo, se puede tener
coef = pol yfi t (x , y , l)
y_fi rst_order_f i t = pol yval (coef , x)
Estas dos lineas de código se podrían acortar a una linea al anidar funciones:
y_f i rst_order_fi t = pol yval (pol yf i t (x , y , l) , x)
Se puede usar la comprensión de las funciones
polyñt
y
polyval para escribir un pro­
grama para calcular y graficar los ajustes de cuarto y quinto orden para los datos de la sección
1 2. 1 . 1:
y4=pol yval (pol yfi t ( x , y , 4) , smooth_x) ;
y5=pol yval (pol yfi t ( x , y , 5 ) ,smooth_x) ;
subpl ot (1 , 2 , 1)
pl ot (x , y , ' o ' , smooth_x , y4)
axi s ([O , 6 , - 5 , 1 5 ] )
Modelo de segundo orden
Modelo de tercer orden
15
10
>.
15
10
O
>.
O)
5
¡¡:r
O
S
O
Figura 1 2.9
Ajustes polinomiales de
segundo y tercer orden.
O
2
Eje x
4
6
-5
------�----�--�
O
2
Eje x
4
6
http://jurgensoft.co.cc
Modelo de cuarto orden
Sección 12.2
Ajuste de curvas
449
Modelo de quinto orden
1�------�
1�------.
10
10
5
o
o
2
6
4
Eje x
Figura 12. 1O
-5 L-----��------ �----�
2
4
0
6
Eje x
s ubpl ot(1 , 2 , 2 )
pl ot (x,y, 'o', smooth_x,yS)
axi s ( [O.6, -5, 1 5])
La figura 12.10 proporciona los resultados de la gráfica.
Como se esperaba, el ajuste de orden superior empareja los datos cada vez mejor. El
modelo de quinto orden ajusta exactamente porque sólo hay seis puntos de datos.
Eje r c i c i o d e p r á c ti c a 12.3
Cree veetores x y y para representar los siguientes datos:
Z
==15
z==
30
x
y
x
y
10
23
10
33
30
60
30
20
40
50
60
70
80
90
100
45
20
82
40
140
60
111
167
198
200
220
50
70
80
90
100
55
70
92
121
150
177
198
210
230
1. Use la función polyfit para ajustar los datos para z = 15 a un polinomio de
primer orden.
2. Cree un vector de nuevos valores x, desde 10 hasta 100 en intervalos de 2. Use
su nuevo vector en la función polyvaljunto con los valores de coeficientes
encontrados en el problema 1 para crear un nuevo vector y.
3. Grafique los datos originales como círculos sin una línea conectora y los datos
calculados como una línea sólida en la misma gráfica. ¿Qué tan bien cree que
su modelo ajuste los datos?
4. Repita los problemas del 1 al 3 para los datos x y y correspondientes a z
30.
Modelos de cuarto y quinto
orden de seis puntos de
datos.
450
http://jurgensoft.co.cc
Capítulo 12 Técnicas numéricas
·i"MAI·IE'·
Agua en un conducto
Detenninar cuánta agua fluirá por un conducto no es tan fácil como podría parecer a primera
vista. El canal podría tener una forma no uniforme (véase la figura 12. 1 1 ), las obstrucciones,
podrían influir el flujo, la fricción es importante, etcétera. Un enfoque numérico le permite
incluir todas estas preocupaciones en un modelo de cómo se comporta realmente el agua.
Considere los siguientes datos recopilados de un conducto real*
Altura,ft
Figura 1 2. 1 1
o
los conductos no
necesariamente
tienen una sección
transversal uniforme.
1.7
1.95
2.60
2.92
4.04
5.24
Flujo,Wls
o
2.6
3.6
4.03
6.45
11.22
30.61
Calcule una ecuación lineal, cuadrática y cúbica de mejor ajuste para los datos y grafíquela en
la misma gráfica. ¿Cuál modelo representa mejor los datos? (Lineal es primer orden, cuadrá".
tica es segundo orden y cúbica es tercer orden.)
1. Establezca el problema.
Realizar una regresión polinomial sobre los datos, graficar los resultados y determinar
cuál orden representa mejor los datos.
2. Describa las entradas y salidas.
Entrada
Datos de altura y flujo
Salida
Gráfica de los resultados
3. Desarrolle un ejemplo a mano.
Dibuje una aproximación de la curva a mano. Asegúrese de comenzar en cero pues, si la
altura del agua en el conducto es cero, no debería fluir agua (véase la figura 1 2. 1 2).
4. Desarrolle una solución MATLAB.
Cree la solución MATLAB en un archivo"m y luego córralo en el entorno de comandos:
%12.3 E j empl o-Agua en u n conducto
height = [1.7 , 1.9 5 , 2.6 , 2.92 , 4.04 , 5 . 24] ;
fl ow = [2.6 , 3.6 , 4 . 03 , 6 . 4 5 , 1 1.22 , 30 . 6 1 ] ;
new_he i ght=O:0. 5:6 ;
newfl=pol yval (pol yfi t (helght , fl ow , 1) , new_h e i ght) ;
newf2=pol yval (pol yfi t (height , fl ow , 2) , new_h e i ght) ;
newf3=pol yval (pol yfi t (h e i gh t , fl ow , 3) , new_h e i ght) ¡
pl ot (hei gh t , fl ow , ' o ' , new_he i ght , newfl , new_height , newf2 ,
new_height,newf3)
t i tl e( ' Aj uste de fl u j o de agua ' )
xl abel ( ' Al tu ra de agua , ft ' )
yl abel ('Tasa de fl ujo , CFS ' )
l egend ('Datos ' , ' Aj uste l i neal ' , ' Aj uste cuadráti co ' ,
' Aj uste cúbi co ' )
*Tomado de Etter,
tice Hall,
2005).
Kuncicky y Moore, Introduction 10 MATIAB 7 (Upper Saddle River, NJ:
PearsonJPren­
http://jurgensoft.co.cc
Sección 12.2 Ajuste de curvas
45 1
Ajuste a mano de flujo de agua
60
50
40
Vl
b
30
t¡:¡
<l)
"O
'"
'"
'"
20
o"
.S'
10
f-<
o o
O
- 10
-20
(l
1
2
3
4
5
6
Altura de agua, ft
Figura 12. 12
Ajuste a mano de flujo de
agua.
El código MATLAB genera la gráfica que se muestra en la figura 1 2. 1 3.
5. Ponga a prueba la solución.
La pregunta de cuál línea representa mejor los datos es difícil de responder. La aproxi­
mación polinomial de mayor orden seguirá mejor los puntos de datos, pero no necesa­
riamente representa mejor la realidad.
El ajuste lineal predice que la tasa de flujo de agua será aproximadamente -5
CFS a una altura de cero, que no concuerda con la realidad. El ajuste cuadrático regresa
de vuelta luego de un minimo a una altura de aproximadamente 1.5 metros, de nuevo un
resultado inconsistente con la realidad. El ajuste cúbico (tercer orden) sigue mejor los
puntos y probablemente es el mejor ajuste polinomial. También se debería comparar la
solución MATLAB con la solución a mano. El ajuste polinomial de tercer orden (cúbi­
co) iguala aproximadamente la solución a mano.
Ajuste de flujo de agua
60
o Datos
--- Ajuste lineal
-- Ajuste cuadrático
Ajuste cúbico
50
40
Vl
b
Ó
.S'
¡¡;:
<l)
"O
'"
'"
'"
f-<
o
30
20
10
O
- 10
Figura 12. 1 3
O
1
2
3
4
Altura de agua, ft
5
6
Diferentes enfoques de
ajuste de curva.
452
Capítulo 12
Técnicas numéricas
·¡"Mal.IEI-
http://jurgensoft.co.cc
Capacidad calorífica de un gas
La cantidad de energía necesaria para calentar un gas 1 grado (llamada capacidad calorífica
del gas) depende no sólo del gas, sino también de su temperatura. Esta relación se mode­
la usualmente con polinomios. Por ejemplo, considere los datos para dióxido de carbono en la
tabla 12.5.
Use MATLAB para modelar estos datos como polinomio. Luego compare los resulta­
dos con los obtenidos del modelo publicado en B. G. Kyle, Chemical and Process Thermody­
namics (Upper Saddle River, NJ: Prentice Hall PTR, 1999), a saber,
Cp
=
1.698 X 1O- 10T3
-
7.95 7 X 1O-7T2 + 1.359 X 1O-3 T + 5.059 X 10-1
1. Establezca el problema.
Cree un modelo matemático empírico que describa la capacidad calorífica como fun­
ción de la temperatura. Compare los resultados con los obtenidos de los modelos pu­
blicados.
2. Describa las entradas y salidas.
Entrada
Use la tabla proporcionada de datos de temperatura y capacidad calorífica
Salida
Encontrar los coeficientes de un polinomio que describa los datos.
Gráfica de los resultados
3. Desarrolle un ejemplo a mano.
Al graficar los datos (figura 12.14) se puede ver que un ajuste en línea recta (poli­
nomio
Tabla 12.5
Capacidad calorífica de dióxido de carbono
Temperatura T en K
Capacidad calorífica Cp en kJ/(kg K)
250
0.791
300
0.846
350
0.895
400
0.939
450
0.978
500
1.014
550
1.046
600
1.075
650
1.102
700
1.126
750
1.148
800
1.169
900
1.204
1000
1.234
1500
1.328
Fuente: Tablas de propiedades térmicas de gases,NBS Circular 564,
1955.
http://jurgensoft.co.cc
Sección 12.2
Ajuste de curvas
453
Capacidad calorífica del dióxido de carbono
1.4 .-----,--,---,
o
1.3
�
0Il
�
1.2
8-¿ 1.1
u
¡¡::
'C
o
"§
]
"O
'g
�
U
1
0.9
0.8
O
o
O
O
O
O
O
O
O
O
0
0
o
o
Figura 1 2. 1 4
0.7 "---____..l...____
...
-'____
---'______-'--____--'-____--'-____
---'
200
400
600
800
1000
1200
1400
1600
Temperatura, K
de primer orden) no es una buena aproximación de los datos. Será necesario evaluar
varios modelos diferentes de, por ejemplo, primero a cuarto orden.
4. Desarrolle una solución MATLAB.
%Ejempl o 12.4
Capaci dad cal orífi ca de un gas
%Defi na l os datos medi dos
T= [2 5 0 : 50 : 800 , 900 , 1000 , 1 5 00] ;
Cp=[0.79 1 , 0.846 , 0 . 89 5 , 0.939 , 0.978 , 1.014 , 1.046 ,
1.07 5 , 1.102 , 1 . 126 , 1.148 , 1.169 , 1 . 204 , 1 . 2 3 4 , 1.32 8] ;
%Defi na un a rregl o más fi no de temperaturas
new_T=2 5 0 : 10 : 1 5 00 ;
%Cal cul e nuevos val ores de capaci dad cal orífi ca usando
cuatro d i ferentes model os pol i nomi al es
Cp1=pol yval (pol yfi t (T , Cp , 1) , new_T) ;
Cp2=pol yval (pol yfi t (T , Cp , 2) , new_T) ;
Cp3=pol yval (pol yfi t (T , Cp , 3) , new_T) ;
Cp4=pol yval (pol yfi t (T , Cp , 4) , n ew_T) ;
%Grafi que l os resul tados
subpl ot (2 , 2 , 1)
pl ot (T , Cp , 'o' , new_T , Cp1)
axi s ( [0 , 1700 , 0.6 , 1.6 ] )
subpl ot(2 , 2 , 2)
pl ot (T , Cp , ' o ' , new_T , Cp2)
axi s ( [O, 1700 , 0 . 6 , 1.6] )
subpl ot (2 , 2 , 3)
pl ot (T , Cp , 'o ' , new_T , Cp3)
axi s ( [0 , 1700 , 0.6 , l.6 ] )
subpl ot ( 2 , 2 , 4)
pl ot (T , Cp , ' o ' , new_T , Cp4)
axi s ( [O , 1700 , O.6 , 1.6] )
Capacidad calorífica del
dióxido de carbono como
función de la temperatura.
454 Capítulo 12
http://jurgensoft.co.cc
Técnicas numéricas
Si observa las gráficas que se muestran en la figura 12.15, podrá ver que un modelo
de segundo o tercer orden describe adecuadamente el comportanúento en esta región de
temperatura. Si decide usar un modelo polinomial de tercer orden, puede encontrar los
coeficientes con polyfit:
pol yfi t(T , Cp , 3)
ans
2.7372e-OlO - 1.063 1e-006 1.5 521e - 003 4.6837e-OO l
=
Los resultados corresponden a la ecuación
C
p
=
2.7372 X 1O-10T3 - 1.0631 X 10-6T2 + 1.5521 X 1O-3T + 4.6837 X 10-1
5. Ponga a prueba la solución.
Comparar los resultados con los reportados en la literatura muestra que están cerca,
pero no exactos:
Cp = 2.737 X 1O-JOT3 - 10.63 X 1O-7T2 + 1.552 X 1O-3T + 4.683 X 10-1
(su ajuste)
C
p
=
1. 698 X 1O-lOT3 - 7.957 X 1O-7T2 + 1.359 X 1O-3T + 5.059 X 10-1
( literatura)
Esto realmente no es muy sorprendente, pues se modeló un número limitado de datos.
Los modelos reportados en la literatura usan más datos y, por tanto, probablemente son
más precisos.
Modelo de primer orden
1.6
�
r----,
Modelo de segundo orden
1.6 ,------,
CI)
�
"'"
¿
�'"'
.Q
�
"O
'"
"O
"ü
'"
o..
'"
•
1.4
1.4
1.2
1.2
1
1
0.8
0.8
U 0.6 L-__�__�___�---""
O
1000
500
1500
0.6
Modelo de tercer orden
'----�---�--�-"'
O
500
1000
1500
Modelo de cuarto orden
�
CI)
�
"'"
¡f
<a
1.4
1.4
1.2
1.2
"§
1
1
'g
0.8
0.8
'¡::
o
Figura 1 2. 1 5
Comparación de diferentes
polinomios usados para
modelar los datos de
capacidad calorífica
de dióxido de carbono.
"O
'"
"O
ª'
U
0.6 L-__�___�__�--'
O
500
1000
Temperatura, K
1500
500
1000
Temperatura, K
1500
Sección 12.3 Uso de las herramientas de ajuste interactivas
http://jurgensoft.co.cc
12.3
455
USO DE lAS HERRAMIENTAS DE AJUSTE INTERACTIVAS
MATLAB 7 incluye nuevas herramientas de graficación interactivas que le permiten anotar
sus gráficas sin usar la ventana de comandos. También se incluyen herramientas de ajuste de
curvas básico, ajuste de curvas más complicado y estadísticas.
12.3.1 Herramientas de ajuste básico
Para acceder a las herramientas de ajuste básico, primero cree una figura:
x=O:5j
y=[O , 20 , 60 , 68 , 77 , 1 10]
y2=20*xj
p1 ot (x , y , ' o ' )
axi s ([ - 1 , 7 , -20 , 120] )
Estos comandos producen una gráfica (figura 1 2. 1 6) con algunos datos muestra.
Para activar las herramientas de ajuste de curvas, seleccione Tools -? Basic Fitting de
la barra de menú en la figura. La ventana de ajuste básico se abre en la parte superior de la
gráfica. Al marcar linear, cubic y show equations (véase la figura 12. 1 6), se generó la gráfica
que se muestra en la figura 1 2 . 1 7 .
A l marcar e l recuadro plot residuals s e genera una segunda gráfica que muestra l o lejos
que está cada punto de la línea calculada, como se muestra en la figura 12. 1 8 .
E n l a esquina inferior derecha d e l a ventana d e ajuste básico hay un botón flecha. Al
seleccionar dicho botón dos veces se abre el resto de la ventana (figura 12. 1 9).
El panel central de la ventana muestra los resultados del ajuste de curva y ofrece la op­
ción de guardar dichos resultados en el área de trabajo. El panel derecho le permite seleccionar
valores x y calcular valores y con base en la ecuación que se despliega en el panel central.
residual: diferencia
entre el valor real y el
calculado
Además de la ventana de ajuste básico, puede acceder a la ventana de estadística de datos
(figura 1 2.20) desde la barra de menú figura. Seleccione Tools -? Data Statistics desde la
o
shape-preserving interpolant
5th degree polynomial
8th degree polynomi.1
7th degree polynomi.1
8th degree polynomi.1
o
o
o
Figura 1 2. 1 6
Ventana interactiva de
ajuste básico.
456
Capítulo 12 Técnicas numéricas
http://jurgensoft.co.cc
Algunos datos
100
80
Y = 21 *x + 3.8
Y = 1.1 *12 - 9.3*r + 41 *x
60
o
40
Datos 1
Lineal
Cúbica
---
20
o
Figura 1 2. 1 7
-20 ���--�----L--�
3
4
6
7
-1
O
2
5
1
Gráfica generada con la
ventona de ajuste básico.
Tiempo. segundos
Algunos datos
120
LI..
100
80
�
3
�
:L)
Q.
El
�
•
y = 21 *x + 3.8
Y = 1.1*x.-1 - 9.3*r + 41*x
3.1
60
40
20
O
-20
-1
O
1
2
3
5
4
6
7
Tiempo,
Residuales
10
5
O
Figura 1 2. 1 8
Los residuales son la
diferencia entre los
puntos de datos reales y
calculados.
-5
- 10
O
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
Sección 12.3 Uso de las herramientas de aiuste i nteractivas
http://jurgensoft.co.cc
1 . 1019
- 9 . 3175
41 . 192
0556
of r:esiduals
1 5 . 385
Figura 1 2. 1 9
Ventana de ajuste básico.
Figura 1 2.20
Ventana de estadísticas de datos.
=
457
458
Capítulo 12
Técnicas numéricas
http://jurgensoft.co.cc
ventana de figura. La ventana de estadísticas de datos le permite calcular interactivamente
funciones estadísticas como la media y la desviación estándar, con base en los datos de la
figura, y también le permite guardar los resultados en el área de trabajo.
1 2.3.2 Caja de herramientas de ajuste de curvas
Además de la utilidad de ajuste básico, MATLAB contiene cajas de herramientas para ayudar­
le a realizar operaciones estadísticas especializadas y de ajuste de datos. En particular, la caja
de herramientas de ajuste de curvas
contiene una interfaz gráfica de usuario
(GUI) que le
permite ajustar curvas con más que sólo polinomios. Sin embargo, debe tener instalada en su
copia de MATLAB la c aj a de herramientas de ajuste de curvas, antes de que pueda ejecutar
los ejemplos que siguen.
Antes de acceder a la caj a dc herramientas de ajuste de curvas, necesitará un conj unto de
datos para analizar. Puede usar los datos que se usaron en secciones anteriores del capítulo:
x=O : S ;
y=[O, 20 , 60 , 68 , 77, l10] ;
Para abrir la c aj a de herramientas de ajuste de curvas escriba
c ftool
Esto lanza la ventana de herramientas de ajuste de curvas. Ahora necesitará decir a la he­
rramienta de ajuste de curvas qué datos usar. Seleccione el botón data, que abrirá una ventana de
datos. La ventana de datos tiene acceso al área de trabajo y le permitirá seleccionar una variable
independiente
(x) y una dependiente (y) de una lista desplegable. (Véase la figura 1 2.21.)
En el ejemplo, debe elegir x y y, respectivamente, de la lista desplegable. Puede asignar
un nombre de conjunto de datos, o MATLAB le asignará un nombre por usted. Una vez que
haya elegido las variables, MATLAB grafica los datos. En este punto, puede cerrar la ventana
de datos.
Figura 1 2. 2 1
Ventanas de ajuste de
curvas y datos.
Sección
Uso de las herramientas de ajuste interactivas
http://jurgensoft.co.cc
1 2. 3
459
Figura 1 2.22
Ventana de herramientas
de ajuste de curvas.
De vuelta en la ventana de herramientas de ajuste de curvas, ahora seleccione el botón
Fitting, que le ofrece las opciones de ajustar algoritmos. Seleccione New tit y seleccione un
tipo de ajuste de la lista Type of tit. Puede experimentar con opciones de ajuste para encontrar
la mejor para su gráfica. En este caso se eligió un esquema interpolado, que fuerza la gráfica
a través de todos los puntos, y un polinomio de tercer orden. Los resultados se muestran en la
figura 1 2.22.
·¡"Mé!·IE"
Población
La población de la Tierra se expande rápidamente (véase la figura 12.23), así como la pobla­
ción de Estados Unidos. MATLAB incluye un archivo de datos interno, llamado census, que
contiene datos censales estadounidenses desde 1790. El archivo de datos contiene dos varia­
bles: cdate, que contiene las fechas de censo, y pop, que menciona la población en millones.
Para cargar el archivo en su área de trabajo, escriba
l oad
census
Figura 1 2.23
La población de la Tierra
se expande.
460
Capítulo 12
http://jurgensoft.co.cc
Técnicas numéricas
Use la caja de herramientas de ajuste de curvas para encontrar una ecuación que represente
los datos.
l . Establezca el problema.
Encontrar una ecuación que represente el crecimiento poblacional de Estados Unidos.
2. Describa las entradas y salidas.
Entrada
Tabla de datos de población
Salida
Ecuación que represente los datos
3. Desarrolle un ejemplo a mano.
Grafique los datos a mano.
4. Desarrolle una solución MATLAB .
La caja de herramientas de ajuste de curvas es una utilidad interactiva, que se activa al
escribir
cftool
lo que abre la ventana de ajuste de curvas. Debe tener instalada la caja de herramientas
de ajuste de curva en su copia de MATLAB para que funcione este ejemplo. Seleccione
el botón data y elija cdate como el valor x y pop como el valor y. Después de cerrar la
ventana de datos, seleccione el botón fitting.
.
Puesto que siempre se escucha que la población crece exponencialmente, experi­
mente con las opciones de ajuste exponencial. También se intentó la opción polinomial y se
eligió un polinomio de tercer orden (cúbica). Ambos enfoques produjeron un buen ajuste,
pero el polinomio en realidad fue mejor. Se envió la gráfica de la ventana de ajuste de curva
a una ventana de figura y se le agregaron titulos y etiquetas (véase la figura 12.24).
A partir de los datos en la ventana de ajuste, se vio que la suma de los cuadrados
de los errores (SSE) fue mayor para el ajuste exponencial, pero que ambos enfoques
dieron valores mayores que 0.99. (Un valor de 1 indica un ajuste perfecto.)
Los resultados para el polinomio fueron los siguientes:
R
R
Li near model Pol y3:
pl*xA3 + p2*xA2 + p3*x + p4
f(x)
=
Datos de población de EU
250
V>
<!.l
k
200
�
V
V
�
g
·s 150
k
<!.l
¿
'O
·ü
'" 100
::o
o
Cl..
Figura 1 2.24
Datos censales de Estados
Unidos.
�
7
7
7"
7
7
50
O
l�
l�
�
�OO
l�
l�
Año de censo
�
l�
l�
l�
Sección
Diferencias
http://jurgensoft.co.cc
1 2 .4
y diferenciación numérica
461
where X i s normal i zed by mean 1890 and std 62.05
Coeffi c i ents (wi th 9 5% confi dence bounds) :
p I = 0.921 ( - 0.9743 , 2.816)
p2
25.18 (23 . 57 , 26 . 79)
p3 = 73.86 (70.3 3 , 77 . 39)
p4 = 61.74 ( 59.69 , 6 3 . 8)
Goodness of fi t :
SSE: 149.8
R- square : 0.9988
Adj usted R- square: 0.9986
RMSE: 2 . 968
Los valores
x
usados en la ecuación se normalizaron para un mejor ajuste al restar la
media y dividir por la desviación estándar:
X = (cdate-mean (cdate» fstd (cdate) ;
5. Ponga a prueba la solución.
Compare los ajustes de un vistazo; ambos parecen modelar los datos adecuadamente.
Es importante recordar que sólo porque una solución modele bien los datos rara vez es
apropiado extende! la solución a los datos medidos.
12.4
DIFERENCIAS Y DIFERENCIACi ÓN NUMÉRICA
La derivada de la función y = f(x) es una medida de cómo cambia y con x. Si puede definir una
ecuación que relacione x y y, puede usar las funciones contenidas en la caja de herramientas
simbólica para encontrar una ecuación para la derivada. Sin embargo, si todo lo que tiene son
datos, puede aproximar la derivada al dividir el cambio en y entre el cambio en x:
dy
Ll y
dx
Llx
Y2 - Y1
X2 - Xl
Si se grafican los datos de la sección 1 2 . 1 , que se usaron a lo largo del capítulo, esta
aproximación de la derivada corresponde a la pendiente de cada una de los segmentos de línea
usados para conectar los datos, como se muestra en la figura 1 2.25.
Si, por ejemplo, dichos datos describen la temperatura medida de una cámara de reac­
ción en diferentes puntos en el tiempo, las pendientes denotan la tasa de enfriamiento durante
cada segmento de tiempo. MATLAB tiene una función interna llamada diff que encontrará
la diferencia entre valores de elemento en un vector y los que se pueden usar para calcular la
pendiente de pares ordenados de datos.
Por ejemplo, para encontrar el cambio en los valores x, escriba
del ta_x =di ff (x)
lo cual, dado que los valores x están igualmente espaciados, regresa
1
1
1
De igual modo, la diferencia en los valores y es
del ta_y=di ff (y)
del ta_y
-3
-1
-5
-4
-2
Idea clave: la función
diff se usa tanto con
expresiones simbólicas,
donde encuentra la
derivada, como con
arreglos numéricos.
462
Capítulo 1 2
Técnicas numéricas
http://jurgensoft.co.cc
Datos muestra
16
14
slope =
Yz - Yl
Xz - Xl
--­
12
v' - yo
slope = _
-_
0
X3 - Xz
-
10
;..,
<l.)
¡u
_
_
8
slope =
6
Y4 - Y3
--­
X4 - X3
Figura 1 2.25
4
La derivada de un conjunto
de datos se puede
aproximar al encontrar
la pendiente de una línea
recta que conecta cada
punto de datos.
2
O-1
O
1
2
3
4
5
6
Para encontrar la pendiente, sólo se necesita dividir delta-y entre delta_x:
sl ope=del ta-y . /del ta_x
sl ope
-4
-3
-2
-1
-5
o
sl ope=di ff(y) . /d i ff(x)
sl ope
-4
-5
-3
-2
-1
Note que el vector que regresa cuando usa la función diff es un elemento más corto que el
vector de entrada, porque usted calcula diferencias. Cuando usa la función diff para ayudarse a
calcular pendientes, está calculando la pendiente entre valores de x, no en un valor particular. Si
quiere graficar estas pendientes contra x, probablemente el mejor enfoque es crear una gráfica
de barras, pues las tasas de cambio no son continuas. Los valores x se ajustaron al promedio
para cada segmento de línea:
x=x ( : , 1 : 5 ) +di ff(x)/2 ;
bar (x , sl ope)
En la figura 12.26 se muestra la gráfica de barras resultante.
La función diff también se puede usar para aproximar numéricamente una derivada, si
se conoce la relación entre x y y. Por ejemplo, si
podría crear un conjunto de pares ordenados para cualquier número de valores x. Cuanto más
valores de x y y, más suave será la gráfica. He aquí dos conjuntos de vectores x y y que se
usaron para crear la gráfica de la figura 12.27a:
x=-2: 2
y=x . A2 ;
Sección
Diferencias
http://jurgensoft.co.cc
1 2, 4
y diferenciación numérica
463
Tasa de cambio
-5
-
4.5
-4
¿
l-<
-3.5
::i
�
'""'
C)
c..
-3
8 -2.5
.:l
'"
"='
.9
-2
.I:;
Figura 12.26
E - 1 .5
'"
u
u
"='
'"
w
'"
E-<
-1
-0,5
Tiempo. hora
bi g_x=-2:0 . 1:2 ;
bi g_y=big_x . A 2 ;
pl ot (bi g_x,bi g_y,x,y, ' -O ' )
Ambas líneas en la gráfica s e crearon al conectar los puntos especificados con líneas
rectas; sin embargo, los valores
bilLx y biU están tan cerca que la gráfica parece como una
diff y se graficó en la
curva continua. La pendiente de la gráfica x-y se calculó con la funCÍón
figura 12.27h:
sl ope5=d i ff(y) . /di ff(x) ;
x5=x(:, 1:4)+diff(x) . /2;
%Estos val ores se basaron en un model o de 5 puntos
bar (x 5 , sl ope5)
La gráfica'de barras se modificó ligeramente con el uso de las herramientas de grafieacíón in­
teractivas para dar la representación que se muestra en la figura 1 2 .27b. Se puede obtener una
representación más suave, aunque todavía discontinua, con el uso de más puntos:
x=- 2 : 0 . 5:2 ;
y=x . A2 ;
pl ot (bi g_x,big-y,x,y,'-o')
sl ope9=di ff(y) . /d i ff(x) ;
x9=x ( : , l:8) +di ff(x) . /2 ;
%Estos val ores se basaron en un model o de 9 puntos
bar(x9,sl ope9)
Estos resultados se muestran en las figuras 1 2 ,27c y 1 2 .27d. Incluso se pueden usar más
puntos:
pl ot (bi g_x,bi g_y,'-o')
sl ope41=di ff(big-y) . /di ff(big_x) ;
Las pendientes calculadas
son discontinuas si se
basan en datos. La
apariencia de esta
gráfica se ajustó con
las herramientas de
graficación i nteractivas.
464 Capítulo 12
Técnicas numéricas
http://jurgensoft.co.cc
y=�
Pendiente de y = x2
4
2
3
O
1
-2
2
-1
(a )
2
O
(b)
y=�
Pendiente de y =
4
X2
2
3
O
-2
1
-1
(e)
y
=
2
X
4
2
3
;>.
Figura 1 2.27
La pendiente de
una función es
aproximadamente más
precisa cuando se
usan más puntos para
modelar la función.
O
2
1
(d )
¡fr- 2
O
1
-2
Pendiente de y = x2
Casi una pendiente
continua,
pero no
bastante
-4
-2
-1
Eje x
O
1
2
Eje x
(f)
(e)
x41=big_x( : , l : 40) +di ff(bi g_x) . /2 ; %
4 1- poi nt model
bar (x4 1 , sl ope41)
Este código resulta en una representación casi suave de la pendiente como función de x,
como se ve en las figuras 1 2.27e y 1 2.27f.
Ejercicio d e pr áctica
1 2.4
l . Considere la siguiente ecuación:
2
3
y = x + 2x - x + 3
http://jurgensoft.co.ccSección
Defina un vector x desde -5 hasta +5 y úselo, junto con la función
1 2.5
Integración numérica
465
diff, para
aproximar la derivada de y con respecto a x. La derivada de y con respecto a x,
que se encuentra analíticamente, es
dy
dx
yl
3x2
+
4x
1
-
Evalúe esta función con su vector x previamente definido. ¿Cómo difieren sus
resultados?
2. Repita el problema 1 para las siguientes funciones y sus derivadas:
FtriIeión
Derivada
y = sen(x)
dy
= cos(x)
dx
dy
dx
=
5x4
dx
12. 5
I NTEGRACiÓN NUMÉRICA
Con frecuencia se considera que una integral es el área bajo una curva. Considere de nuevo los
datos muestra, graficados en la figura 1 2.28. El área bajo la curva se puede encontrar al dividir
el área en rectángulos y luego sumar las aportaciones de todos los rectángulos:
n-l
A
=
2: (Xi+1
Xi) (Yí+ 1
;=1
+
y¡)/2
L o s comandos MATLAB para calcular esta área son
aV9_y=y ( 1 : 5 ) +d i ff(y)/2 ¡
sum(di ff(x) . *av9_Y)
Una integral se puede aproximar
por el área bajo una curva
1�-u-------�
Una aproximación por
de trapecio
10
5
Figura 1 2.28
2
4
Eje x
6
6
Eje x
El área bajo una curva se
puede aproximar con la
regla del trapecio.
466
Capítulo 1 2
Técnicas numéricas
http://jurgensoft.co.cc
Estas áreas son iguales
�
Figura 1 2.29
El área de un trapecio se
puede modelar con un
rectángulo.
tienen l a misma área que un
A esto se le llama regla del trapecio, pues los
trapecio dibujado entre elementos adyacentes, como se muestra en la figura 1 2.29.
Se puede aproximar el área baj o una curva definida por una función en lugar de datos
al crear un conjunto de pares ordenados xy. Las
aproximaciones se encuentran con­
forme se aumenta el número de elementos en los vectores x y y. Por ejemplo, para encontrar
el área baj o la función
y
= f(x) = x:
desde O hasta 1, se definiría un vector de valores x y calcularían los correspondientes valores y:
cuadratura: técnica
para estimar el área bajo
una curva con el uso de
rectángulos
x=O : O . l : l ;
y=x . A2 ;
1 2 .30 Y se usan para encontrar el área
Los valores calculados se grafican en l a
bajo la curva:
aV9-y=y ( 1 : 10)+di ff(y) /2 ;
sum (di ff(x) . *av9-Y)
Este resultado proporciona una aproximación del área baj o la función:
ans =
0 . 3350
Evaluación d e datos mediante l a regla del trapecio
•
0.9
0.8
0.7
0.6
>.
.'='. 0.5
u:.;'
004
0.3
0.2
Figura 1 2.30
la integral de una función
se puede estimar con la
regla del trapecio.
0.1
0.1
0.2
0.3
004
0.5
Eje x
0.6
0.7
0.8
0.9
1
http://jurgensoft.co.cc Sección
La respuesta anterior corresponde a una aproximación de la integral desde
x =
1 2 .5
O hasta
x = 1, o
MATLAB incluye dos funciones internas, quad y quadl, que calcularán la integral de
una función sin requerir que el usuario especifique cómo se definen los rectángulos que se
muestran en la figura 1 2.30. Las dos funciones difieren en la técnica numérica que usan. Las
funciones con singularidades se pueden resolver con un enfoque u otro, dependiendo de la
situación. La función quad usa cuadratura Simpson adaptativa:
quad ( ' x . A2 ' , O , 1)
ans
0 . 3333
=
L a función quadl usa cuadratura Lobatto adaptativa:
quadl ( ' x . A2 ' , 0 , 1)
ans
0 . 3333
=
Su g er e nc i a
La función quadl termina con l a letra '1' , n o con el número ' 1 ' . Puede ser difícil
decir la diferencia, dependiendo de la fuente que use.
Ambas funciones requieren que el usuario
una función en el primer campo. Esta
función se puede llamar explícitamente como una cadena carácter, como se muestra, o se
puede definir en un archivo-m o como una función anónima. Los últimos dos campos en la
función definen los límites de integración, en este caso desde O hasta 1 . Ambas técnicas se
dirigen a regresar resultados dentro de un error de 1 X 10-6. Puede encontrar más acerca de
cómo funcionan estas técnicas si consulta un texto de métodos numéricos, como el de Iohn
H. Mathews y Kurtis D. Fink, Numerical Methods Using MATLAB, 4a ed. (Upper Saddle
River, NI: Pearson, 2004).
Eje r c i c i o d e p r á c t i c a
l.
1 2.5
Considere la siguiente ecuación:
Use las funciones quad y quadl para encontrar la integral de y con respecto
a x, evaluada desde -1 hasta
l . Compare sus
resultados con los valores
encontrados al usar la función de caja de herramientas simbólica,
int, y la
siguiente solución analítiea (recuerde que las funciones quad y quadl toman
entrada expresada con operadores arreglo como .* o .", pero que la función
int toma una representación simbólica que no usa estos operadores):
Integración numérica
467
468
Capíiulo 12
Técnicas numéricas
http://jurgensoft.co.cc
(- +
4
x
1
(
4
4
2x
3
x
2
- - + 3x
3
2
�
4
¡ b - a
) + "3 (b
2
3
) lb
a
-a
3
) - "2 (b
1
2
- a2
) + 3 (b - a)
2. Repita el problema 1 para las siguientes funciones:
Función
y
y
y
Integral
sen( x) ¡\en(X) dX cos(x) l� = cos( b ) - cos( a )
=
x5
¡a b(x5 - l)dx = (6x6 - X)I ab = ( b6 - a6
=
=
6
- 1
=
�
�
5x *ex ¡b(5eX)dX (-5eX 5xeX)Ia�
(-5(eb - ea) 5(beb - ae ))
=
+
-
( b - a)
)
=
+
-¡"MAS-iD'
Cálculo de trabaio de frontera móvil
En este ejemplo se usarán las tecnicas de integración numéricas de MATLAB, tanto la función
quad como al función quadl, para encontrar el trabajo producido en un pistón al resolver la
ecuación
w
•
=
J
PdV
con base en la suposición de que
PV = nRT
donde
P
V
n
R
T
=
presión, kPa,
volumen, m3,
número de moles, kmol,
constante universal de gas,
temperatura, K .
8.3 14 kPa m3/kmol K, y
También se supone que e l pistón contiene
nece constante durante el proceso.
l . Establezca el problema.
1
mol d e gas a
300 K Y que l a temperatura perma­
Encontrar el trabajo producido por el pistón que se muestra en la figura 12.31.
http://jurgensoft.co.cc
Sección 12.5
Integración numérica
Figura 1 2.3 1
Dispositivo con pistón.
2. Describa las entradas y salidas.
nT== 300 K
R=
Entrado
1 kmol
8.3 14 kJlkmol K
límites de la integración
3.
Salida
Trabajo realizado por el pistón
Desarrolle un ejemplo a mano.
Al resolver la ley del gas ideal
o
para
P
PV= nRT
P=nRT/V
y realizar la integración se obtiene
W
=
nRT nRT J dV nRT ( V2)
J -ydV
V
VI
In
=
=
Al sustituir los valores.,.se encuentra.que
W
=
1 kmol X 8.314 kJ/kmol K X 300 K X ln
Dado que los límites de integración son
V2
= 5 m3 y
W = 4014 kJ
VI =
(��)
1 m3, el trabajo resultante es
Dado que el trabajo es positivo, se produce por (y no sobre) el sistema.
4. Desarrolle una solución MATLAB.
%Ejempl o 12 . 6
%Cál cul o de t rabajo frontera , con funciones de cuadratura
%MATLAB
cl ear , cl c
469
470
Capítulo 1 2
Técnicas numéricas
http://jurgensoft.co.cc
%Defina constantes
% número de mol es de gas
n=l ;
% constante u n i versal de gas
R=8 . 3 14 ;
T=300 ;
% Temperatura , en K
%Defina una fun c i ón anóni ma para P
P=@(V) n*R*T . /V ;
%Use quad para eval uar l a i ntegral
quad (P , l , S)
%Use quadl para eval uar l a i ntegral
quad( P , l , S)
que regresa los siguientes resultados en la ventana de comandos
ans =
4 . 0l43e+003
ans =
4 . 0143e+003
Note que en esta solución se defmió una función anónima para P. Se podría haber de­
finido fácilmente la función con el uso de una cadena carácter dentro de las funciones
quad y quadl. Sin embargo, en este caso se habría tenido que sustituir las variables con
valores numéricos:
quad ( ' 1* 8 . 3 14* 300 . jV ' , 1 , 5)
ans =
4 . 0143e+003
La función también se pudo haber definido en un archivo-m.
5. Ponga a prueba la solución.
Se comparan los resultados con la solución a mano. Los resultados son iguales. También
ayudan a obtener una solución desde la caja de herramientas simbólica. ¿Por qué se
necesitan ambos tipos de solución MATLAB ? Porque hay algunos problemas que no "
se pueden resolver con las herramientas simbólicas de MATLAB y hay otros (los que
tienen singularidades) que no son adecuados para un enfoque numérico .
•
12. 6
RESOLUCiÓ N NUM É RICA DE ECUACIONES DIFERENCIALES
MATLAB incluye algunas funciones que resuelven numéricamente ecuaciones diferenciales
ordinarias de la forma
dy
dt = ¡(t, y )
Las ecuaciones diferenciales de orden superior (y sistemas de ecuaciones diferenciales) se
deben reformular en un sistema de ecuaciones de primer orden. (La característica help de
MATLAB describe una estrategia para reformular su problema en esta forma.) Esta sección
resalta las principales características de las funciones del solucionador de ecuaciones diferen­
ciales ordinarias. Para más información, consulte la característica help.
No toda ecuación diferencial se puede resolver con la misma técnica, de modo que
MATLAB incluye una gran variedad de solucionadores de ecuaciones diferenciales (tabla
12.6). Sin embargo, todos estos solucionadores tienen el mismo formato. Esto hace fácil in­
tentar diferentes técnicas al sólo cambiar el nombre de función.
Sección 1 2.6 Resolución numérica de ecuaciones diferenciales
http://jurgensoft.co.cc
Tabla 1 2.6 Solucionadores de ecuaciones diferenciales de MATLAB
FUiRlóR"
soIudOIl._
TipO de probleRtas
probGbIemeate
resueltos con esta
Método
de
ode4 5
ecuaciones
diferenciales
no rígidos
Runge-Kulta
Mejor elección paro una
técnico de primero
suposición si no sobe
mucho acerco de lo
función. Uso uno fórmula
explícita Runge-Kulto
(4,5) llamada par
Durmiente-Príncipe
ode2 3
ecuaciones
diferenciales
no rígidas
Runge-Kulta
Esta técnica usa un par
explícito Runge-Kutta
(2,3) de Bogacki y
Shampine. Si la función
es "levemente rígida",
éste puede ser un mejor
enfoque que ode 45
odel13
ecuaciones
diferenciales
no rígidas
Adams
odel S s
ecuación diferencial
rígida y ecuaciones
algebraica
diferenciales
NDFs (BDFs)
Usa fórmulas de diferenciación numérica (NDF) o
fórmulas de diferenciación hacia atrás ( BDF). Es
difícil predecir cuál
técnica funcionará mejor
en una ecuación diferencial rígida
ode2 3 s
ecuaciones diferenciales
rígidas
Rosenbrock
Formulación Rosenbock de
segundo orden modiFicada
ode2 3 t
ecuaciones diferenciales
moderadamente rígidas
y ecuaciones algebraicas
diferenciales
trapezoid
rule
Útil si necesita una solución
sin amortiguamiento
numérico
ode23tb
ecuaciones diferenciales
rígidas
TR-BDF2
Este solucionador usa
una fórmula implícita
Runge-Kulta con la regla
del trapecio (TR) y una
fórmula de diferenciación
hacia atrás de segundo
orden (BDF2)
ode l S i
ecuaciones diferenciales
completamente implícitas
BDF
Este solucionador usa
una fórmula de diferencia hacia atrás (BDF)
para resolver ecuaciones
diferenciales implícitas
de la forma F(y,y',t) O
de ecuadóll
diferencial
oramarÍa
técnica
solución
numérica
COmentonos
A diferencia de ode 45
que con
solucionadores de un solo
paso, esta técnica es un
solucionador multipaso
y ode 23,
=
471
472
http://jurgensoft.co.cc
Capítulo 12 Técnicas numéricas
Cada uno de los solucionadores requiere las siguientes tres entradas como mínimo:
•
Un manipulador de función para una función que describa la ecuación diferencial de primer
orden o sistema de ecuaciones diferenciales en términos de t y y.
Idea clave: MATLAB
incluye una gran familia
•
El lapso de tiempo de interés.
•
Una condición inicial para cada ecuación en el sistema.
Todos los solucionadores regresan un arreglo de valores t y y:
[t , y] = odesol ver(function_handl e,[i n i t i al _t i me ,
fi nal_time], [ i n i t i al _cond_array])
de solucionadores de
ecuaciones diferenciales.
[t,y],
Si no especifica los arreglos resultantes
las funciones crean una gráfica de los
resultados.
1 2.6.1
Entrada de manipulador de función
Un manipulador de función es un "apodo" para una función. El manipulador de función puedc
hacer referencia o a una función MATLAB estándar, almacenada como archivo-m, o a una
función MATLAB anónima.
He aquí un ejemplo de una función anónima para una sola ecuación diferencial simple:
que corresponde a
dy
2t
dt =
�
Aunque esta función particular no usa un valor de y en el resultado (2t), todavía necesita
ser parte de la entrada.
Si quiere especificar un sistema de ecuaciones, probablemente es más fácil definir un
archivo-m dc función. La salida de la función debe ser un vector columna de valores de pri­
mera derivada, como en
function dy=another_fun(t , y)
dy(l)= y ( 2 ) ;
dy(2)= -y( 1) ;
dy= [dy( l) ; dy( 2 ) ];
Esta función representa el sistema
dy
dt = x
dx
di = -y
que también se podría expresar en una notación más compacta como
yi
=
Y2
=
yz
-Yl
donde la prima indica la derivada con respecto al tiempo y las funciones con respecto al tiem­
po son y!' Y2' etcétera. En esta notación, la segunda derivada es igual a y" y la tercera derivada
llI
es y :
y'
dt
Sección
Resolución numérica de ecuaciones diferenciales
http://jurgensoft.co.cc
1 2.6
473
1 2.6.2 Resolución del problema
Tanto el lapso de tiempo de interés como las condiciones iniciales para cada ecuación se
ingresan como vectores en los solucionadores de ecuaciones, junto con el manipulador de
función. Para demostrar, resuelva la ecuación
dy
dt
=
2t
En la sección previa se creó una función anónima para esta ecuación diferencial ordi­
naria y se le llamó
my_fun. Se evaluará y desde -1 hasta 1 y la condición inicial se especifica
como
y (-l)
=
1
Si no sabe cómo se comporta su ecuación o sistema de ecuaciones, su primer intento
debe ser
ode45:
[t , y]=ode45 (my_fun , [- 1 , 1] , 1)
Este comando regresa un arreglo de
t valores y un arreglo correspondiente de y valores.
Puede graficar esto usted mismo o dej ar que la función solver los grafique si no especifica el
arreglo de salida:
ode45 (my_fun , [- 1 , 1] , 1)
Los resultados se muestran en la figura 1 2.32 y son consistentes con la solución analí­
tica, que es
Note que la primera derivada de esta función es 2t y que y
=
l cuando t
=
-1 .
Cuando la función de entrada o sistema de funciones se almacena en un archivo-m, la
sintaxis es ligeramente diferente. El manipulador para un archivo-m existente es @m_nom­
bre_archivo. Para resolver el sistema de ecuaciones descrito en another_fun (de la sección
anterior) se usa el comando
ode4 5 (@another_fun , [- 1 , 1] , [1 , 1] )
Solución a dy/dt
1
=
2*t
0.8
0.6
;..,
0.4
Figura 1 2.32
0.2
-0.5
O
Tiempo
0.5
1
Esta figura se generó
automáticamente con la
función ode45 . El título y
las etiquetas se agregaron
en la forma usual.
474
Capítulo 1 2
http://jurgensoft.co.cc
Técnicas numéricas
Solución a dy/dt
=x
y dx!dt = -y
1. 5 1---..,..----�---___¡::::====¡
Figura 1 2.33
Este sistema de ecuaciones
se resolvió con ode45. El
título, etiquetas y leyenda
se agregaron en la forma
usual.
-1
-0.5
0.5
o
Tiempo
El lapso de tiempo de interés es desde -1 hasta
1 , Y las condiciones iniciales
son ambas l .
Note que existe una condición inicial para cada ecuación en el sistema. Los resultados se
muestran en la figura
12.33 .
•¡'iiiJ.MU.t-----Las tablas de datos son útiles para resumir información téenica. Sin embargo, si necesita u n
valor que no esté incluido e n la tabla, debe aproximar dicho valor con alguna especie d e técni­
ca de interpolación. MATLAB incluye tal técnica, llamada interpl . Esta función requiere tres
entradas: un conjunto de valores x, un correspondiente conjunto de valores y y un conjunto de
valores x para los que le gustaría estimar valores y. La función realiza por defecto una técnica
de interpolaeión lineal, que supone que puede aproximar dichos valores y intermedios como
una función lineal de x; esto es,
y
ax + b
Para cada conjunto de dos puntos de datos se encuentra una funeión lineal diferente, lo
que asegura que la línea que aproxima los datos
La función interpl también
pase a través de los puntos tabulados.
modelar los datos u sando aproximaciones de orden
superior, de las cuales l a más común es la cúbica segmentaría (spline). La técnica de aproxi­
mación se especifica como una cadena carácter en un c uarto c ampo opcional de la función
interpl. Si no se especifica, la función realiza por defecto una interpolación lineal. Un ejem­
plo de la sintaxis es
new-y= i nterpl (tabul ated_x , tabul ated-y . new_x ,
Además de la función interpl , MATLAB
' spl i ne ' )
una función de interpolación bidi-
mensional llamada interp2, una función de interpolación tridimensional l lamada interp3 y
una función de interpolación multidimensional llamada interpn.
Las rutinas de ajuste de curvas son similares a las técnicas de interpolación. Sin em­
bargo, en lugar de conectar puntos de datos, buscan una ecuación que modele los datos tan
precisamente como sea posible. Una vez que tiene una ecuación, puede calcular los corres­
pondientes valores de y. La curva que se modela no necesariamente pasa a través de los puntos
de datos medidos . La función de ajuste de curva de MATLAB se llama polyl'it y modela los
datos como u n polinomio mediante una técnica de
de mínimos cuadrados . La fun­
ción regresa los coeficientes de la ecuación polinomial de la forma
http://jurgensoft.co.cc
Resumen
Estos coeficientes se pueden usar para crear la expresión apropiada en MATLAB, o se
pueden usar como la entrada a la función polyval para calcular valores de y en cualquier valor
de x. Por ejemplo, los siguientes enunciados encuentran los coeficientes de un polinomio de
segundo orden que ajuste la entrada de datos :ry y luego calculan nuevos valores de y, con el
polinomio determinado en el primer enunciado:
coef = pol yfi t (x , y , 2)
y_fi rst_order_fi t = pol yval (coe f , x)
Estas dos líneas de código se podrían recortar a una línea mediante funciones anidadas:
y_fi rst_order_fi t = pol yval (pol yfi t (x , y , l) , x)
MATLAB también incluye una capacidad interactiva de ajuste de curva que permite al
usuario modelar datos no sólo con polinomios, sino con funciones matemáticas más compli­
cadas. Se puede acceder a las herramientas de ajuste de curva básicas desde el menú
Tools en
la ventana de figura. E n la caja de herramientas de ajuste de curvas están disponibles herra­
mientas más extensivas, a las que se accede al escribir
cftool
en la ventana de comando.
Las técnicas numéricas se usan ampliamente en ingeniería para aproximar tanto derivadas como integrales. Las derivadas y las
también se pueden encontrar con la caj a de
herramientas simbólica.
La función
diff de MATLAB encuentra la diferencia entre valores en elementos adya­
centes de un vector. Al usar la función diff con un vector de valores x y un vector de valores y,
se puede aproximar la derivada con el comando
sl ope=di ff(y) . /d i ff(x)
Cuanto más cercanamente espaciados estén los datos
x
y y, más cerca e stará la aproxi­
mación de la derivada.
La integración en MATLAB se
con una de dos funciones de cuadratura:
quadl. Estas funciones requieren que el usuario
quad o
tanto una función como sus límites de
integración. La función se puede representar como una cadena carácter tal como
' x . A2 - l '
o como una función anónima, por ejemplo
my_fu nc t i on = @ (x) x . A2 - l
o como una función archivo-m, como
functi on output= my_m_fi l e (x)
output = x . A2 - l ;
Cualquiera d e las tres técnicas para definir l a función se puede usar como entrada, j unto
con los líllÚtes de integración; por ejemplo,
quad( ' x . A2 - I ' , 1 , 2)
Tanto quad como quadl intentan regresar una respuesta precisa hasta dentro de
1 X 1 O-n.
quad y quadl difieren sólo en la técnica que usan para estimar la integral. La
función quad usa una técnica de cuadratura adaptativa Simpson, y la función quadl usa una
Las funciones
técnica de cuadratura adaptativa Lobatto.
475
http://jurgensoft.co.cc
476 Capítulo 12 Técnicas numéricas
MATLAB incluye una serie de funciones solucionador para ecuaciones diferenciales
ordinarias de primer orden y sistemas de ecuaciones. Todas las funciones solucionador usan
el formato común
[t , y]
odesol ver (mani pul ador_funci ón , [ti empo_i n i c i al ,
t i empo_fi nal ] , [arregl o_cond_i n i c i al ] )
Un buen primer intento usualmente es l a función solucionador ode45, que usa una téc­
nica Runge-Kutta. Se han formulado otras funciones solucionador para ecuaciones diferencia­
les rígidas y formulaciones implícitas.
RES U M E N MATLAB
El siguiente resumen MATLAB menciona y describe brevemente todos los comandos y fun­
ciones que se definieron en este capítulo:
cftool
census
d i ff
abre la interfaz gráfica de usuario de ajuste de curvas
conjunto de datos interno
calcula las diferencias entre valores adyacentes en un arreglo si la entrada es un
encuentra la derivada simbólica si la entrada es una expresión simbólica
i nt
i nterpl
encuentra la
simbólica
aproxima datos intermedios con la técnica de interpolación lineal por defecto
o por un enfoque de orden superior especificado
i nterp2
i nterp3
i nterpn
ode45
ode23
ode1l3
odel S s
ode 2 3 s
ode 2 3 t
ode2 3 tb
ode l S i
pol yfi t
pol yval
quad
quadl
TÉRM I NOS CLAVE
función interpolación bidimensional
función interpolación tridimensional
función interpolación multidimensional
solucionador de ecuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
solucionador de eeuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
solucionador de ecuación diferencial ordinaria
calcula los coeficientes de un polinomio de IIÚnimos cuadrados
evalúa un polinomio en un valor específico de x
calcula la integral bajo una curva (Simpson)
calcula l a integral bajo una curva (Lobatto)
interpolación
aproximación
diferenciación
cuadratura
ecuación cuadrática
interpolación lineal
cuadratura Lobatto
ecuación cúbica
mínimos cuadrados
cuadratura Simpson
cúbica segme ntaría (spli ne)
extrapolación
derivada
interfaz
(GUI)
de usuario
trapezoidal
1 q�l ¡;; 'lUH
lineal
Interpolación
12.1
Considere un gas en un pistón en el que la temperatura se mantiene constante. Confor­
me cambia el volumen del dispositivo, se mide la presión. Los valores de volumen y
presión se reportan en la tabla siguiente:
http://jurgensoft.co.cc
K
2494
[247
2
3
831
4
5
623
499
6
416
(a) U s e interpolación lineal para estimar la presión cuando e l volumen e s 3.8 m3•
(b) Use interpolación cúbica segmentaría (spline) para estimar la presión cuando el
volumen es 3 . 8 m3•
(e)
Use interpolación lineal para estimar el volumen si la presión se mide en 1 000
k:Pa.
(d) Use interpolación cúbica segmentarla (spline) para estimar el volumen si la pre­
sión se mide en 1 000 k:Pa.
12.2
Con los datos del problema 1 2. 1 e interpolación lineal cree una tabla expandida volu­
men-presión con mediciones de volumen cada 0.2 m3• Grafique los valores calculados
en la misma gráfica con los datos medidos. Muestre los datos medidos con círculos y
sin línea, y los valores calculados con una línea sólida.
12.3
12.4
Repita el problema
1 2.2 con la interpolación cúbica segmentarla (spline).
El experimento descrito en el problema 1 2. 1 se repitió a una temperatura más alta y los
datos se registraron en la siguiente tabla:
2
2494
4 1 57
831
623
499
1 386
1039
1 247
3
4
5
6
2078
83 1
693
416
Use estos datos para resolver los siguientes ejercicios:
(a) Aproxime la prcsión cuando el volumen sea 5.2 m3 para ambas temperaturas (300
y 500 K). (Sugerencia: haga un arreglo de presión que contenga ambos conjuntos
de datos; su arreglo volumen necesitará ser 6 X 1 Y su arreglo presión necesitará
ser 6 X 2.) Use interpolación lineal para sus cálculos.
(b) Repita sus cálculos con interpolación cúbica segmentarla (spline).
12.5
Use los datos del problema
1 2.4 para resolver los
siguientes problemas :
K
K T
(a) Cree una nueva columna de valores presión a T = 400 con interpolación lineal.
(b) Cree una tabla expandida volumen-presión con mediciones de volumen cada 0.2 m\
400 Y
500 K.
con columnas correspondientes a T 300 K,
1 2.6
Use la función
T
=
=
interp2 y los datos del problema 12.4 para aproximar un valor de pre­
K.
sión cuando el volumen sea 5.2 m3 y la temperatura 425
Ajuste de curvas
12.7
1 2. 1 con polinomios de primero, segundo, tercero y
polyfit:
Ajuste los datos del problema
cuarto orden, con la funeión
•
Grafique sus resultados en la misma gráfica.
•
Grafique los datos reales como círculo sin línea.
Problemas
477
478
Capítulo 1 2 Técnicas numéricas
http://jurgensoft.co.cc
•
Calcule los valores para graficar a partir de sus resultados de regresión polinomial a
•
No muestre los valores calculados en la gráfica. pero conecte los puntos con líneas
intervalos de 0.2 m3•
sólidas.
•
12.8
¿Cuál modelo parece hacer el mejor trabajo?
La relación entre presión y volumen usualmente no se modela mediante un polinomio.
Más bien se relacionan inversamente uno con otro mediante la ley del gas ideal,
nRT
p
V
Esta relación se puede graficar como una línea recta si se grafica
P en el ej e y y IIV
en e l eje x. Entonces la pendiente se convierte en los valores de nRT. Se puede usar la
función
polyfit para encontrar esta pendiente s i se ingresa P y l / V a la función:
pol yfi t (l . jV . P , l)
(a) Si supone que el valor de n es 1 mol y el valor de R es 8.3 1 4 k.Pa/kmol K, muestre
que la temperatura que se usa en el experimento es de heeho 300 K.
(b) Cree una gráfica con l/V en el ej e x y P en el eje y.
12.9
Resisteneia y corriente son inversamente proporcionales una a otra en circuitos eléc­
tricos :
V
I
R
Considere los siguientes datos recopilados de un circuito eléctrico al que se aplicó un
voltaj e constante desconocido (figura P 1 2.9):
Resistencia, obms
Corriente medida, amps
JO
1 1 .1 1
15
8 .04
25
6.03
40
2.77
65
1 .97
1 00
1 .5 1
•
Figura P 1 2.9
(a)
(b)
Circuito eléctrico.
(e)
Grafique resistencia (R) en el eje
x
y corriente medida (1) e n el ej e y.
Cree otra gráfica con l /R en e l eje x e 1 en el eje y.
Use
polyfit para c alcular los coeficientes de l a línea recta que se muestra en su
gráfica en la parte (b). La pendiente de su línea corresponde al voltaje aplicado.
(d)
Use
polyval para encontrar valores calculados de corriente (1) con base en los
resistores usados. Grafique sus resultados en una nueva figura, junto con los da­
tos medidos.
12.10
Muchos procesos físicos se pueden modelar mediante una ecuación exponencial. Por
ej emplo, las tasas de reacción química dependen de una constante de tasa de reacción
que es función de la temperatura y la energía de activac ión:
k- koe
-QiKf
En esta ecuación,
constante universal de gas, 8.3 1 4 kJ/kmol
R
Q
=
energía de activación, en kJ/kmol,
K,
http://jurgensoft.co.cc
T
temperatura, en
=
ko
K, y
constante cuyas unidades dependen de características de la reacción. Una
posibilidad es
S I.
Un enfoque para encontrar los valores de ka y Q a partir de datos experimentales es
graficar el logaritmo natural de k en el ej e y y liT en el ej e x. Esto debe resultar en una
línea recta con pendiente -Q/R e intercepta ln(ko ); esto es,
ln(k) = ln(ko )
pues la ecuación ahora tiene la forma
y = ax + b
con y = ln(k), x = liT, a
-Q/R y b = ln(k).
Ahora considere los siguientes datos:
k, s'o,!
T, K
X
200
1 .46
400
0.001 2
600
0,0244
800
0. 1 099
1 000
027 1 0
1 0-7
(a) Grafique los datos con liT en el eje x y ¡n(k) en el ej e y.
(b) Use la función polyfit para encontrar la pendiente de su gráfica. -Q/R, y la inter­
(e)
sección, ln(ko) '
Calcule el valor de Q.
(d) Calcule el valor de ko'
12.11 La potencia eléctrica con frecuencia se modela como
P = PR
donde
P
1
R
potencia, en watts,
corriente, en amps, y
resistencia, en ohms.
(a) Considere los siguientes datos y encuentre el valor del resistor en el circuito al
modelar los datos como un polinomio de segundo orden con la función polyfit:
Corriente, amps
50,000
1 00
200,000
200
450,000
300
800,000
400
1 ,250,000
500
Problemas
479
480
Capítulo 12 Técnicos numéricos
http://jurgensoft.co.cc
(b) Grafique los datos y use las herramientas de ajuste de curvas que se encuentran en
l a ventana de figura para determinar el valor de R al modelar los datos como un
polinomio de segundo orden.
12.12 Usar un polinomio para modelar una función puede ser muy útil, pero siempre es pe­
ligroso extrapolar más allá de sus datos. Se puede demostrar este equívoco al modelar
una onda seno como un polinomio de tercer orden.
(a) Defina x=-1:0.1:1;.
(b) Calcule y=sen(x).
(e) Use la función polyfit para determinar los coeficientes de un polinomio de tercer
orden para modelar estos datos.
(d) Use la función polyval para calcular nuevos valores de y (modeled-y) con base
en su polinomio, para su vector x desde -1 hasta l .
(e) Grafique ambos conjuntos de valores en l a misma gráfica. ¿Qué tan bien ajustan?
(l) Cree un nuevo vector x, new_x=-4:0.1:4;.
(g) Calcule valores new-Y al encontrar sin(new_x).
(h) Extrapole valores new_modeled-y con polyfit, el vector coeficiente que encontró
en l a parte (c) para modelar x y y entre 1 y 1, Y los valores new-y.
(i) Grafique los dos nuevos conjuntos de valores en la misma gráfica. ¿Qué tan bueno
-
es el ajuste afuera de l a región de -1 a l ?
Aproximación de derivadas
12.13 Considere la siguiente ecuación:
y
=
12X3
-
5x2 + 3
(a) Defina un vector x desde -5 hasta +5 y úselo junto con la función diff para aproxi­
mar la derivada de y con respecto a x.
(b) Analíticamente, se encuentra que la derivada de y con respecto a x es
dy
�
dx
•
=
y
'
=
36x2
lOx
Evalúe esta función con su vector x anteriormente definido. ¿Cómo difieren sus resul­
tados?
12.14 Un uso muy común de las derivadas es para determinar velocidades. Considere los datos
siguientes, tomados durante un viaje en automóvil desde Salt Lake City hasta Denver:
o
2
o
60
1 10
3
1 70
4
220
5
270
6
330
7
390
8
460
(a) Encuentre la velocidad promedio en mph durante cada hora del viaje.
(b) Grafique estas velocidades en una gráfica ,de barras. Edite la gráfica de modo que
cada barra cubra 100% de la distancia entre entradas.
http://jurgensoft.co.cc
12.15
Considere los siguientes datos, tomados durante un viaje en automóvil desde Salt Lake
Cíty hasta Los Ángeles:
o
O
l .0
75
2.2
145
2.9
225
4.0
300
5.2
380
6.0
430
6.9
510
8.0
580
8.7
635
9.7
700
10
(a)
(b)
(e)
720
Encuentre la velocidad promedio en mph durante cada segmento del viaje.
Grafique estas velocidades contra el tiempo inicial para cada segmento.
Use el comando
find
para determinar si algunas de las velocidades promedio ex­
ceden el límite de rapidez de 75 mph.
(d)
12.16
¿El promedio global está por arrib a del límite de rapidez?
Considere los siguientes datos del lanzamiento de un cohete de tres etapas:
Altitud. metros
O
1 .00
O
1 07.37
2.00
2 10.00
3.00
307.63
4.00
400.00
5.00
484.60
6.00
550.00
7.00
583.97
8.00
580.00
9.00
549.53
1 0.00
570.00
1 1 .00
699. 1 8
1 2.00
850.00
1 3.00
927.5 1
1 4.00
950.00
1 5 .00
954.51
1 6.00
940.00
1 7.00
9 1 0.68
1 8.00
930.00
1 9.00
1 04 1 .52
20.00
1 150.00
2 1 .00
1 1 58.24
22.00
1 100.00
2 3.00
1 041 .76
24.00
1 050.00
Problemas 481
482
Capítulo 1 2 Técnicas numéricas
http://jurgensoft.co.cc
(a) Cree una gráfica con tíempo en el eje x y altitud en el
y.
(b) Use la función diff para determinar la velocidad durante cada intervalo de tiempo
y grafique la veloeidad contra el tíempo de partida para cada intervalo.
(e) Use de nuevo la función
diff para determinar la aceleración para cada intervalo de
tiempo y grafique la aceleración contra el tiempo de partida para cada intervalo.
(d) Estime los tiempos de las etapas (el tiempo cuando una etapa quemada se descarta
y la siguiente etapa se enciende) al examinar las gráficas que creó.
Integración numérica
12.17 Considere l a siguiente ecuación
y
=
5 x3
+
-
3
quad y quadl para encontrar la integral con respecto a x, evalua­
1. Compare sus resultados con los valores que encontró con el uso de l a
función d e la caja de herramientas simbólicas, int, y la siguiente solución analítica
(recuerde que las funciones quad y quadl toman entrada expresada con operadores
arreglo como .* y .", pero que la función int toma una representación simbólica que
Use las funciones
da de -1 a
no usa estos operadores):
12.18 La ecuación
Cp
= a
+
bT
+
cT2
+
dT3
es un polinomio empírico que describe el comportamiento de la capacidad calorífica
Cp como función de la temperatura en grados K. El cambio en entalpía (una medida de
energía) conforme un gas se caliente desde TI hasta
con respecto a T:
Ah
=
7; es la integral de esta ecuación
lT2
T¡
Cp dT
Encuentre el cambio en entalpía del oxígeno gaseoso conforme se calienta desde 300 K
hasta
1000 K, con las
funciones c uadratura de MATLAB. Los valores de
a,
b,
e
y
d
para el oxígeno son los siguientes:
a =
b
=
e =
d
=
25.48
1.520 X 10-2
-0.7155 X 10-5
1.312 X 10-9
12.19 En algunos problemas de muestra de este capítulo, se exploraron las ecuaciones que
describen trabaj o de frontera móvil producido por un pistón. Una ecuación similar des­
cribe el trabaj o producido conforme un gas o un líquido fluyen a través de una bomba,
turbina o compresor (figura P12. l 9). En este caso, no hay frontera móvil, sino que hay
trabaj o de eje, dado por
http://jurgensoft.co.cc
¡
salida
entrada
Problemas 483
VdP
Esta ecuación se puede integrar si se puede encontrar una relación entre
gases ideales, dicha relación cs
hRT
V y P.
Para
Turbina
de gas
P
Si el proceso es isotérmico, la ecuación para trabajo se convierte en
- hRT
¡
salida
entrada
dP
P
donde
ñ
R
T
P
ni
tasa de flujo molar, en kmolls,
constante universal de gas, 8.3 1 4 kJlkmol K,
=
temperatura, en K,
presión, en k:Pa, y
potencia, en kW.
Encuentre la potencia producida en una turbina de gas isotérmica si
n
R
T
Pentrada
P,.lid' =
0 . 1 kmoJJs,
constante universal de gas, 8 . 3 1 4 k:J/kmol K,
400 K,
500 k:Pa,
100 k:Pa.
y
Figura P 1 2. 1 9
Turbina de gas usada para
producir potencia.
http://jurgensoft.co.cc
http://jurgensoft.co.cc
Gráficos avanzados
INTRODUCCiÓN
usadas comúnmente en ingeniería son el caballo de batalla de
Algunas de las
polares y las gráficas de superficie, así como algunas téenila gráfica x-y, las
cas de graficación usadas con más frecuencia en aplicaciones de negocios, como las
gráficas de pastel, las gráficas de barras y los histogramas. MATLAB permite al usua­
rio un significativo control sobre la apariencia de estas gráficas, así como manipular
imágenes (como fotografías digitales) y crear representaciones tridimensionales (ade­
más de gráficas de superficie) tanto de datos como de modelos de procesos físicos.
13.1
IMAGENES
La exploración de algunas de las capacidades gráficas más avanzadas de MATLAB
comienza con el examen de cómo se manipulan las imágenes con las funciones image
e imagesc. Puesto que MATLAB ya es un progranla de manipulación de matrices,
tiene sentido que las imágenes se almacenen como matrices.
Se puede crear una gráfica de superficie tridimensional de la función peaks al
escribir
surf(peaks)
Se puede manipular la figura que se creó (figura 13.1) al usar las herramientas
interactivas de manipulación de figura, de modo que se vea hacia abajo desde la parte
superior (figura 13.2).
Una forma más sencilla de lograr el mismo objetivo es usar la gráfica de seu­
docolor:
pcolor(peaks)
También se pueden remover las líneas de retícula, que se grafican automática­
mente, al especificar la opción shading (sombreado):
shading flat
Los colores de las figuras de la 1 3.1 a la 13.3 corresponden a los valores de z.
Los valores positivos grandes de z son rojos (si observa los resultados en la pantalla y
no en este libro que, desde luego. es negro y blanco), y los valores negativos grandes
486
Capítulo 13
Gráficos avanzados
http://jurgensoft.co.cc
Función de muestra-Peaks
10
5
N
o
-5
Figura 13.1
La función peaks se
construye en MATlAB para
usar en demostración de
capacidades gróficas.
Se agregaron el título y
las etiquetas de eje.
-10
60
60
o
Eje y
O
x
son azules. El valor de 2 que se encuentra en el primer elemento matricial, 2(1,1), se representa
en la esquina inferior izquierda de la gráfica. (Véase la figura
l3.3, derecha.)
Aunque esta estrategia para representar datos tiene sentido debido al sistema coordena­
do que se usa comúnmente en graficación, no tiene sentido para representar imágenes como
las fotografías. Cuando las imágenes se almacenan en matrices, usualmente se representan
los datos con inicio en la esquina superior izquierda de la imagen y se trabaja a través y hacia
abajo (figura 13.4, izquierda). En MATLAB, existen dos funciones que se usan para desplegar
imágenes: image e imagesc, que usan este formato. La función imagen escalada (imagesc)
usa todo el mapa de colores para representar los datos, tal como la función gráfica seudocolor
(pcolor). Los resultados que se obtienen con
imagesc(peaks)
se muestran a la derecha en la figura 13.4.
O
10
Función de muestra-Peaks
20
30
40
30
20
Figura 13.2
Una vista de la gráfica
de superficie la función
peaks viendo hacia a bajo
por el eje z.
.
10
http://jurgensoft.co.cc
Sección 13.1
Imágenes 481
Gráfica seudocolor-Peaks
45
40
z(m,l)
z(m,2)
z(m.3)
...
z(m,n)
35
...
...
oo •
...
oo.
..
...
...
. ..
...
..
...
...
...
...
'-z(3,1 )
z(3,2)
z(3,3)
...
z(3,n)
z(2,1)
z(2,2)
z(2,3)
...
z(2,n)
z(1.1)
z(1,2)
z(1.3)
...
z(l,n)
��
30
>.
'"
�
>.
"
25
ilJ'
20
15
10
5
20
10
30
40
Eje x
Figura 13.3
Una gráfica en seudocolor (izquierda) es lo mismo que ver justo hacia a bajo una gráfica de
superficie. Las gráficas de seudocolor organizan los datos sobre la base de la regla de la mano
derecha, portiendo en la posición (010) en la gráfica (derecha).
Gráfica de imagen escalada·Peaks
5
•
z(l,l )
z(1.2)
...
...
,� ..
...
>.
Q)
...
z(1.n)
...
...
...
...
...
...
15
>.
20
Q)
..
...
...
...
...
�r-r...
...
...
...
...
...
...
.. ,
...
...
z(mJ)
z(m,2)
z(m,3)
...
z(m.n)
ilJ'
10
ilJ' 25
30
35
Eje
x
40
45
10
20
30
Eje x
Figura 13.4
Lo función peaks representada con lo función imagesc. Izquierdo: los imágenes usualmente
se representan partiendo de lo esquino superior izquierdo y se trabaja o través y hacia abajo,
lo forma en que se lee un libro. Derecho: lo gráfica pcolor y lo gráfico imagesc son imágenes
espejo verticales una de otra.
40
488
Capítulo 13
Gráficos avanzados
http://jurgensoft.co.cc
Note q ue la imagen se voltea en comparación c o n l a
de seudocolor. De sde
no importa cómo se representan los datos, en tanto se
l uego , cn m uchas a plicaciones
compre nda la c o nvención usada. Sin embargo, una fotografía q ue e stuviera boca abajo e n una
imagen e spejo vertical, obviame nte no sería una re pre sentació n aceptable.
13.1.1 Tipos de imagen
MATLAB reconoce tres diferentes téc nicas p ara almacenar y repre sentar imágenes:
Imágenes de i ntensidad (o escala de g rises)
Imágenes indexadas
Imáge ne s RGB (o color verdade ro)
Idea clave: existen
Imágenes de intensidad
dos funciones q ue se usan
P ara c rear la representació n de la función peaks se usó una imagen de intensidad (fig ura 13.4)
para desplegar imágenes:
c o n la func ió n imagen e scala da (imagesc). E n e ste e nfoq ue , los colores en la imagen se de­
imagesc e ¡mage.
terminan mediante un mapa de color. Lo s valores almacenados e n la matriz de imagen e stá n
e scalados, y los valores e stán correlacionado s con un mapa conocido. (El mapa de colo r jet e s
por defecto.) Este e nfoque funciona b ie n c uando e l parámetro q ue se despliega no se corre ­
laciona con un color real. Por ejemplo, la func ió n peaks con frec ue nc ia se compara c o n un
rango de montaña y valle, ¿pe ro q ué elevación es el color ro jo ? E s una elección arbitraria c o n
base parcialmente e n e sté tica, pero tambié n se pueden usar mapas d e color p ara me jorar l a s
c aracte rísticas de interés e n la imagen.
Conside re este ejemplo: las imágenes en rayos X tradicionalmente se produjeron me­
diante la e xposición de pelíc ula fotográfica a radiac ió n de rayos X. La mayoría de los rayos X
de la actualidad se procesan como imágene s digitales y se almacenan en un arc hivo de datos, no
hay película i nvolucrada. Se puede manipular dicha película como se desee, pues la intensidad
de la radiación de rayos X no corresponde a un color particul ar.
MATLAB incluye un arehivo de muestra que es una fotog rafía digital de rayos X de una
columna ve rtebral, adecuada para usarse c o n la func ión imagen escalada. P rimero necesitará
carg ar el arc hivo :
load spine
El a rchivo c argado incluye algunas matrices (véase la ventana del área de trabajo ), la
matriz intensidad se llama X. Por tanto,
imagesc(X)
•
produce una imagen cuyos colores se determinan mediante el colormap ac tual , q ue por de­
fec to es jet. Se reg re sa una re prese ntación q ue se parece más a uno s rayo s X tradicionales si
se usa el colo rmap bone:
colormap(bone)
Esta imagen se muest ra e n la figura
13.5.
El archivo spine también i ncluye un colormap personalizado (custom), q ue resulta ser
el colormap bone. Este arreglo se llama map. Los mapas de colores personalizados no son
necesarios para desplegar imágenes de intensidad, y
colormap(map)
resulta en la misma imagen q ue se creó anterio rme nte .
Aunq ue es co nveniente pensar en los dato s de imagen como en una matriz, tales datos
no necesariame nte se almacenan de dicha forma en los formatos gráficos e stándar. MATLAB
incl uye una función, imfi nfo, q ue leerá archivos
e stánd ar y de terminará qué tipo de
http://jurgensoft.co.cc
Sección 13.1
Imágenes 489
50
100
150
200
250
Figura 13.5
300
350
100
200
300
400
Royos X digitales
desplegados con el uso de
la función ¡magesc y el
colormap bone.
datos contiene el a rchivo. Co nsidere el archivo m imas. jpg, que se descargó de Internet desde
el website de la NASA (www. satum. jpl.nasa . gov) . El comando
imfinfo( 'mimas.jpg ')
reg resa la siguie nte información (asegúrese de menc io na r el nombre del a rchivo entre apóst ro­
fes, esto es, corno una cadena; además, note que la imagen es 'grayscale', otro térm ino para
una imagen de intensidad):
ans =
Idea clave: e l
Filename: 'mimas. jpg '
FileModDate: '06-Aug-2005 08:52:18 '
FileSize: 23459
Format: 'jpg '
FormatVersion:
Width: 500
Height: 525
BitDepth: 8
ColorType: 'grayscale '
FormatSignature: ..
NumberOfSamples: 1
CodingMethod: 'Huffman '
CodingProcess: 'Sequential '
Comment: { 'Created with The GIMP '}
n
Para c rear una matriz MATLAB a partir de este a rchivo. se usa la función de lectura de
imagen imread y se asignan los resultados a un nombre d c variable, corno X:
X=imread( 'mimas.jpg ')¡
E ntonces se p uede g raficar la imagen con la funció n imagesc y el colormap gray:
imagesc(X)
colormap{gray)
Los resultados se muestran en la figura 13 .6a.
e squema d e color para
una image n se controla
mediante el mapa de
color.
490
Capítulo 1 3
Gráficos avanzados
http://jurgensoft.co.cc
(a) Imagesc con mapa gray
(b) Image con mapa gray
50
50
100
100
150
150
200
200
250
250
300
300
350
350
400
400
450
450
500
500
100
200
300
400
500
100
200
300
400
500
Figura 13.6
(a) Imagen de Mimas, una luna de Soturno, desplegada mediante lo función imagen escalada, ¡magese, y un mapa
de color gray. lb) Imagen desplegada con lo función imagen indexada, ¡mage, y un mapa de color gray.
Función imagen indexada
Cuando el color es importante, una técnica para crear una imagen se llama imagen indexada.
En lugar de ser una lista de valores de intensidad, la matriz es una lista de colores. La imagen
se crea en forma muy parecida a una pintura de "colorear por número". Cada elemento contie­
ne un número que corresponde a un color. Los colores se mencionan en una matriz separada
llamada colormap, que es una matriz 11 X 3 que define n diferentes colores al identiticar los
componentes rojo, verde y azul de cada color. Para cada imagen se puede crear un colormap
personalizado, o se podría usar un colormap interno.
Considere la imagen de muestra interna de un mandril, obtenido con
load mandrill
•
El archivo incluye una matriz indexada llamada X y un mapa de color llamado map.
(Verifique la ventana del área de trabajo para confirmar que se cargaron dichos archivos; los
nombres se usan comúnmente para
guardadas desde un programa MATLAB.) La
función image se usa para desplegar imágenes indexadas:
image(X)
colormap(map)
Las imágenes MATLAB se ajustan para llenar la ventana de figura, de modo que la
imagen puede parecer distorsionada. Se puede forzar el despliegue del aspecto correcto con el
uso del comando axis:
axis image
Los resultados se muestran en la figura 13.7.
Las funciones image e imagesc son similares, aunque pueden producir resultados muy
diferentes. La imagen de Mimas en la figura 13.6b se produjo mediante la funeión image en
lugar de la más apropiada función imagesc. El mapa de color gray no corresponde a los colo­
res almacenados en la imagen de intensidad; el resultado es la imagen deslavada y carente de
http://jurgensoft.co.cc
Imagen de mandril-Colormap j et
Sección 13.1
Imágenes
491
Imagen de mandril-Colormap custom
50
50
100
100
150
150
200
200
250
250
Figura 13.7
300
300
350
350
400
400
450
450
Izquierda: imagen
de mandril antes de
aplicar el mapa de color
personalizado. Derecha:
imagen de mandril
con el mapa de color
personalizado.
200
100
300
400
100
500
200
300
400
500
contraste. Es importante reconocer qué tipo de archivo despliega, de modo que pueda hacer la
elección óptima de cómo representar la imagen.
Los archivos almacenados en el formato gráfico GIF con frecuencia se almacenan corno
imágenes indexadas. Esto puede no ser aparente cuando usa la función imfinfo para determi­
nar los parámetros del archivo. Por ejemplo, la imagen en la figura 13.8 es parte de los clips
art incluidos eon Microsoft Word. La imagen se copió en el directorio actual y se usó imfinfo
para determinar el tipo de archivo:
imfinfo ( 'drawing.gif')
ans
=
lx4 struct array with fields:
Filename
FileModDate
FileSize
Format
etc.
Los resultados no dicen mucho, pero si hace doble dic en el nombre del archivo en el
directorio actual, se lanza el Asistente de Importación -Import Wizard- (figura 13.9) y su­
Figura 13.8
giere que se creen dos matrices: cdata y colormap. La matriz cdata es una matriz de imagen
Clip art almacenado en e l
formato d e archivo GIE
indexada, y colormap es el mapa de color correspondiente. En realidad, el nombre sugerido
variable selected tor
Figura 13.9
Renombre a un nombre
diferente como map
<8@ck
]
El Asistente de Importación
se usa para crear una
matriz de imagen indexada
y un mapa de color a
partir de un archivo GIE
492
Capítulo 1 3
Gráficos avanzados
http://jurgensoft.co.cc
colormap es más bien extraño, porque si se le usa, reemplazará la función colormap. Necesi­
tará renombrar esta matriz a algo diferente, como map, con el siguiente código:
image(cdata)
colormap(map)
axis image
axis off
.....
Sugerencia
Existen algunas imágenes de muestra internas en MATLAB y almacenadas como
imágenes indexadas. Puede acceder a estos archivos escribiendo
load
<nombre de imagen>
Las imágenes disponibles son
flujet
durer
detail
mandril1
clown
spine
cape
earth
gatlin
Cada uno de estos archivos de imagen crea una matriz de valores índices llamada
X y un mapa de color llamado map. Por ejemplo, para ver la
de la Tierra,
escriba
load earth
image(X)
colormap(map)
También necesitará ajustar la tasa de aspecto del despliegue y remover el eje con los
comandos
axis image
axis off
•
Imágenes en color verdadero (RGB)
RGB: los colores
La tercera técnica para almacenar datos de
primarios de la luz son
Recuerde que una matriz tridimensional consta de filas, columnas y páginas. Los archivos de
rojo, verde y azul
imagen de color verdadero constan de tres páginas, una por cada intensidad de color, rojo,
verde o azul, como se muestra en la figura 13.10.
Figura 13.10
Las imágenes en color
verdadero usan un arreglo
multidimensional para
representar en color de
codo elemento.
es en una matriz tridimensional,
m
X
n
X 3.
http://jurgensoft.co.cc
Sección 13.1
Imágenes
493
Considere un archivo llamado airplanes.jpg. Puede copiar éste o un archivo similar
(una imagen jpg coloreada) en su directorio actual para experimentar con imágenes de color
verdadero. Puede usar la función imtinfo para determinar cómo el archivo airplanes almacena
la imagen:
i mfi nfo('a i rpl anes.jpg')
ans =
Fi l ename: 'ai rpl anes.jpg'
F i l eModDate: '12-Sep-2005 17:51:48'
F i l eSize: 206397
Forrnat: 'jpg'
FormatVersion:
Wi dth: 1800
Hei ght: 1200
B i tDepth: 24
Col orType: 'truecol or'
FormatSi gnature: "
NumberOfSarnpl es: 3
Codi ngMethod: 'Huffman'
Codi ngProcess: 'Sequential'
Cornrnent: {}
JI
Note que el tipo de color es 'truecolor' y que el número de muestras es
3, lo que indica
una página por cada intensidad de color.
Puede cargar la imagen con la función imread y desplegarla con la función image:
X=i rnread('ai rpl anes.jpg' )¡
i mage(X)
axi s i mage
axi s off
Note en la ventana del área de trabajo que X es una matriz 1200 X 1800 X
3,
una pági­
na por cada color. No necesita cargar un mapa de color, porque la información de intensidad
de color se incluye en la matriz (figura
13.11).
Figura 13.11
Imagen de color verdadero
de aviones. Toda la
información de color se
a lmacena en una matriz
tridimensional. (Imagen
usada con permiso del
Dr. G. Jimmy Chen, Solt
lake Community College,
Departamento de Ciencias
de lo Computación.)
494
Capítulo 13
Gráficos avanzados
http://jurgensoft.co.cc
Coniuntos Mandelbrot y Julia
Benoit Mandelbrot (figura 13.12) es en gran medida responsable del actual interés en la geo­
metría fractal. Su trabajo se construye en tomo a los conceptos desarrollados por el matemá­
tico francés Gastan Julia en su artículo
Mémoire sur l'iteration des fonctions rationelles,
de
] 919. Los avances en la obra de Julia tuvieron que esperar el desarrollo de las computadoras,
y particularmente de las gráficas por computadora. En la década de
1970,
Mandelbrot, en­
tonces en IBM, revisó y profundizó en la obra de Julia y, de hecho, desarrolló algunos de
los primeros programas de gráficos por computadora para desplegar los complicados y bellos
patrones fractales que hoy llevan su nombre.
La imagen Mandelbrot se crea al considerar cada punto en el plano complejo, x + yi. Se
hace z(O) =x +
yi Y luego se itera de acuerdo con la siguiente estrategia:
z(O)
Figura 13. 12
Benoit Mandelbrot.
+ yi
= x
Z(0)2
+
z(O)
+
z(O)
=
z(1)2
Z(2)2
+
z(O)
=
z(n - 1)2
z(l)
=
z(2)
=
z(3)
z(n)
+
z(O)
La serie parece converger o evitar el infinito_ El conjunto Mandelbrot está compuesto
de los puntos que convergen. Las hermosas imágenes que probablemente usted ha visto fue­
ron creadas al contar cuántas iteraciones fueron necesarias para que el valor de
superara cierto valor umbral, con frecuencia la raíz cuadrada de
5.
z
en un punto
Se supone, aunque no se
ha podido probar, que si dicho umbral se alcanza, la serie continuará para divergir y eventual­
mente tender al infinito.
1. Establezca el problema.
Escribir un programa MATLAB para desplegar el conjunto Mandelbrot.
2. Describa las entradas y salidas.
Entrada
Se sabe que el conjunto Mandelbrot se encuentra en alguna parte del plano
complejo y que
-1.5
-1.5
t·
$ x $
$
Y
$
1.0
1.5
También se sabe que se puede describir cada punto en el plano complejo como
z
3.
= x
+ yi
Desarrolle un ejemplo a mano.
Trabaje las primeras iteraciones para un punto que se espera converja, como (x =-0.5,
y=O):
z(O-)
=
0.5
z(l)
=
z(O?
+
z(O)
=
(-0.5? - 0.5
z(2)
=
z(l?
+
z(O)
=
(-0.25)2 - 0.5
z(3)
=
z(2f
+
z(O)
=
z(4)
=
Z(3)2
+
z(O)
=
+ Di
=
0.25 - 0.5
=
(-0.4375)2 - 0.5
(-.3086f
+
0.5
=
0.0625 - 0.5
=
=
-0.25
=
0.1914 - 0.5
0.0952 - 0.5
-.4375
=
=
-.3086
-.4048
'
http://jurgensoft.co.cc
Sección 13.1
Imágenes 495
Parece como que esta secuencia converge a un punto en torno a -004. (Como ejercicio,
podría crear un programa MATLAB para calcular los primeros 20 términos de la serie
y graficarlos.)
4. Desarrolle una solución MATLAB.
%Ejemplo 13.1
Imagen Mandelbrot
clear, clc
iterations=80;
grid_size = 500;
[x,y]=meshgrid(linspace(-1.5,1.0,grid_size),linspace
(-1.5,1.5,grid_size));
c = x+i*y;
% establezca la matriz inicial a O
z=zeros(size(x));
% cree un mapa de todos los puntos
map=zeros(size(x));
% retícula igual a O
for k=l:iterations
z=z. "2 +c;
%Determine cuáles elementos
a=find(abs(z»sqrt(5));
exceden sqrt(5)
map(a)=k;
end
figure(1)
%Cree una imagen
image(map)
colormap(jet)
La imagen producida se muestra en la figura 13.13.
5. Ponga a prueba la solución.
Se sabe que todos los elementos en la región coloreada sólida de la imagen (azul oscuro
si observa la imagen en una pantalla de computadora) estarán por abajo de la raíz cuadra­
da de 5. Una forma alternativa de examinar los resultados es crear una imagen con base
en dichos valores en lugar del número de iteraciones necesarias para superar el umbral.
Necesitará multiplicar cada valor por un múltiplo común con la finalidad de lograr algu­
na variación de color. (De otro modo los valores estarán muy cercanos unos de otros.) El
código MATLAB es el que sigue:
figure(2)
multiplier=100;
map=abs(z)*multiplier;
image(map)
100
200
Figura 13. 13
300
400
500
100
200
300
400
500
Imagen Mandelbrot. la
figura se creó al determinar
cuántas iteraciones se
requirieron para que
los valores de elemento
calculados superaran la
raíz cuadrada de 5.
496
Capítulo 13
Gráficos avanzados
http://jurgensoft.co.cc
100
200
Figura 13. 14
Imagen basado en el
conjunto Mandelbrot, que
muestra cómo varían los
miembros del conjunto.
La estructura realmente
interesante está en la
frontera del conjunto.
300
400
500
100
200
300
400
500
Los resultados se muestran en la figura 13.14.
Ahora que se creó una imagen de todo ef conjunto Mandelbrot, sería interesante
observar más de cerca algunas de las estructuras en la frontera. Al agregar las siguientes
líneas de código al programa se .puede acercar repetidamente
á
cualquier punto en la
imagen:
cont=l;
while(cont==l)
figure(l)
disp( 'Ahora acérquese')
disp('Mueva el cursor a la esquina superior izquierda
del área que quiere expandir')
[yl,xl]=ginput(l);
disp( 'Mueva a la esquina inferior derecha del área que
quiere expandir')
[y2,x2]=ginput(1)j
xxl=x(round(xl),round(yl»j
yyl=y(round(xl),round(yl»j·
xx2=x(round(x2),round(y2»;
yy2=y(round(x2),round(y2»;
%%
[x,y]=meshgrid(linspace(xxl,xx2,grid_size),linspace(yyl,
yy2,grid_size»j
c = x+i*y;
z=zeros(size(x»;
map=zeros(size(x»;
for k=l:iterations
z=z.A2 +Cj
a=find(abs(z»sqrt(5»j
map(a)=k;
end
image(map)
colormap(jet)
http://jurgensoft.co.cc
Sección 13.1
again = menu( '¿Quiere acercarse de nuevo? ', 'Sí ', 'No ');
switch again
case 1
cont=l;
case 2
cont=O;
end
end
La figura 13.15 muestra algunas de las imágenes creadas al recalcular con áreas
cada vez más pequeñas.
Puede experimentar tanto con la función
image como con imagesc y observar
cómo difieren las imágenes. Intente también algunos mapas de color diferentes.
100
200
300
.'���'
"
\¿,.,,,
:'· � �"" t: ",
'i;..
<'�
..
400
�.¡w��.�
::�'­
-�
100
200
300
400
500
500 '----:-': �-"'-:-":-:---'-:-':'::'
1
200
30
100
200
200
300
300
400
400
500
100
200
300
400
500
500
Figura 13. 15
Imágenes creadas al acercarse sobre el coniunto Mandelbrot desde un programa MATlAB.
""""'---J
"
Imágenes
497
498 Capítulo 13 Gráficos avanzados
1 3. 1 .2
http://jurgensoft.co.cc
Lectura y escritura de archivos de imagen
Se introdujeron funciones para leer archivos de imagen conforme se exploraron las tres técni­
cas de almacenamiento de información de imagen. MATLAB también incluye funciones para
escribir imágenes creadas por el usuario en cualquiera de varios formatos. En esta sección se
explorarán con más detalle estas funciones de lectura y escritura.
l.ectura
ele información ele imagen
Probablemente la forma más sencilla de leer información de imagen en MATLAB es sacar
ventaja del Asistente de Importación interactivo. En la ventana del directorio actual, si.mple­
mente haga doble clie en el nombre de archivo de la i.magen a importar. MATLAB sugerirá
nombres de variable adecuados y pondrá las matrices a disposición para una observación pre­
via en la ventana de edición (figura l3.9).
El problema con la importación interactiva de cualquier dato es que usted no puede in­
cluir las instrucciones en un programa MATLAB; para ello, necesita usar una de las funciones
de importación. Para la mayoría de los formatos estándar de imagen, como jpg o tif, la técnica
apropiada es la función imread descrita en la sección anterior. Si el archivo es un archivo .mat
o uno .dat, la forma más sencilla de importar los datos es usar la función load:
Para archivos .mat, ni siquiera necesita incluir la extensión .mat. Sin embargo, necesi­
tará incluir la extensión para un archivo .dat:
l oad <nombre_de_archivo.dat>
Ésta es la técnica que se usó para cargar los archivos de imagen internos descritos ante­
riormente. Por ejemplo,
l oad cape
importa la matriz de imagen y el mapa de color en el directorio actual, y entonces se pueden
usar los comandos
i .age{X)
col or.ap{Ap)
l oad cape
i .age{X)
colo r.ap{.ap)
axi s i .age
axi s off
para crear la imagen, que se muestra en la figura
Figura 13.16
Imagen creada al cargar
un archivo interno.
13.16.
http://jurgensoft.co.cc
Sección 13.1
Imágenes 499
Almacenamiento de información de imagen
Puede guardar una imagen que haya creado en MATLAB de la misma fonna en que guarda
cualquier figura. Seleccione
File -¡. Save As...
y elij a el tipo de archivo y la ubicación donde le gustaría guardar la imagen. Por ejemplo , para
guardar la imagen del conjunto Mandelbrot creada e n el ejemplo 13.1 y que se muestra en la
figura 1 3 . 1 3 , tal vez quiera especificar un metarchivo me jorado (.emf), como se muestra
cn
la figura 13.17.
También podría guardar el archivo al usar l a función imwrite. Esta función acepta algu­
nas entradas diferentes , dependiendo del tipo de datos que le gustaría a lmacenar.
Por e jemplo, si tiene un arreglo de intensidad (escala de grises) o un arreglo color ver­
dadero (RGB), la función ¡mwrite espera entrada de la fo nna
imwrite(arrayname,'filename.format ')
donde
arrayname es el nombre del arreglo MATLAB en el que se almacenan los datos ,
filename es el nomb re que quiere usar para a lmacenar los datos, y
format es la extensión del a rchivo, como jpg o tit'.
Por tanto, para almacenar una imagen RGB en
un
archivo jpg l lamado flowers , el comando
se na
imwrite{X, 'flowers.jpg ')
(Consulte los archivos help p ara una lista de fo nnatos gráficos soportados por MATLAB . )
S i tiene una imagen indexada (una imagen con un mapa de color personalizado), nece­
sitará almacenar tanto el arreglo como el mapa de color:
imwrite{arrayname, colormap_name,'filename.format ')
Figura 13.17
Esto imagen de un conjunto
Mandelbrot se guardará
como un metarchivo
mejorado.
500 Capítulo
13
Gróficos avanzados
http://jurgensoft.co.cc
En el caso del conjunto Mandelbrot, se necesitaría guardar el arreglo y el mapa de color
usado para seleccionar los colores en la imagen:
i mwri te(map , jet, 'my_mandel brot.jpg ')
13.2
hanclle: apodo
MAN IPULACiÓN DE GRÁFICOS
Un handle es un apodo dado a un objeto en MATLAB. Una descripción completa de los siste­
mas gráficos usados en MATLAB resulta complicada y está más allá del ámbito de este texto.
(Para más detalles, remítase al tutorial help de MATLAB.) Sin embargo, se dará una breve
introducción a los gráficos handle y luego se ilustrarán algunos de sus usos.
MATLAB usa un sistema jerárquico para crear gráficos (figura 13.18). El objeto básico
de graficación es la figura. La figura puede contener varios objetos diferentes, incluido un con­
junto de ejes. Piense en los ejes como puestos en capas en lo alto de la ventana de figura. Los
ejes también pueden contener algunos objetos diferentes, incluida una gráfica como la que se
muestra en al figura 13.19. De nuevo, considere a la gráfica como en capas arriba de los ejes.
Cuando usa una función plot, desde la ventana de comandos o desde un programa en
archivo-m, MATLAB automáticamente crea una figura y un eje adecuado y luego dibuja la
gráfica sobre el eje. MATLAB usa valores por defecto para muchas de las propiedades del ob­
jeto graficado. Por ejemplo, la primera línea dibujada siempre es azul a menos que el usuario
lo cambie específicamente.
Figura 13.18
MATLAB usa un sistema
jerárquico para organizar
información de graficación,
como se muestra en esta
representación del menú
help de MATLAB.
Figura 13.19
Anatomía de una gráfica. Izquierda: las ventanos de figuras se usan paro muchas cosas, incluidas
interfaces gráficas de usuario y gráficas. Para crear una gráfica necesita una ventano de figura.
Centro: antes de poder dibujar una gráfico en esta ventana de figuro, necesitará un conjunto de
ejes poro dibujar sobre e llos. Derecho: una vez que sepo dónde están los ejes y cuáles son los
propiedades de los ejes (como el espaciamiento), puede dibujar el gráfico.
Sección
http://jurgensoft.co.cc
13.2
13.2.1 Handles de gráficas
Asignar un nombre a una gráfica (llamado handle) le permite pedir fácilmente a MATLAB
una lista de las propiedades del objeto graficado. Por ejemplo, cree la gráfica simple que se
muestra en la figura 13.19 y asígnele un hand1e:
x=1:10j
y=x.*1.5¡
h=plot (x,y)
La variable h es .el handle de la gráfica. (Se podría haber escogido cualquier nombre de
variable.) Abora se puede usar la función get para preguntar a MATLAB las propiedades
de la gráfica:
get (h)
La función regresa una lista completa de las propiedades que representan la línea que se
dibujó en el eje, las cuales fueron colocadas en la ventana de figura:
Col or: [O O 1]
EraseMode: 'normal '
LineStyl e: '-'
Li neWidth: 0.5000
Marker: 'none'
MarkerSize: 6
MarkerEdgeCol or: 'auto'
MarkerFaceCol or: 'none'
XData: [ 1 2 3 4 5 6 7 8 9 10]
YData: [ 1.5000 3 4.5000 6 7.5000 9 10.5000 12 13.5000 15]
ZData: [lxO doubl e]
Note que la propiedad color se menciona como [O O 1]. Los colores se describen como
intensidades de cada uno de los colores primarios de luz: rojo, verde y azuL El arreglo [O O 1]
dice que no hay rojo, no hay verde y es 100% azul.
13.2.2 Handles de figura
También se puede especificar un nombre handle para la ventana de figuras. Dado que esta
gráfica se dibujó en la ventana de figura llamada figure 1, el comando sería
f_handl e=figure(l)
Usar el comando get regresa resultados similares:
get (f_handl e)
Al phamap = [ (1 by 64) doubl e array]
on
BackingStore
Cl oseRequestFcn = cl osereq
Col or = [0.8 0.8 0.8]
[ (64 by 3) doubl e array]
Col ormap
CurrentAxes = [ 150.026]
CurrentCharacter
Cur rentObject = []
Cur rentPo i nt
[240 245]
DockControl s = on
=
=
=
Manipulación de gráf icos
501
502 Capítulo
13
Gráficos avanzados
http://jurgensoft.co.cc
Doubl eBuffer
on
[ (1 by 96) char array]
F i l eName
=
=
Note que las propiedades son diferentes de las anteriores. En particular el color (que es
el color de fondo de la ventana) es [0.8, 0.8, 0.8], que especifica intensidades iguales de rojo,
verde y azul, lo que, desde luego, resulta en un fondo blanco.
Si no se especificó un nombre handle, se puedc pedir a MATLAB que determine la
figura actual con el comando gef (get current figure: obtener figura actual),
get (gcf)
que da los mismos resultados.
1 3.2.3
Handles de ejes
Así como se puede asignar un handle a la ventana de figura y la gráfica misma, se puede asig­
nar un handle al eje mediante la función gea (get current axis: obtener eje actual):
Usar este handle con el comando get le permite ver las propiedades del eje:
get (h_ax i s )
outerposi ti on
Acti vePosi t i onProperty
[0.1 10]
Ali m
Ali mMode
auto
Ambi entLightCol or
[1 1 1]
off
Box
CameraPosi t ion
[-1625.28 -2179.06 34.641]
auto
CameraPosi ti onMode
CameraTarget
[201 201 O]
=
=
=
=
=
=
=
=
1 3.2.4 Anotación de ejes
Además de los tres componentes descritos en las secciones anteriores, otra capa transparente
se agrega a la gráfica. Esta capa se usa para insertar objetos de anotación, como líneas, leyen­
das y recuadros de texto, en la figura.
1 3.2.5
Uso de handles para manipular gráficos
Entonces, ¿qué se puede hacer con toda esta información? Se puede usar la función set para cam­
biar las propiedades del objeto. La función set requiere el handle de objeto en el primer campo
de entrada y luego cadenas alternadas que especifiquen un nombre de propiedad, seguidos por un
nuevo valor. Por ejemplo,
set(h , 'col or', 'red')
le dice a MATLAB que vaya a la gráfica llamada h (no la figura, sino el dibujo real) y cambie
el color a rojo. Si quiere cambiar alguna de las propiedades de la figura, puede hacerlo de
esta forma con el nombre handle de figura o con la función gcf. Por ejemplo, para cambiar el
nombre de la figura 1, use el comando
http://jurgensoft.co.cc
Sección 13.3 Animación
set (f_handl e , 'name' , 'My Graph')
o
set (gcf , 'name'. 'My Graph')
Puede lograr interactivamente lo mismo al seleccionar View de la barra de menú figura
y elegir el editor de propiedad:
View -+ Property Editor
Puede acceder a todas las propiedades si elige Property Inspector desde la ventana des­
plegable del editor de propiedad (figura 13.20). Explorar la ventana del inspector de propie­
dad es una buena forma de encontrar cuáles propiedades están disponibles para cada objeto
de gráficos.
13.3
AN I MACiÓN
Existen dos técnicas para crear una animación en MATLAB:
volver a dibujar y borrar
crear una película
En cada caso se usan gráficos han die para crear la animación.
13.3.1 Volver a dibujar y borrar
Para crear una animación mediante volver a dibujar y borrar, primero cree una gráfica y luego
ajuste las propiedades de la gráfica cada vez mediante un bucle. Considere el siguiente
plo: puede definir un conjunto de parábolas con la ecuación
Bu"
closereq
�e:,,:�;,,:;;1
o
,33311
B on
E)ort
C'I,DQtuments ano S:ettlng'
Figura 13.20
Edición interactiva de
propiedades.
503
504
Capítulo 1 3
Gráficos avanzados
http://jurgensoft.co.cc
Cada valor de k define u na pa rábola difere nte . Podría rep resentar los datos con u na
fica tridimensional; si n embargo, otro e nfoque sería c rear u na animació n cn la que se dibuje
u na serie de g ráficas , cada u na con un valor difere nte de k. el código para c rear dicha anima­
ción es el siguiente:
clear,clc,clf
x=-10:0.01:10¡
% Defina los valores x
k=-l¡
% Establezca un valor inicial de k
y=k*x.A2-2;
% Calcule el primer conjunto de valores y
h=plot(x,y)¡
% Cree la figura y asigne
% un handle a la gráfica
grid on
%set(h, 'EraseMode ', 'xor ')
% La animación corre más rápido
% si activa esta línea
axis([-10,10, -100,100])
% Especifique los ejes
while k<1
% Comience un bucle
k=k + 0.01;
% Incremente k
y=k*x.A2-2;
% Recalcule y
set(h, 'XData ',x, 'YOata ',y)
% Reasigne los valores
% x y y usados en la gráfica
drawnow
% Vuelva a dibujar la gráfica ahora - no espere
% hasta que el programa termine de correr
end
E n este ejemplo se usaron
handle p ara volver a dibujar la g ráfica cada vez me-
diante el bucle, en lugar de c rear una nueva ventana de figura cada vez que pasa por el bucle.
Además, se usaron los objetos XData y YData de la g ráfica. Estos objetos asignan los puntos
de datos a g raficar. Usar la función set le
especificar nuevos valores de x y y y c rear
u na gráfi ca difere nte cada vez que se l lama la función drawnow. E nla figu ra l 3 .21 se muestra una
selección de los m arcos c reados por el p rograma y usados en la animación.
En el p rograma, note la línea
%set(h, 'EraseMode ', 'xor ')
Si activa esta l ínea al remover el ope rador comentario
•
la g ráfica cada vez que se vuelve a dibujar l a
(%),
el p rograma no borra toda
Sólo cambian los pixeles que cambian
color. Esto hace que la animación corra más rápido, u na c a racterística que es impo rtante cuan­
do la gráfica es más complicada que la simple p arábola usada en este ejemplo .
Remítase al tutoríal help p ara u na a nimació n de muestra que mo dela movimiento b rownia no.
13.3.2 Películas
A ni mar la película de u na l ínea no es computacio nalmente i ntenso y es fácil obtener un mo­
vi miento suave y agradable. Considere este código que p roduce animación de g ráfica de su ­
perficie más complicada:
clear,clc
x=O:pi/lOO:4*pi;
y= x ;
[X,Y]=meshgrid(x,y);
http://jurgensoft.co.cc
100
100
50
50
O
O
� 50
�50
�100
�1O
O
10
�100
�1O
100
100
50
50
O
O
- 50
-50
�100
�10
O
10
�100
�10
100
100
50
50
O
O
�50
� 50
�100
�1O
O
10
�100
�10
Sección 13.3 Animación
O
10
O
10
Figura 13.2 1
O
10
z=3*sin(X)+ cos(Y);
h=surf(z);
axis tight
set(gca, 'nextplot', 'replacechildren');
%Diga al programa que sustituya la superficie cada vez,
mas no el eje
shading interp
colormap(jet)
for k=O:pi/lOO:2*pi
z=(sin(X) + cos(Y)).*sin(k);
set(h,'Zdata',z)
drawnow
end
En la figura
13.22
se presenta un cuadro de muestra de esta animación.
S i tiene una computadora rápida, la animación parecerá suave. S in embargo, en una
computadora más lenta puede ver movimiento espasmódico y pausas mientras el programa
crea cada nueva gráfica. Para evitar este problema, puede crear un programa que capture cada
"cuadro " y luego, una vez que todos los cálculos están hechos , reproduc ir los cuadros como
una película.
clear,clc
x=O:pi/lOO:4*pi;
y= x;
[X,Y]=meshgrid(x,y);
z=3*sin(X)+ cos(Y);
h=surf(z);
La animación funciona
al volver a dibujar la
gráfica varias veces.
505
506 Capítulo
13
http://jurgensoft.co.cc
Gráficos avanzados
4
2
O
Figura 13.22
La animación de esta
figura se mueve arriba
y abajo en movimiento
similar.
-
2
.,..
-4
400
axi s ti ght
set (gca , 'nextpl ot' , 'repl acechi l d ren')j
shad i ng i nterp
col ormap (jet)
m=l;
for k=O:pi /lOO:2*pi
z=(s i n (X) + cos (Y) ).*s i n (k) j
set (h , 'Zdata' , z)
%Crea y guarda cada cuadro
M (m) =getframej
%de l a pel ícul a
m=m+lj
end
%Reproduce l a pel ícul a dos veces
movi e(M , 2)
Idea clave: las
Cuando corre este programa. en realidad verá la película cuatro veces: una vez cuando
películas registran
se crea. una vez cuando se carga en el "reproductor de películas" y las dos veces especificadas
una animación para
en la función movie. Una ventaja de este enfoque es que puede reproducir la película de nuevo
reproducción posterior.
sin volver a hacer los cálculos, pues la información se almacena (en el ejemplo) en el arreglo
llamado M. Note en la ventana del área de trabajo -Workspace- (figura 13.23) que M es un
arreglo estructura moderadamente grande (-90
ME).
$
�)
�
e
"" '"
"'
�!§.
Workspace
Eile !;.dit �ew §rapnics DeQ.ug Qesktop �ndow tielp
Class
<1 x201 struel>
Figura 13.23
Las películas se guardan
en un arreglo estructura,
como el arreglo M que se
muestra en esta Figura.
sl ru et
<401x401 double>
401x401
<401x401 double>
401 x401
151
1:>:1
8
double
6.2832
111
8
double
202
1x1
8
double
., .LI_
... >'I,.Alul
_1 _
.1. I ....
•
, ,., ,
double
double
'¡'-¡ÍlÍl
http://jurgensoft.co.cc
Sección 13.3
Animación
507
.,,,Mue-·,.
Una película Mandelbrot
L os cál cul os que se requieren para crear una imagen Mandelbrot neces itan s ignifi cativos re­
curs os computaciones y pue den tardar varios minutos. S i qu iere acercarse en un punto de la
imagen Man delbrot , una ele cción lógica es hacer l os cál cul os y crear una pel ícula, que se
puede ver más tarde. En este ejemplo, comience con el programa en archivo-m MATLAB
des crito p or primera vez en el ejemplo 1 3 . 1 y cree una pel ícula de 100 cua dros.
1. Estable zca el problema.
Cree uná pel ícula me diante acercamiento en un conjunto Mandelbrot.
2. Describa las entradas y salidas.
Entrada
La imagen Mandelbrot completa descrita en el ejempl o 13.1
Salida
Una película de
i 00
cuadros
3. Desarrolle un ejempl o a man o.
Un ejempl o a mano n o tiene sentido para este problema, pero l o que se puede hacer es
crear un programa con un pequeño número de iteraciones y elementos para p robar la
s olu ción y luego usarlo para crear una secuen cia más detallada que sea computacional­
mente más intensa. He aqu í el primer programa:
%Ejemplo 13.2
Imagen Mandelbrot
% la primera parte de este programa es la misma que la del
ejemplo 13.1
clear, clc
% limite el número de iteraciones en
iterations=20;
% este primer paso
% Use una pequeña retícula para hacer
grid_size = SO;
% que el programa corra más rápido
X=linspace(-1.5,1.0,grid_size);
Y=linspace(-1.5,1.5,grid_size);
[x,y]=meshgrid(X,Y);
c = x+i"'y;
z=zeros(size(x));
map=zeros(size(x));
for k=l:iterations
z=z. A2 +c;
a=find(abs(z»sqrt(5));
map(a)=k;
end
figure(l)
h=imagesc(map)
%% Nueva sección de código
N(l)=getframe;
%Obtenga el primer cuadro de la película
disp('Ahora acérquese')
disp('Mueva el cursor a un punto donde le gustaría acercarse')
%Seleccione el punto para acercarse
[y1,x1J=ginput(l)
xx1=x(round(x1),round(y1))
yy1=y(round(x1),round(y1))
%%
for k=2:100 %Calcule y despliegue las nuevas imágenes
.
k
%Envíe el número de iteración a la ventana de comandos
508
Capítulo 13
Gráficos avanzados
http://jurgensoft.co.cc
[x,y]=meshgrid(linspace(xxl-ljl.lAk,xxl+ljl.lAk,grid_size),...
1inspace(yYl-ljl.lAk,yyl+ljl.lAk,grid_size));
c = x+i*y;
z=zeros(size(x));
map=zeros(size(x));
for j=l:iterations
z=z. A2 +c¡
a=find(abs(z»sqrt(5))¡
map(a)=j;
end
% Recupere los datos de imagen desde
set(h,'CData',map)
% el mapa de variables
colormap(jet)
% Capture el cuadro actual
N(k)=getframe¡
end
% Reproduzca la película dos veces
movie(N,2)
Esta versión del programa corre más rápidamente y regresa imágenes de baja resolu­
ción (figura 13.24) lo que demuestra que el programa funciona.
4. Desarrolle una solución MATLAB.
La versión final del programa se crea al cambiar sólo dos lineas de código:
% Aumente el número de iteraciones
% Use una gran retícula para ver más
detalle
iterations=80;
grid_size = 500¡
Esta versión "completa" del programa toma aproximadamente media hora para correr
en un procesador Pentium de 2.0 GHz con 1.0 GB de RAM. Los cuadros seleccionados
se muestran en la figura 13.25. Desde luego, el tiempo que tarde en su computadora será
mayor o menor, dependiendo de los recursos de su sistema. Un ciclo de la película crea­
da por el programa se reproduce en aproximadamente 10 segundos.
5. Ponga a prueba la solu�ión.
Pruebe el programa varias veces y observe las imágenes creadas cuando se acerca a di­
ferentes porciones del conjunto Mandelbrot. Puede experimentar con creciente número
de iteraciones para crear la imagen y con el mapa de colores.
Figura 13.24
Imagen Mandelbrot de
baja resolución.
10
20
30
40
50
Sección
http://jurgensoft.co.cc
1 3 .4
100
200
100
200
300
400
Otras técnicas de visualización
509
500
100
200
300
400
500
Figura 13.25
200
300
400
500
13.4
400
100
300
400
500
500
1 00
200
300
400
500
OTRAS TÉCNICAS DE VISUALIZACiÓN
13.4.1 Transparencia
Cuando se representan superficies en MATLAB, se usa un esquema de coloración opaco. Este
enfoque es estupendo para muc has superficies, pero puede oscurecer detalles de otras . Tome,
por ejemplo, esta serie de comandos que crean dos esferas, una dentro de la otra:
clear , clc , clf
% Limpie la ventana de comandos y la
% ventana de figura actual
n = 20;
% Defina la superficie de una esfera,
% mediante coordenadas polares
Theta = linspace(-pi,pi,n) ;
Phi = linspace(-pi/2,pi/2 , n);
[theta,phi]=meshgrid(Theta,Phi) :
% Traduzca al sistema
X = cos (phi).*cos (theta);
% coordenado xyz
y = cos (phi).*sin(theta);
Z
sin(phi) :
Esta serie de imágenes
Mandelbrot es una
selección de los cuadros
capturados para crear una
película con el programa
de este ejemplo. Cada
película será distinta, pues
se acerca en diferentes
puntos de la imagen.
S 10
Capítulo 1 3
http://jurgensoft.co.cc
Gráficos avanzados
surf�X, Y, Z)
%Cree una gráfica de superfi c i e de una esfera
%de radio 1
axi s square
axi s ( [-2, 2, -2, 2, -2, 2] )
hol d on
pause
surf(2*X , 2*Y, 2*Z)
pause
al pha(O.5)
%Especi fi que el tamaño de eje
%Pause el programa
%Agregue una segunda esfera de radio 2
%Pause el programa
%Establ ezca ni vel de transparenci a
L a esfera interior está oculta por l a esfera exterior hasta que s e emite el comando de
transparencia,
al pha(O.5)
que establece el nivel de transparencia. Un valor de 1 corresponde a opaco y O a completamen­
te transparente. Los resultados se muestran en la figura 13.26.
La transparencia se puede agregar a superficies, imágenes y objetos parche.
1 3.4.2
Líneas ocultas
Cuando se crean gráficas de malla, cualquier parte de la superficie que esté oscurecida no se
dibuja. Por lo general, esto hace que la gráfica sea más sencilla de interpretar. Las dos esferas
que se muestran en la figura 13.27 se crearon con el uso de las coordenadas X, Y Y Z calcu­
ladas en la seeción anterior. Aquí están los comandos MATLAB:
f i gure(3)
subpl ot (l, 2, 1)
lIIe sh(X , Y, Z)
axi s square
subpl ot (l, 2, 2)
2
. . .
.:
, "
.
'
:
.
. , '
" ,
o
Figura 13.26
Agregar transparencia a
una gráfica de superficie
posibilita ver detalles ocultos.
�2 . '
2
2
�2
Figura 13.27
Izquierdo: las gráficas de
malla no muestran líneas
de molla que se oscurecerían
por una figura sólida.
Derecha: el comando
hidden oH fuerza a l
programa a dibujar las
líneas ocultas.
o
-- 1
1
,
Sección
Introducción a visualización de volumen
http://jurgensoft.co.cc
1 3.5
5 11
mesh(X , Y , Z)
axi s square
hi dden off
El valor por defecto para el comando hidden es on, que produce gráficas de malla en
las que las l íneas oscuras se ocultan automáticamente, como se muestra a la izquierda de la
figura 13.27. Emitir el comando hidden off da los resultados que se muestran a la derecha de
la figura 13.27.
13.4.3
Iluminación
Idea clave: la función
MATLAB incluye extensas técnicas para manipular la iluminación que se usa para represen­
tar gráficas de superficie. La posición de la luz virtual se puede cambiar e incluso manipular
durante animaciones. La barra de herramientas figura incluye iconos que le permiten ajustar
interactivamente la iluminación, de modo que puede obtener justo el efecto que quiera. Sin
embargo, la mayoría de las gráficas realmente necesitan que la iluminación sólo se apague o
encienda, lo que se logra con la función camlight. (Por defecto es apagado.) La figura 13.28
muestra los resultados que se logran cuando camlight se enciende sobre una esfera simple. El
código a usar es
carnlight le permite
ajustar la iluminación de
la figura.
Sphere
caml ight
La posición por defecto para la luz es arriba y a la derecha de la "cámara". Las opciones
incluyen las siguientes:
camlight right
camlight left
camlight headlight
camlight(azimuth,elevation)
camlight('infinite')
13. 5
arriba y a la derecha de la cámara (por defecto)
arriba y a la izquierda de la cámara
colocada sobre la cámara
usted determina la posición de la luz
modela una fuente de luz ubicada en el infinito (como
el Sol)
I NTRODUCCiÓN A VISUALIZACiÓN DE VOLUMEN
MATLAB incluye algunas técnicas de visualización que le permiten analizar datos recopila­
dos en tres dimensiones, como la rapidez del viento medida en varias ubicaciones y elevacio-
(h)
(a) Iluminación por defecto
Camlight encendida
1
0.5
0.5
o
O
-0.5
-0.5
-1
1
1
Figura 13.28
-1
1
-1 -1
{a} La iluminación por
defecto es d ifusa .
lb} Cuando se emite el
comando camlight,
se modela un reflector,
ubicado en la posición
de la cámara.
http://jurgensoft.co.cc
5 1 2 Capitulo 13 Gróficos avanzados
nes. También le permite visualizar los resultados de los cálculos realizados con tres variables,
como y
=
j{x, y, z). Estas
técnicas de visualización caen en dos categorías :
visualización de volumen de datos escalares (donde los datos recopilados o calculados son
•
un solo valor en cada punto, como la temperatura).
visualización de volumen de datos vectoriales (donde los datos recopilados o calculados
•
son un vector, como la velocidad).
1 3.5.1
Visualización de volumen de datos escalares
Para trabaj ar con datos escalares en tres dimensiones necesita cuatro arreglos tridimensio­
nales:
•
datos
•
datos Y, un arreglo tridimensional que contenga la coordenada y de cada punto de retícula.
•
datos Z, un arreglo tridimensional que contenga la coordenada z de cada punto de retícula.
•
un arreglo tridimensional que contenga la coordenada x de cada punto de retícula.
valores escalares asociados con cada punto de retícula, por ejemplo, una temperatura o
presión.
Los arreglos x, y y z usualmente se crean con la función meshgrid. Por ejemplo, puede
tener
x = 1:3;
y = [2 , 4 , 6 . 8] ;
z = [lO , 20] ;
[X , Y , Z] = meshgri d (x , y , z) ¡
Los cálculos producen tres arreglos que son 4 X 3 X 2 Y definen la ubicación de cada
punto de retícula. El cuarto arreglo requerido es del mismo tamaño y contiene los datos medi­
dos o los valores calculados. MATLAB incluye muchos archivos de datos internos que contie­
nen este tipo de datos, por ejemplo
•
datos MRI (almacenados en un archivo llamado MRI).
•
datos de campo de flujo (calculados desde un archivo-m).
La función help contiene numerosos ejemplos de enfoques de visualización que usan
estos datos. Las gráficas que se muestran en la figura 13.29 son una rebanada de contorno de
los datos MRI y una isosuperficie de los datos de flujo, ambas creadas al seguir los ejemplos
en el tutorial help.
Para encontrar estos ejemplos, vaya a la tabla de contenidos del menú de ayuda. B aj o
el encabezado MATLAB, encuentre visualización 3-D y luego técnicas d e visualización de
volumen. Cuando las dos figuras que se muestran se crearon en MATLAB 7.04 para este libro,
fue necesario limpiar la figura
(elO cada vez antes
de representar las imágenes, un detalle no
anotado en el tutoria!. Cuando no se usó el comando elf, las gráficas se comportaron como
Figura 13.29
MATLAS induye técnicas
de visualización usadas
con datos tridimensionales.
Izquierda: rebanada de
contorno de datos MRI,
a partir del archivo de
datos de muestra incluido
con MATLAS. Derecha:
isosuperficie de datos de
Aujo, a partir del archivo-m
de muestra incluido en
MATLAB.
20
40
2
60
O
80
-2
100
2
120
20
40
60
80 100 120
Sección
Introducción a visua lización de volumen
http://jurgensoft.co.cc
1 3 .5
5 13
si estuviera activado el comando hold on. Ésta es una idiosincrasia que se puede corregir en
versiones posteriores.
1 3.5.2 Visualización de volumen de datos vectoriales
Para desplegar datos vectoriales necesita seis arreglos tridimensionales:
•
•
tres arreglos para definir las posiciones x, y y z de cada punto de retícula.
tres arreglos para definir los datos vectoriales u , v y w.
Un conjunto de muestra de datos de volumen vectoriales llamado wind se incluye en
MATLAB como archivo de datos. El comando
l oad wi nd
envía seis arreglos tridimensionales al área de trabajo. La visualización de este tipo de datos se
puede lograr con varias técnicas diferentes, como son
•
•
•
gráficas de conos.
líneas de corriente.
gráficas de rotacional.
De manera alternativa, los datos vectoriales se pueden procesar en datos escalares, y se pue­
den usar las técnicas utilizadas en la sección anterior. Por ejemplo, las velocidades no son sólo
rapideces; son rapideces más información de dirección. Por tanto, las velocidades son datos
vectoriales, con componentes (llamados u, v y w, respectivamente) en las direcciones x, y y z.
Se podría convertÍr velocidades a rapideces con la fórmula
velocidad: rapidez más
información de dirección
Los datos de rapidez se podrían representar como una o más rebanadas de contorno o
como isosuperficies (entre otras técnicas). La imagen izquierda de la figura l3.30 es la gráfica
contourslice de la rapidez en el conjunto de datos a la octava elevación (z), producido por
contoursl i ce (x , y , z , speed , [ J , [ ] , 8)
y la imagen derecha es un conj unto de rebanadas de contorno. La gráfica se ajustó interactiva­
mente de modo que pudieran ver las cuatro rebanadas.
contoursl ice(x , y , z , speed , [ J , [ ] , [1 , 5 , 10 , 1 5 ] )
Una gráfica de conos de los mismos datos probablemente sea más reveladora. Siga el
ej emplo que se usa en la descripción de la función coneplot, en el tutorial help, para crear la
gráfica de conos que se muestra en la figura 13.3 1 .
60
50
15
40
10
30
S
Figura 13.30
20
10
60
80
100
120
140
ISO
O
Reba nadas de contorno
de los datos de ra pidez de
viento que se incluyen con
el programa MArLAB.
5 14 Capítulo 1 3 Gráficos avanzados
http://jurgensoft.co.cc
Figura 13.3 1
Gráfica d e conos d e los
dotas de velocidad de
viento incluidos con el
programa MATlAB.
MATLAB reconoce tres diferentes técnicas para almacenar y representar imágenes:
Imágenes de i ntensidad (escala de grises)
Imágenes indexadas
Imágenes RGB (o color verdadero)
La función imagesc se usa para desplegar imágenes
•
man imágenes en escala de grises. Las
de intensidad, que a veces se lla­
imágenes indexadas se despliegan con la función
image y requieren un mapa de color para determinar la coloración adecuada de la imagen.
Se puede crear un mapa de color personalizado para cada imagen, o se puede usar un mapa
de color interno. Las imágenes RGB
(color verdadero) también se despliegan
con la función
image, pero no requieren un mapa de color, pues la información de color se incluye en el
archivo de imagen.
Si no sabe con qué tipo de datos de imagen trata, puede usar la función imfinfo para
analizar el archivo. Una vez que sepa qué tipo de archivo tiene, la función imread puede car­
gar un archivo de imagen en MATLAB, o puede usar los controles interactivos de datos del
software. El comando load puede cargar un archivo .dat o uno .mat. Para guardar una imagen
en uno de los formatos de imagen estándar, use la función imwrite o los controles interactivos
de datos. También puede guardar los datos de imagen como archivos .dat o .mat, mediante e l
comando save.
Un handle es un apodo dado a un objeto en MATLAB. Las gráficas que se despliegan
en MATLAB incluyen varios objetos diferentes, a todos los cuales se les puede dar un handle.
El objeto gráfico fundamental es la figura. En capas arrib a de la figura está el objeto ej e, y
en eapas arriba del mismo está el objeto de gráfica real. Cada uno de estos objetos incluye
propiedades que se pueden determinar con la función get o cambiar con la función seto S i
http://jurgensoft.co.cc
Resumen MATlAB
515
no co noce el nombre de handle apropiado, la fu nción gcf (get current figure: obtener figura
a ctual) regresa el handle de la figura a ctual y gca (get current axis: obtener eje actual) regre­
sa el handle de eje a ctual . La funció n set se usa para cambiar las propiedades de u n objeto
MATLAB. Por ejemplo, para cambiar el color de u na gráfica (la línea que dibujó) llamada h, use
setCh, 'color','red')
La animació n e n MATLAB se manipula con u na de dos té cni cas: volver a dibujar y
borrar, o crear una película. Por lo general, volver a d ibuj ar y borrar es más sencillo para
animaciones que representan datos que se pueden cal cular rápidame nte y no son visualmente
complicados. Para tareas que toman s ignifi cativa potencia computacional, por lo ge neral es
más se ncillo capturar cuadros individuales y luego combinarlos en u na película para verlos
tiempo después .
Las superficies complejas con frecuencia son difíciles de visualizar, en especial cuando
pueda haber superficies bajo otras superficies . Es posible representar estas superficies o cultas
con una transparencia especifi cada, que le permite ver los detalles oscurecidos. Esto se logra con
la función alpha. La entrada a esta función puede variar e ntre
Oy
1, que varía desde completa­
mente transparente a opaco.
Para hacer las superficies más fáciles de i nterpretar, por defecto las líneas o cultas no se
dibujan. El comando hidden off fuerza al programa a d ibujar dichas líneas .
Aunque MATLAB incluye u na extensa capacidad de manipulació n de ilum inació n,
usualmente es suficiente ence nder o apagar la funció n de iluminación d irecta . Por defecto , la
iluminación es difusa, pero se puede camb iar para dirigir con la fu nció n carnlight.
Las técni cas de visualización de volumen le permiten desplegar datos tridimensionales
en varias formas d iferentes. Los datos de volumen caen en dos categorías: datos es calares y
datos vectoriales . Los datos es calares involucran propiedades como temperatura o presión,
y los datos vectoriales incluyen propiedades como velo cidades o fuerzas. La fu nción help de
MATLAB co ntiene varios ejemplos de té cni cas de v isualización.
El siguie nte resumen MATLAB menciona y describe brevemente todos los caracteres, coman­
dos y fu nciones especiales que se definieron e n este capítulo:
al pha
axi s
bone
cape
caml i ght
cl own
col ormap
conepl ot
establece la transparencia del objeto de gráfica actual
controla las propiedades del eje de figura
mapa de color que hace que una imagen parezca radiografía
archivo de imagen MATLAB de muestra de una gorra ¿capa?
enciende la luz de cámara
archivo de imagen MATLAB de muestra de un payaso
define cuál mapa de color deben usar las funciones de graficación
crea una gráfica con marcadores que indican la dirección de los vectores
de entrada
contoursl ice crea una gráfica de contorno a partir de una rebanada de datos
archivo de imagen MATLAB de muestra de una sección de un grabado
detail
de Durero
drawnow
fuerza a MATLAB a dibujar una gráfica inmediatamente
durer
archivo de imagen MATLAB de muestra de un grabado de Durero
archivo de imagen MATLAB de muestra de la Tierra
earth
fl ujet
archivo de imagen MATLAB de muestra que presenta el comportamiento
de un fluido
gatl i n
archivo de imagen MATLAB de muestra de una fotografía
gca
obtiene handle de eje actual
obtiene handle de figura actual
gcf
(Continúa)
RESU M E N MATLAB
S1 6
http://jurgensoft.co.cc
Capítulo 1 3 Gráficos avanzados
get
getframe
regresa las propiedades de un objeto especificado
actual y la guarda como cuadro de película en un arreglo
obtiene la
estructura
gray
hidden off
i mage
i magesc
imfi n fo
imread
i mwrite
i sosurface
mand ri l l
movie
mri
pcol or
peaks
set
shading
mapa de color que se usa para ímágenes en escala de
fuerza a MAlLAB a desplegar líneas de retícula oscurecidas
crea una ímagen bidímensional
crea una ímagen bidímensional al escalar los datos
estándar y determina qué tipo de datos contiene
lee un archivo
lee un archivo
escribe un archivo gráfico
crea una superficie que conecta datos de volumen, todos de la misma
magnitud
archivo de ímagen MAlLAB de muestra de un mandril
reproduce una película almacenada como arreglo de estructura MAlLAB
conjunto de datos MRI de muestra
gráfica en seudocolor (similar a una gráfica de contorno)
crea una gráfica de muestra
establece las propiedades asignadas a un objeto especificado
determina la técnica de sombreado que se usa en gráficas de superficie y
gráficas en seudocolor
spine
archivo de ímagen MAlLAB de muestra de la radiografía de una
columna vertebral
wi nd
TÉRM INOS CLAVE
archivo de datos MAlLAB de muestra de información de velocidad
de viento
RGB (color verdadero)
datos escalares
handle
datos vectori ales
i magen dc intensidad
gráfi ca de imagen
de superficie
13.1
visualización de volume n
indexada
objeto
En Internet, encuentre un ejemplo de una imagen de intensidad, u na imagen indexada
y una imagen ROB. Importe estas imágenes a MATLAB y despliéguelas como figuras
M ATLAB .
13.2
Un conjunto Julia cuadrático tiene ]a forma
z( nf + e
z(n + 1 )
El
caso especia l donde
e
-0. 123 + 0.745i se llama fractal co nejo de Douday. Siga el
ejemplo 13. 1 y cree una imagen usando este valor de
c.
Para la imagen Mandelbrot,
comience con todos los valores z iguales a O. Necesitará comenzar con z
x + yi. Haga
que x y y varíen desde - 1.5 hasta 1 .5.
13.3
Un conj unto Julia cuadrático tiene la forma
z ( nf + e
z(n + 1 )
El caso especial donde
e =-0.391
0.587i se llama fractal disco
plo 1 3 . 1 y cree una imagen usando este valor de
mience con todos los valores z iguales a
c.
O. Necesitará comenzar con z
que x y y varíen desde - 1 .5 hasta 1.5.
13.4
Un conj unto Julia cuadrático tiene la forma
z(n + 1 )
z ( n)2 + e
el ejem­
Para la imagen Mandelbrot, co­
x + yi. Haga
http://jurgensoft.co.cc
El caso especial donde
c
=
- 0.75 se llama fractal san Marco. Siga el ejemplo 1 3 . 1 y
cree una imagen usando este valor de
todos los valores z iguales a
O.
c.
Para la imagen Mandelbrot, comience con
Necesitará comenzar con z
=
x + yi. Haga que x y y
varíen desde - 1. 5 hasta 1 .5.
13.5
Cree una gráfica de la función
y = sen(x)
para x desde - 27T hasta + 27T
Asigne un handle a la gráfica y use la función set para cambiar las siguientes propieda­
des (si no está seguro de cuál es el nombre del objeto para una propiedad dada, use la
función get para ver una lista de nombres de propiedad disponibles):
(a) color de línea de azul a verde
(b) estilo de línea a rayado
(e)
13.6
ancho de línea a 2
Asigne un handle a la figura creada en el problema 13.5 y use la función set para
cambiar las siguientes propiedades (si no está seguro de cuál es el nombre del objeto
para una propiedad dada, use la función get para ver una lista de nombres de propiedad
disponibles):
(a) color de fondo de figura a roj o
(h)
13.7
nombre de figura a "Una función seno"
Asigne un handle a los ejes creados en el problema 13.5 y use la función set para
cambiar las siguientes propiedades (si no está seguro de cuál es el nombre del objeto
para una propiedad dada, use la función get para ver una lista de nombres de propiedad
disponibles) :
(a) color de fondo a azul
(h)
13.8
escala de eje x a lag
Repita los tres problemas anteriores y cambie las propiedades mediante el inspector
interactivo de propiedades. Experimente con otras propiedades y observe los resulta­
dos en sus gráficas.
13.9
Cree una animación de la función
y = sen(x - a)
para
x que varía de - 27T a + 27T
a que varía de
O a 87T
•
Use un tamaño de paso para x que resulta en una gráfica suave .
•
Sea a la variable de animación. (Dibuj e una nueva imagen para cada valor de a.)
•
Use un tamaño de paso para a que cree una animación suave. Un tamaño de paso
muy pequeño hará que la animación parezca moverse más lentamente.
13.10
Cree una película de la función descrita en el problema anterior.
13.11
Cree una animación de lo siguiente:
Sea x que varía de - 27T a +27T
Sea y = sen(x)
Sea z = sen(x - a) cos(y - a)
Sea a la variable de animación.
Recuerde que necesitará hacer malla x y y para crear matrices bidimensionales;
use los arreglos resultantes para encontrar z.
13.12
Cree una película de la función descrita en el problema anterior.
13.13
Cree un programa que le permita acercarse al "fractal conejo" descrito en el problema
13.2 y cree una película de los resultados . (Véase el ejemplo 1 3 .2.)
Problemas
517
S18
Capítulo 1 3
http://jurgensoft.co.cc
Gráficos avanzados
13.14
Use una gráfica de superficie para graficar la función peaks. Emita el comando hold
00
y grafique una esfera que encierre toda la gráfica. Ajuste la transparencia de modo
que pueda ver el detalle en el interior de la esfera.
13.15
Grafique la función peaks y luego emita el comando camlight. Experimente con la
colocación de camlight en diferentes posiciones y observe el efecto sobre su gráfica.
13.16
Cree una gráfica de contorno apilada de los datos MRI, que muestre las capas 1 , 8 Y 1 2
de los datos.
13. 1 7
Un ejemplo de visualización MR1 se muestra en el tutorial help. Copie y pegue los
comandos en un archivo-m y corra el ejemplo. Asegúrese de agregar el comando elf
antes de dibujar cada nueva gráfica.
http://jurgensoft.co.cc
Caracteres especiales,
cOll1andos y funciones
Las tablas que se presentan en este apéndice están agrupadas por categorías que aproxi­
madamente son paralelas a la organización por capítulos.
Definición matricial
Capítnlo
[ ]
forma matrices
Capítulo 2
( )
se usa en enunciados para agrupar
Capítulo 2
Caracteres especiales
operaciones; se usa con un nombre de matriz
para identificar elementos específicos
separa subíndices o elementos de matriz
Capítulo 2
separa filas en una definición matricial;
Capítulo 2
suprime la salida cuando se usa en comandos
se usa para generar matrices; indica todas las
filas o todas las columnas
Capítulo 2
http://jurgensoft.co.cc
520 Apéndice A
operador asignación: asigna un valor a una
Capítulo 2
ubicación de memoria; no es lo mismo que
una igualdad
%
indica un comentario en un archivo-m
Capítulo 2
+
suma escalar y
Capítulo 2
resta escalar y arreglo
Capítulo 2
multiplicación escalar y multiplicación en álgebra
Capítulo 2
*
matricial
...
multiplicación de arreglo (punto multiplicar o
Capítulo 2
punto estrella)
/
división escalar y división en álgebra matricial
Capítulo 2
./
división de arreglo (punto dividir o punto diagonal)
Capítulo 2
exponenciación escalar y exponenciación matricial
Capítulo 2
A
en álgebra matricial
,A
exponenciación de
(punto potencia o
Capítulo 2
punto carat)
[]
Format
+
elipsis: continuación en la Línea siguiente
Capítulo 4
matriz vacía
Capítulo 4
establece formato sólo a signos más y menos
Capítulo 2
Format compact
establece formato a forma compacta
Capítulo 2
Format long
establece formato a 14 lugares decimales
Capítulo 2
Format long e
establece formato a 14 lugares exponenciales
Capítulo 2
Format loose
establece formato de vuelta a la forma por defecto
Capítulo 2
no compacta
Format short
establece formato de vuelta a 4
decimales
Capítulo 2
por defecto
Format short e
establece formato a 4 lugares exponenciales
Capítulo 2
Format rat
establece formato a despliegue racional (fraccional)
Capítulo 2
Caracteres especiales, comandos
http://jurgensoft.co.cc
ans
nombre de variable por defecto para resultados de cálculos
Capítulo 2
MATLAB
limpia la pantalla de comando
Capítulo 2
clear
limpia el área de trabajo
Capítulo 2
exit
terminaMATLAB
Capítulo 2
hel p
invoca la utilidad de ayuda
Capítnlo 2
el e
l oad
carga matrices desde un archivo
quit
terminaMATLAB
Capítulo 2
Capítulo 2
save
guarda variables en un archivo
Capítnlo 2
who
menciona las variables en memoria
Capítulo 2
whos
menciona las variables y sus tamaños
Capítulo 2
hel p
abre la función ayuda
Capítulo 3
helpwin
abre la función de ayuda en ventana
Capítulo 3
c10ck
regresa la hora
Capítulo 3
date
regresa la fecha
Capítulo 3
intmax
regresa el número entero más grande posible que se usa
Capítulo 3
enMATLAB
intmin
regresa el número entero más pequeño posible que se usa
Capítulo 3
enMATLAB
real max
regresa el número punto flotante más
posible que
Capítulo 3
se usa enMATLAB
real min
regresa el número punto flotante más pequeño posible que
Capítulo 3
se usa enMATLAB
ascii
indica que los datos se deben guardar en un formato
Capítulo 2
estándar ASCII
pause
pausa en la ejecución de un programa hasta oprimir
Capítulo 5
cualquier tecla
pi
aproximación numérica del valor de
1T
Capítulo 2
eps
diferencia más pequeña reconocida
Capítulo 3
i
número imaginario
Capítulo 3
Inf
infinito
Capítulo 3
j
número imaginario
Capítulo 3
NaN
no es un número
Capítulo 3
y
funciones
521
http://jurgensoft.co.cc
522 Apéndice A
abs
calcula el valor absoluto de un número real o la magnitud
Capítulo 3
de un número complejo
erf
calcula la función error
Capítulo 3
Capítulo 3
e"
exp
calcula el valor de
factor
encuentra los factores primos
Capítulo 3
factorial
calcula el factorial
Capítulo 3
gcd
encuentra el máximo común denominador
Capítulo 3
isprime
determina si un valor es primo
Capítulo 3
isreal
determina si un valor es real o complejo
Capítulo 3
lcn
encuentra el mínimo común denominador
Capítulo 3
10g
calcula el logaritmo natural. o logaritmo base
10g10
calcula el logaritmo común. o logaritmo base 10 (logl O)
Capítulo 3
10g2
calcula el logaritmo base 2 (lag,)
Capítulo 3
nthroot
encuentra la n-ésima raíz real de la matriz de entrada
Capítulo 3
primes
encuentra los números primos menores que el valor de
Capítulo 3
e
(lag)
Capítulo 3
entrada
prod
rats
multiplica los valores en un arreglo
Capítulo 3
convierte la entrada a una representación racional
Capítulo 3
(es decir. una fracción)
rem
calcula el resto en un problema de división
Capítulo 3
sign
determina el
Capítulo 3
(positivo o negativo)
sqrt
calcula la raíz cuadrada de un número
Capítulo 3
sum
suma los valores en un arreglo
Capítulo 3
asin
calcula el seno inverso (arcoseno)
Capítulo 3
asind
calcula el seno inverso y reporta el resultado en grados
Capítulo 3
cos
calcula el coseno
Capítulo 3
sin
calcula el seno. con radianes como entrada
Capítulo 3
sind
calcula el seno. con ángulos en grados como entrada
Capítulo 3
sinh
calcula el seno lúperbólico
Capítulo 3
tan
calcula la tangente. con radianes como entrada
Capítulo 3
MATLAB incluye toda� las funciones trigonométricas: aquí sólo se incluyen las que se
discutieron espeeílicamente en el texto.
Caracteres especiales, comandos
http://jurgensoft.co.cc
abs
calcula cl valor absoluto de un número real o la magnitud
de un número complejo
Capítulo 3
angle
calcula el ángulo cuando los números complejos se
representan con coordenadas polares
Capítulo 3
complex
crea un número complejo
Capítulo 3
conj
crea la conjugada compleja de un número complejo
Capítulo 3
imag
extrae el componente imaginario de un número complejo
Capítulo 3
isreal
determina si un valor es real o complejo
Capítulo 3
real
extrae el componente real de un número complejo
Capítulo 3
ceil
redondea al entero más cercano hacia infinito positivo
Capítulo 3
fix
redondea al entero más cercano hacia cero
Capítulo 3
floor
redondea al entero más cercano hacia menos infinito
Capítulo 3
round
redondea al entero más cercano
Capítulo 3
Capítulo .
cumprod
calcula el producto acumulado de los valores en un
Capítulo 3
cumsun
calcula la suma acumulada de los valores en un arreglo
Capítulo 3
length
determina la dimensión más grande de un
Capítulo 3
max
eneuentra el valor máximo en un arreglo y determina cuál
elemento almacena el valor má.ximo
Capítulo 3
mean
calcula el promedio de los elementos en un arreglo
Capítulo 3
median
encuentra la mediana de los elementos en un arreglo
Capítulo 3
min
encuentra el valor mínimo en un arreglo y determina cuál
elemento almacena el valor mínimo
Capítulo 3
size
determina el número de filas y columnas en un arreglo
Capítulo 3
sort
ordena los elementos de un vector
Capítulo 3
sortrows
ordena las filas de un vector sobre la base de los valores
en la primera columna
Capítulo 3
prod
multiplica los valores en un
Capítulo 3
sum
suma los valores en un arreglo
Capítulo 3
std
determina la desviación estándar
Capítulo 3
var
calcula la varianza
Capítulo 3
y
funciones 523
http://jurgensoft.co.cc
524 Apéndice A
rand
calcula números aleatorios distribuidos unifonnemente
Capítulo 3
randn
calcula números aleatorios distribuidos nonnalmente
Capítulo 3
(gaussianos)
mapea vectores en un arreglo bidimensional
Capítulos 4 Y 5
diag
extrae la diagonal de una matriz
Capítulo 4
fliplr
voltea una matriz en su imagen
meshgrid
'"'0IJ"'",,""''''
de izquierda
Capítulo 4
a derecha
flipud
voltea una matriz verticalmente
Capítulo 4
linspace
función vector espaciado linealmente
Capítulo 2
10gspace
función vector espaciada logarítmicamente
Capítulo 2
cross
calcula el producto cruz
Capítulo 9
det
calcula el determinante de una matriz
Capítulo 9
dot:
calcula el producto punto
Capítulo 9
inv
calcula el inverso de una matriz
Capítulo 9
bar
genera una gráfica de barras
Capítulo 5
barh
genera una gráfica de barras horizontal
Capítulo 5
contour
genera un mapa de contorno de una superficie tridimensional
Capítulo 5
comet
dibuja una gráfica x-yen una secuencia de falsa animación
Capítulo 5
fplot
crea una gráfica x-y con base en una función
Capítulo 5
hist:
genera un histograma
Capítulo 5
109109
genera una gráfica x-y con ambos ejes en escala logarítmica
Capítulo 5
pcolor
crea una gráfica en seudocolor similar a un mapa de contorno
Capítulo 5
pie
genera una gráfica de pastel
Capítulo 5
plot
crea una gráfica x-y
Capítulo 5
plot:yy
crea una gráfica con dos
polar
crea una gráfiea polar
x
semi1 ogx
semilogy
Capítulo 5
y
genera una
Capítulo 5
en escala logarítmica
Capítulo 5
y en escala logarítmica
Capítulo 5
Caracteres especiales, comandos
http://jurgensoft.co.cc
bar3
genera una gráfica de barras tridimensional
Capitulo 5
bar3h
genera una gráfica de barras tridimensional horizontal
Capítulo 5
comet3
dibuja una gráfica de línea tridimensional en una secuencia
Capítulo 5
de falsa animación
mesh
genera una gráfica de malla de una
Capítulo 5
peaks
crea una matriz tridimensional de muestra que se usa para
Capítulo 5
demostrar las funciones de graficación
pie3
genera una gráfica de pastel tridimensional
Capítulo 5
plat3
genera una gráfica de línea tridimensional
Capítulo 5
sphere
función de muestra que se usa para demostrar l a graficación
Capítulo 5
surf
genera una gráfica de superficie
Capítulo 5
surfc
genera una combinación de gráfica de superficie y contorno
Capítulo 5
y
funciones 525
526 Apéndice A
http://jurgensoft.co.cc
Coutrol de apariencia de gráfica
Indicador
Tipo de línea
Capítulo 5
sólida
Indicador
o
x
Capítulo
punteada
Capítulo 5
raya-punto
Capítulo 5
rayada
Capítulo 5
Tipo de punto
punto
Capítulo 5
círculo
Capítulo 5
marca
x
Capítulo 5
Capítulo 5
+
más
estrella
Capítulo 5
s
cuadrado
Capítulo 5
d
diamante
Capítulo 5
v
triángulo abajo
Capítulo 5
triángulo arriba
Capítulo 5
triángulo
Capítulo 5
triángulo derecho
Capítulo 5
pentagrama
Capítulo 5
*
A
<
>
p
Capítulo 5
h
Indicador
Color
b
azul
Capítulo 5
9
verde
Capítulo 5
rojo
Capítulo 5
r
e
dan
Capítulo 5
m
magenta
Capítulo 5
y
amarillo
Capítulo 5
k
negro
Capítulo 5
Caracteres especiales, comandos
http://jurgensoft.co.cc
axis
congela el escalamiento del
actual para gráficas
posteriores o especifica las dimensiones del eje
Capítulo 5
axis equal
fuerza el mismo espaciamiento de escala para cada eje
Capítulo 5
colormap
esquema de color usado en gráficas de superficie
Capítulo 5
figure
abre una nueva ventana de figura
Capítulo 5
grid
agrega una retícula sólo a la gráfica actual
Capítulo 5
grid off
desactiva la retícula
Capítulo 5
grid on
agrega una retícula a las gráficas actual y todas las
subsecuentes en la figura actual
Capítulo 5
hold off
instruye a MATLAB a borrar los contenidos de figura
antes de agregar nueva información
Capítulo 5
hold on
instruye a MATLAB a no borrar los contenidos dc figura
antes de agregar nueva información
Capítulo 5
legend
agrega una leyenda a una gráfica
Capítulo 5
shading flat
sombrea una gráfica de superficie con un color por sección
de retícula
Capítulo 5
shading interp
sombrea una gráfica de superficie mediante interpolación
Capítulo 5
subplot
divide la ventana de gráficas en secciones disponibles
para graficación
Capítulo 5
text
agrega un recuadro dc tcxto a una gráfica
Capítulo 5
title
agrega un título a una gráfica
Capítulo 5
xlabel
agrega una etiqueta al eje x
Capítulo 5
ylabel
agrega una etiqueta al eje y
Capítulo 5
zlabel
agrega una etiqueta al eje z
Capítulo 5
autumn
mapa de color opcional usado en gráficas de superficie
Capítulo 5
bone
mapa de color opcional usado en gráficas de superficie
Capítulo 5
colorcube
mapa de color opcional usado en gráficas de superficie
Capítulo 5
cool
mapa de color opcional usado en gráficas de superficie
Capítulo 5
copper
mapa de color opcional usado en gráficas de superficie
Capítulo 5
flag
mapa de color opcional usado en gráficas de superficie
Capítulo 5
hot
mapa de color opcional usado en
de superficie
Capítulo 5
hsv
mapa de color opcional usado en gráficas de superficie
Capítulo 5
jet
mapa de color por defecto usado en gráficas dc superficie
Capítulo 5
pink
mapa de color opcional usado en gráficas de superficie
Capítulo 5
prism
mapa de color opcional usado en gráficas de superficie
Capítulo 5
spring
mapa de color opcional usado en gráficas de superficie
Capítulo 5
summer
mapa de color opcional usado en gráficas de superficie
Capítulo 5
white
mapa de color opcional usado en gráficas de superficie
Capítulo 5
winter
mapa de color opcional usado en gráficas de superficie
Capítulo 5
y
funciones 527
http://jurgensoft.co.cc
528 Apéndice A
addpath
agrega un directorio a la ruta de búsqueda de
CapCtulo 6
MATLAB
function
identifica un archivo�m como funci6n
Capítulo 6
nargin
determina el número de argumentos de entrada en
Capítulo 6
una funci6n
nargout
determina el número de argumentos de salida de
Capítulo 6
una funci6n
pathtool
abre la herramienta de ruta interactiva
Capítulo 6
varargin
indica que un número variable de argumentos
Capítulo 6
puede ser entrada a una función
@
identifica un manipulador de función, como
Capítulo 6
cualquiera de los usados con las funciones en línea
%
%
comentario
Capítulo 6
comienza y termina una cadena
Capítulo 7
marcador de posición (placeholder) usado en el
Capítulo 7
notación punto fijo o decimal
Capítulo 7
comando fprintf
%f
%e
notación exponencial
Capítulo 7
%g
notación o punto fijo o
Capítulo 7
%s
notación cadena
Capítulo 7
%%
divisor de celda
Capítulo 7
Capítulo 7
\n
salto de línea (lincfeed)
\r
regreso de carro
\t
tabulador
Capítulo 7
\b
retroceder un espacio (backspace)
Capítulo 7
a linefeed)
Capítulo 7
Caracteres especiales, comandos
http://jurgensoft.co.cc
despliega una cadena o una matriz en la ventana de comandos
Capítulo 7
fprintf
controla el despliegue de la ventana de comandos
Capítulo 7
ginput
permite al usuario elegir valores de una
Capítulo 7
input
permite al usuario ingresar valores
Capítulo 7
pause
pausa el programa
Capítulo 7
uiimport
lanza el Asistente de Importación
Capítulo 7
wavread
lee archivos wave
Capítulo 7
xlsimport
importa arehivos de datos Excel
Capítulo 7
xlswrite
exporta datos como un archivo Excel
Capítulo 7
load
carga matrices desde un archivo
Capítulo 2
save
guarda variables en un archivo
Capítulo 2
celldisp
despliega los contenidos de un
disp
imfinfo
Capítulo 10
celda
lee un archivo gráfico estándar y determina qué tipo de
Capítulo 13
datos contiene
imread
lee un archivo de gráficos
Capítulo 13
imwrite
escribe un archivo de gráficos
Capítulo 13
ompa:radón
<
menor que
<=
>
>=
&
xor
Capítulo 8
menor que o igual a
Capítulo 8
mayor que
Capítulo 8
mayor que o igual a
Capítulo 8
igual a
Capítulo 8
no igual a
Capítulo 8
and
Capítulo 8
or
Capítulo 8
not
Capítulo 8
or exclusiva
Capítulo 8
y funciones
529
http://jurgensoft.co.cc
530 Apéndice A
break
termina la ejecución de un bucle
case
ordena respuestas
Capítulo 8
continue
termina el paso aetual a través de un bucle, pero procede
Capítulo 8
Capítulo 8
al siguiente paso
el se
define la ruta si el resultado de un enunciado if es falso
Capitulo 8
elseif
define la ruta si el resultado de un enunciado if es falso
Capítulo 8
y especifica una nueva prueba lógica
end
identifica el final de una estructura de control
Capítulo 8
for
genera una estructura bucle (loop)
Capítulo 8
if
verifica una condición que resulta en verdadero o en falso
Capítulo 8
menu
crea un menú a usar como vehículo de entrada
Capítulo 8
otherwise
parte de la estructura de selección de caso
Capítulo 8
switch
parte de la estructura de selección de caso
Capítulo 8
while
genera una estructura bucle
Capítulo 8
a11
verifica si un criterio se satisface por todos los elementos
Capitulo 8
verifiea si un criterio se satisfaee por alguno de los
Capítulo 8
any
en un arreglo
elementos en un arreglo
find
determina euáles elementos en una matriz satisfacen el
Capítulo 8
criterio de entrada
isprime
determina si un valor es primo
Capítulo 3
isreal
determina si un valor es real o complejo
Capítulo 3
clock
determina el tiempo actual en el reloj del CPU
Capítulo 8
etime
encuentra el tiempo transcurrido
Capítulo 8
tic
comienza una secuencia de cronometrado
Capítulo 8
toe
detiene una secuencia de cronometrado
Capítulo 8
date
regresa la feeha
Capítulo 3
Caracteres especiales, comandos
http://jurgensoft.co.cc
eye
genera una matriz identidad
Capítulo 9
magic
crea una matriz "mágica"
Capítulo 9
ones
crea una matriz que contiene todos unos
Capítulo 9
pascal
crea una matriz de Pascal
Capítulo 9
zeros
crea una matriz que contiene todos ceros
Capítulo 9
gallery
contiene matrices ejemplo
Capítulo 9
constructor de arreglo celda
Capítulos 10 y 11
datos cadena (información carácter)
Capítulos 10 y 11
arreglo carácter
Capítulo 10
Ea
arreglo numérico
Capítulo 10
�
arreglo simbólico
Capítulo 10
arreglo lógico
Capítulo 10
arreglo esparcido
Capítulo 10
arreglo celda
Capítulo lO
arreglo estructura
Capítulo 10
{ }
"
!Bl
�
celldisp
despliega los eontenidos de un arreglo celda
Capítulo lO
char
crea un arreglo carácter acolehado
Capítulo lO
double
cambia un arreglo a un arreglo de doble precisión
Capítulo lO
int16
entero signado de 16 bits
Capítulo 10
int32
entero signado de 32 bits
Capítulo 10
int64
entero signado de 64 bits
Capítulo lO
int8
entero signado de 8 bits
Capítulo 10
num2str
convierte un arreglo numérico a un arreglo carácter
Capítulo 10
single
cambia un arreglo a un arreglo de precisión sencillo
Capítulo 10
convierte una matriz de formato completo a una matriz
Capítulo 10
sparse
de formato esparcido
str2num
convierte un arreglo carácter a un arreglo numérico
Capítulo 10
uint16
entero no signado de 16 bits
Capítulo 10
uint32
entero no signado de 32 bits
Capítulo 10
uínt64
entero no signado de 64 bits
Capítulo 10
uint8
entero no signado de 8 bits
Capítulo 10
y
funciones 531
http://jurgensoft.co.cc
532 Apéndice A
collect
recopila términos iguales
Capítulo 11
diff
encuentra la derivada simbólica de una expresión simbólica
Capítulo 11
dsolve
solucionador de ecuación diferencial
Capítulo 11
expand
expande una expresión o ecuación
Capítulo 11
factor
factoriza una expresión o ecuación
Capítulo 11
int
encuentra la integral simbólica de una expresión simbólica
Capítulo 11
numden
extrae el numerador y denominador de una expresión o una
Capítulo 11
ecuación
simple
intenta y reporta toda" las funciones de simplificación y
Capítulo 11
selecciona la respuesta más corta
simplify
simplifica usando las reglas de simplificación internas
Capítulo 11
de Maple
Capítulo 11
solve
resuelve una expresión o ecuación simbólica
subs
sustituye en una expresión o ecuación simbólica
Capítulo 11
sym
crea una variable, expresión o ecuación simbólica
Capítulo 11
syms
crea variables simbólicas
Capítulo 11
ezcontour
crea una gráfica de contorno
Capítulo 11
ezcontourf
crea una gráfica de contorno llena
Capítulo 11
ezmesh
crea una gráfica de malla a partir de una expresión simbólica
Capítulo 11
ezmeshc
grafica tanto una gráfica de malla como una de contorno
Capítulo 11
creada a partir de una expresión simbólica
ezplot
crea una gráfica x-y de una expresión simbólica
Capítulo 11
ezplot3
crea una gráfica de línea tridimensional
Capítulo 11
ezpolar
crea una gráfica en coordenadas polares
Capítulo 11
ezsurf
crea una gráfica de superficie a partir de una expresión
Capítulo 11
simbólica
ezsurfc
grafica tanto una gráfica de malla como una de contorno
creada a partir de una expresión simbólica
Capítulo 11
Caracteres especiales, comandos
http://jurgensoft.co.cc
cftool
abre la interfaz
diff
calcula las diferencias entre valores adyacentes en un
de usuario de ajuste de curva
Capítulo 12
Capítulo 12
si la entrada cs un arreglo; encuentra la derivada
simbólica sí la entrada es una expresión simbólica
interpl
aproxima datos intermedios con la técnica de interpolación
Capítulo 12
lineal por defecto o con un enfoque específico de orden superior
interp2
función interpolación bidimensional
Capítulo 12
interp3
función interpolación tridimensional
Capítulo 12
interpn
función interpolación multidimensional
Capítulo 12
ode45
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode23
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
odel13
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode15s
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode23s
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode23t
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode23tb
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
ode15i
solucionador de ecuaciones diferenciales ordinarias
Capítulo 12
calcula el coeficiente de un polinomio de mínimos cuadrados
evalúa un polinomio en un valor específico de x
Capítulo 12
polyval
quad
calcula la integral bajo una curva (Simpson)
Capítulo 12
quadl
calcula la integral bajo una curva (Lobatto)
Capítulo 12
cape
archivo de imagen MATLAB de muestra de una capa
Capítulo 13
cl own
archivo de imagen MATLAB de muestra de un payaso
Capítulo 13
detail
archivo de imagen MATLAB de muestra de una sección
Capítulo 13
pol yfit
Capítulo 12
de un grabado en madera de DureTo
durer
archivo de imagen MATLAB de muestra de un grabado
Capítulo 13
de Durero
earth
archivo de imagen MATLAB de muestra de la Tierra
Capítulo 13
f l ujet
archivo de imagen MATLAB de muestra que presenta
Capítulo 13
comportamiento de fluido
gatl in
archivo de imagen MATLAB de muestra de una fotografía
Capítulo 13
mandril l
archivo de imagen MATLAB de muestra de un mandril
Capítulo 13
mri
conjunto d e datos IRM de muestra
Capítulo 13
peaks
crea una gráfica muestra
Capítulo 13
spine
archivo de imagen MATLAB de muestra de una radiografía
Capítulo 13
de columna vertebral
wind
archivo de datos MATLAB de muestra de información
Capítulo 13
de velocidad de viento
sphere
función muestra que se usa para demostrar
Capítulo 5
census
conjunto de datos interno que se usa para demostrar técnicas
Capítulo 12
numéricas
handel
conjunto de datos interno que se usa para demostrar la
función sound
Capítulo 3
y funciones
533
http://jurgensoft.co.cc
534 Apéndice A
establece la transparencia del objeto de gráfica actual
Capítulo 13
cam1ight
enciende la luz de cámara
Capítulo 13
conepl ot
crea una gráfica con marcadores que indican la dirección
Capítulo 13
al pha
de los vectores de entrada
contoursl ice
crea una gráfica de contorno a partir de una rebanada
Capítulo 13
de datos
drawnow
fuerza a MATLAB a dibujar una gráfica inmediatamente
Capítulo 13
gca
obtiene manipulador de eje actual
Capítulo 13
gcf
obtiene manipulador de figura actual
Capitulo 13
get
regresa las propiedades de un objeto específico
Capítulo 13
getframe
obtiene la figura actual y la guarda como
un
cuadro de
Capítulo 13
película en un a.rreglo estructura
Capítulo 13
image
crea una imagen bidimensional
imagesc
crea una
imfinfo
lee un archivo gráfico estándar y determina qué tipo de
bidimensional al escalar los datos
Capítulo 13
Capítulo 13
datos contiene
imread
lee un archivo gráfico
Capítulo 13
im write
escribe un archivo gráfico
Capítulo 13
isosurface
crea su¡pe¡1ícles que conectan datos volumen de la misma
Capítulo 13
magnitud
movie
reproduce una pelfcula almacenada como
estructura MATLAB
arreglo
set
establece las propiedades asignadas a
shading
determina la técnica de sombreado que se usa en gráficas
de superficie y gráficas de seudocolor
•
un
un
objeto específico
Capítulo 13
Capítulo 13
Capítulo 13
http://jurgensoft.co.cc
Soluciones a ejercicios
de práctica
Existen muchas formas para resolver problemas en MATLAB. Estas soluciones repre­
sentan un abordaje posible.
E j e r c i c io d e pr á c t i c a
l. 7
2. 10
3. 2.5000
4. 17
5. 7.8154
6. 4. 1 955
7. 12.9600
8. 5
9. 2.2361
10.
2. 1
536 Apéndice B
http://jurgensoft.co.cc
E i e rc i c i o d e prá c t i c a
2.2
1. test es un nombre válido.
2. Test es un nombre válido, pero es una variable diferente de test.
3. if no se permite. Es una palabra clave reservada.
4. mi-libro no se permite porque contiene un guión.
5 . mClibro es un nombre válido.
6. Esteesunnombremuylargoperoinclusoasisepermite? No se permite porque
incluye un signo de interrogación. Incluso sin dicho signo, no es buena idea.
7. lergrupo no se permite porque comienza con un número.
8. grupo_uno es un nombre válido.
9. zzaAbc es un nombre válido. aunque no es muy bueno porque combina
mayúsculas y minúsculas y no es significativo.
1 0. z34wAwy%12# no es válido porque incluye los signos de porcentaje y
número.
E i e r c i c i o d e práctica
2.3
1. 6
2.72
3. 16
4. 13
5 . 48
6. 38.5
7 . 4096
8. 2.417ge + 024
9.245
1 0. 2187
l l . (5+3)/(9-1)= 1
12. 2A3 -4/(5+3)= 7.5
13. 5A(2+1 )/(4- 1 ) = 4 1.6667
14. (4+112)*(5+2/3 ) =25.5
15. (5+6*7/3 -2A2)/(2/3 *3/(3 *6)) = 135
http://jurgensoft.co.cc
E j e r c i c io de pr á c ti c a
1. a
Soluciones a ejercicios de práctica 537
2 .4
[2 . 3 5 . 8 9]
=
2. s i n (a)
=
ans
0 . 7 4 5 7 -0 . 4646 0 . 4 1 2 1
3. a + 3
ans
=
5 . 3000 8 . 8000 1 2 . 0000
4. b
[ 5 . 2 3 . 14 2]
=
5. a + b
ans
=
7 . 5000 8 . 9400 11 . 0000
6.
a .* b
ans
1 1 . 9600 18 . 2120 18 . 0000
=
7. a . A2
ans
5 . 2900 33 . 6400 81 . 0000
=
8.
e
e
=
=
9. d
=
d
=
.IQ
0:10 or
[O : 10]
0:2 : 10 or
[0 : 2:10]
l i nspace (10 , 20 , 6)
ans
10 12 14 16 18 20
=
1 1 . l ogspace (1 , 2 , 5)
ans
=
10 . 0000 1 7 . 7828 31 . 6228 56 . 2341 100 . 0000
E j e r c i c io de pr á c ti c a
3. 1
l. En la ventana de comandos, escriba
hel p cos
hel p sqrt
hel p exp
2. Seleccione Help � MATLAB Help de la barra de menú.
Use el panel izquierdo para navegar hacia Functions - Categorical List o
Functions - Alphabetical List
3. Seleccione Help � Web Resources � The Mathworks Web Site
538
Apéndice B
http://jurgensoft.co.cc
E j er c i c io de p r á c tic a
3. 2
x=- 2 : 1 : 2
x =
-2 -1 O 1 2
abs (x)
ans
2 1 O 1 2
sqrt (x)
ans
O + 1 . 4142 ; O + 1 . 0000; O 1.0000 1 . 4142
2. sqrt (-3)
ans =
O + 1 . 732 1;
sqrt (3)
ans
1 . 73 2 1
1.
=
=
=
3. x=- 1O:3:1 1
x =
- 10 - 7 -4 - 1 2 5 8 1 1
x/3
ans =
-3 . 3333 - 2 . 3333 - 1 . 3333 -0 . 3333 0 . 6667 1 . 6667 2 . 6667
3 . 6667
rem (x , 3)
ans =
-1 -1 -1 -1 2 2 2 2
4. exp(x)
ans =
1 . 0e+004 *
0 . 0000 0 . 0000 0 . 0000 0 . 0000 0 . 0007 0 . 0148 0 . 2981 5 . 9874
5 . l og (x)
ans =
Col umns 1 through 4
2 . 3026 + 3 . 1416; 1 . 9459 + 3 . 1416; 1 . 3863 + 3 . 1416;
O + 3 . 1416;
Col umns 5 through 8
0 . 6931 1 . 6094 2 . 0794 2 . 3979
l oglO(x)
ans =
Col umns 1 through 4
1 . 0000 + 1 . 3644; 0 . 8451 + 1 . 3644; 0 . 6021 + 1 . 3644;
O + 1 . 3644;
Col umns 5 through 8
6.
s ; gn (x)
ans =
-1 -1 -1 -1 1 1 1 1
7. format rat
x/2
ans =
-5 - 7/2 - 2 - 1/2 1 5/2 4 1 1/2
http://jurgensoft.co.cc
E j e r cic i o d e p r á c t i c a
Soluciones a ejercicios de práctica 539
3.3
1 . factor (322)
ans =
2 7 23
2. gcd ( 3 2 2 , 6)
ans
2
=
3 . i spri me (322)
ans
O
=
P uesto que el resultado de isprime es el número O, 322 no
es un número primo.
4. l ength(pr i me s ( 3 2 2 ) )
ans
66
=
5. rat s (pi )
ans =
3 5 5/113
E j e r c ic i o de p r á c t i c a
3 .4
1. theta=3*pij
s i n ( 2 * theta)
ans =
- 7. 347ge-016
2. theta=0 : 0 . 2*pi : 2 *pi ;
cos (theta)
ans =
Col umns 1 through 7
1 . 0000 0 . 8090 0 . 3090 - 0 . 3090 - 0 . 8090 - 1.0000 - 0 . 8090
Col umns 8 through 1 1
- 0 . 3090 0 . 3090 0 . 8090 1 . 0000
3. asi n (1)
ans
1 . 5 708
=
Esta respuesta está en radianes .
4. acos (x)
ans =
Col umns
3 . 1416
Col umns
1 . 1593
1 through 7
2 . 4981 2 . 2143 1 . 9823 1 . 7722 1 . 5 708 1 . 3694
8 through 11
0 . 92 7 3 0 . 64 3 5 O
� cos (45*pi/180)
ans =
0 . 7071
cosd (45)
ans =
0 . 7071
(Continúa)
540
Apéndice B
http://jurgensoft.co.cc
E i e r c i c i o de p r á c tic a
6.
3.4
(Continuación)
as;n (0 . 5)
ans =
0 . 5 2 3 6 Esta respuesta está en radianes. También podría
encontrar el resultado en grados.
as;nd(0 . 5)
ans =
30 . 0000
7. csc(60*p;j180)
ans =
1 . 1 5 4 7 or . . . .
cscd(60)
ans =
1 . 1 547
E j e r c i c io de pr á c ti c a
3. 5
x= [4 90 85 7 5 ; 2 5 5 65 7 5 ; 3 78 82 79 ; 1 84 92 93]
x =
4 90 8 5 7 5
2 5 5 65 75
3 78 8 2 79
1 84 92 93
1. max(x)
ans =
4 90 92 93
2. [max imum , row] =max(x)
max;mum =
4 90 92 93
row =
1 1 4 4
3 . max(x ' )
ans =
90 75 82 93
4. [max;mum , col umn] =max (x')
max;mum =
90 75 82 93
col umn =
2 4 3 4
5 . max(max (x) )
ans =
93
http://jurgensoft.co.cc Soluciones o eiercicios de próctico
E j e r c i c i o d e p r á c t i c a 3. 6
x
=
[4 90 85 75; 2 55 65 75; 3 78 82 79;1 84 92 93];
1. mean (x)
ans
=
2.5000 76.7500 81.0000 80.5000
2. median (x)
ans
=
2.5000 81.0000 83.5000 77.0000
3. mean (x ' )
ans
=
63.5000 49.2500 60.5000 67.5000
4. median ( x ' )
ans ::
80.0000 60.0000 78.5000 88.0000
E j e r c i c i o d e p r á c t i c a 3.7
x
=
[4 90 85 75; 2 55 65 75; 3 78 82 79;1 84 92 93];
1. size(x)
ans
=
4 4
2. sort (x)
ans
1
2
3
4
=
SS 65 75
78 82 75
84 85 79
90 92 93
3. sor t (x , ' descend ' )
ans
4
3
2
1
=
90 92 93
84 85 79
78 82 75
SS 65 75
4. sortrows(x)
ans
1
2
3
4
=
84 92
SS 65
78 82
90 85
93
75
79
75
541
http://jurgensoft.co.cc
3. 8
E j e r c i c io de pr á c tic a
x = [4 90 85 7 5 ; 2 5 5 6 5 7 5 ; 3 78 82 79 ; 1 84 92 93] ;
1 . std (x)
ans =
1 . 2910 1 5 . 3052 11 . 4601 8 . 5440
2. var(x)
ans =
1 . 6667 2 34 . 2 500 1 3 1 . 3 3 3 3 73 . 0000
3. sqrt (var (x) )
ans =
1 . 2910 1 5 . 3052 1 1 . 4601 8 . 5440
4. La raí z cuadrada de l a vari anza es i gual a l a
desvi ación estándar .
E je r c ic io de pr á c ti c a
3. 9
1. rand (3)
ans =
0 . 9501 0 . 4860 0 . 4 5 6 5
0 . 2 3 1 1 0 . 8913 0 . 0185
0 . 6068 0 . 7621 0 . 82 14
2. randn (3)
ans =
- 0 . 4 3 2 6 0 . 2 8 7 7 1 . 1892
- 1 . 66 5 6 - 1 . 1465 -0 . 0 3 76
0 . 12 5 3 1 . 1909 0 . 3 2 7 3
3 . x=rand (lOO , 5) ;
4. max(x)
ans =
0 . 98 1 1
std (x)
ans =
0 . 2821
var(x)
ans =
0 . 0796
mean (x)
ans =
0 . 48 2 3
0 . 9785 0 . 9981 0 . 9948 0 . 9962
0 . 2 7 96 0 . 3018 0 . 2997 0 . 2942
0 . 0782 0 . 0911 0 . 0898 0 . 086 5
0 . 5026 0 . 5401 0 . 4948 0 . 5 1 1 1
5 . x=randn (lOO , 5) ;
6.
max(x)
ans
2 . 6903 2 . 6289 2 . 7 3 16 2 . 49 5 3 1 . 76 2 1
std (x)
ans =
0 . 97 2 5 0 . 9201 0 . 9603 0 . 93 6 7 0 . 9130
var(x)
ans =
0 . 94 58 0 . 846 5 0 . 92 2 1 0 . 8774 0 . 83 3 5
mean (x)
ans =
- 0 . 02 7 7 0 . 01 1 7 -0 . 08 2 2 0 . 0974 - 0 . 1 3 3 7
=
542
http://jurgensoft.co.cc Soluciones a ejercicios de práctica
E i e r c i c i o d e p r á c t i c a 3.10
1 . A=1+i
A =
1 . 0000 + 1 . 0000i
8=2 -3 i
B =
2 . 0000
3 . 0000;
(=8+2 ;
( =
8 . 0000 + 2 . 0000i
2 . i magO= [-3 , 8 , - 161;
real 0= [2 . 4,6];
D=complex (realO , i magD)
ans =
2 . 0000 - 3 . 0000i 4 . 0000 + 8.0000i 6 . 0000 - 16 . 0000i
3. abs(A)
ans =
1 . 4142
abs (B)
ans =
3 . 60 5 6
abs«()
ans =
8 . 2462
abs (O)
ans
3 . 60 5 6 8 . 9443 1 7 . 0880
4. angl e(A)
ans =
0 . 78 5 4
angle(B)
ans =
-0 . 9828
angl e«()
ans =
0 . 2450
angl e(O)
ans =
-0 . 9828 1 . 1071 - 1 . 2 12 0
5 . con j(O)
ans =
2 . 0000 + 3 . 0000; 4 . 0000 - 8 . 0000i 6 . 0000 +16 . 0000i
6. D '
ans =
2.0000 + 3.0000;
4 . 0000 - 8 . 0000;
6 . 0000 +16 . 0000;
7. sqrt (A . *A ' )
ans =
1 . 4142
543
544
Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e p r á c t i c a 3.11
1. c10ck
ans =
1.0e+003 *
2. 0050 0 . 0070 0.0200 0 . 0190 0 . 0440 0 . 0309
2. date
ans
20-Jul - 2005
=
3. S*lOASOO
ans =
Inf
4. l/S*IOA5oo
ans
Inf.
=
5 . O/O
Warning: Divide by zero .
ans =
NaN
E j e rc i c i o d e p r á c t i c a 4.1
a
a
[12 1 7 3 6 ]
=
=
12 1 7 3 6
b
b
[5 8 3; 1 2 3; 2 4 6]
=
5 8 3
1 2 3
2 4 6
e
[22 :17;4 ]
=
e
•
=
22
17
4
1. xl
=
a (1 , 2)
xl =
17
2 . xl
=
xl
=
be : , 3)
3
3
6
3. x3
=
x3
=
b (3 , : )
2 4 6
http://jurgensoft.co.cc
Soluciones a eiercicios de práctico
x4 = [b(1,!), b(2,2), b(3,3)]
x4 =
5 2 6
5 . x5 = [a(1:3);b]
x5 =
12 17 3
5 8 3
1 2 3
2 4 6
6. x6 = [c,b¡a]
x6 =
22 5 8 3
17 1 2 3
4 2 4 6
12 17 3 6
7. x7=b(8)
x7 =
3
8. x8=b(:)
x8 =
5
1
2
8
2
4
3
3
6
4.
E j e r c i c i o d e p r á c t i c a 4.2
1. length = [1, 3, 5];
width = [2.4,6,8]¡
[L;W]=meshgrid(length,width);
area = L. ,�w
area =
2 6 10
4 12 20
6 18 30
8 24 40
(Continúa)
545
546 Apéndice B
http://jurgensoft.co.cc
E i e r c i c io de p r á c t i c a
2. radi us
4.2
(Continuación)
O : 3 : 12 ;
10 : 2 : 20 ;
hei ght
[R , H]
meshg r i d (radius , hei ght) ;
vol ume
pi *R . A2 . *H
vol ume
1 . 0e+003 *
O 0 . 2 8 2 7 1.1 3 10 2.5447 4.5 2 3 9
O 0.3 3 93 1 . 3 5 72 3.0 5 3 6 5 . 42 8 7
O 0 . 3 9 5 8 1 . 5834 3 . 5626 6.3 3 3 5
O 0 . 4 5 2 4 1 . 8096 4.0 7 1 5 7 . 2 3 8 2
O 0 . 5089 2.03 5 8 4.5804 8 . 1430
O 0 . 5 6 5 5 2.2619 5 . 0894 9 . 04 7 8
=
=
=
=
=
E je r c i c io de pr á c ti c a
4.3
1 . zero s ( 3)
ans
=
O
O
O
O
O
O
O
O
O
2. zeros ( 3 , 4)
ans
=
O
O
O
O
O
O
O
O
O
O
O
O
3. ones ( 3 )
ans
1
1
1
=
1
1
1
1
1
1
4. ones ( 5 , 3 )
ans
=
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
5. ones (4,6)*pi
ans
3 . 1416
3 . 1416
3 . 1416
3 . 1416
=
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3.1416
3.1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 1416
3 . 14 16
http://jurgensoft.co.cc
6. x
[1.2 .3] ;
di ag(x)
ans =
1 O O
O 2 O
O O 3
7. x
x
=
=
magi c(10)
=
92
98
4
85
86
17
23
79
10
11
1
99
80
7
81 88
87 19
93 25
24 76
5 82
6 13
1 2 94
1 8 100
8
14
20
21
2
83
89
95
96
77
15
16
22
3
9
90
91
97
78
84
67
73
54
60
61
42
48
29
35
36
74
55
56
62
68
49
30
31
37
43
51
57
63
69
75
26
32
38
44
50
58
64
70
71
52
33
39
45
46
27
40
41
47
28
34
65
66
72
53
59
30
38
46
a. d i ag(x)
ans
92
=
80
88
21
9
62
61
42
59
b. d i ag(fl i pl r(x»
ans
40
=
64
63
90
89
13
12
c. sum(x)
ans
505 50S 505 505 505 505 S05 505 505 505
sum(x ' )
ans =
505 505 505 505 50S 505 SOS 505 50S 50S
sum(di ag(x) )
ans =
50S
sum(diag(fl i pl r(x» )
ans =
505
=
11
Soluciones a ejercicios de práctica 547
548 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e p r á c t i c a S.l
L cl ear , cl c
x=O : O . 1* p i :2*pi ;
y=si n(x) ;
pl ot(x , y)
Cun a sinusOidal
2. t i tl e( ' Curva s i nusoi dal ' )
xl abel ( ' val ores x ' )
yl abel ( ' sen(x) ' )
,alores x
3. figure(2)
yl=si n (x) ;
y2=cos(x) ;
pl ot(x , y l , x , y2)
t i tl e( ' Gráfi cas
seno y coseno ' )
xlabel ( ' val ores x ' )
yl abel ( ' val ores y ' )
•
4. figureO)
pl ot(x , y l , ' -- r ' ,
x , y2, ' : g ' )
t i tl e(' Gráfi cas
seno y coseno ' )
xl abel ( ' val ores x ' )
yl abel ( ' val ores y')
http://jurgensoft.co.cc
5.
l egend ( ' sen (x)', ' cos (x) ' )
valores x
GráSe::s seno y coseno
6. axi s ( [- 1,2�'pÍ+l,
-1. 5 ,1 . 5])
'valores.>;
7 . fi gure (4)
a=cos (x);
pl ot (a)
Se crea una gráfica de línea,
con a graficada contra el
número índice de vector.
0.8
Soluciones a ejercicios de práctica 549
550
Apéndice B
http://jurgensoft.co.cc
E j er c i c io de p r á c tic a
5.2
Tangente(x)
1. subpl ot(2 , 1 , 1)
<t--?
::�
2. x=- 1 . 5 : O . 1 : 1 . 5 ;
y=tan(x) ;
pl ot(x , y)
3. titl e ('Tangente (x) ')
xl abel ('val or x')
yl abel ('val or y')
4. subpl ot(2 , l , 2)
y=s i nh (x) ;
pl ot (x , y)
-1.5
-1
-0.5
-1.5
-1
-0.5
valor x
o
valor x
1.5
0.5
0.5
1
1.5
5. t i tl e ( ' Seno
h i perból i co de x')
xl abel ('val or x')
yl abel ('val or y ' )
6.
fi gure (2)
subpl ot (1 , 2 , l)
pl o t (x , y)
t i tl e ( ' Tangente(x) ' )
xl abel ('val or x')
yl abel ('val or y')
subpl ot (1 , 2 , 2)
y=s i nh (x) ;
pl ot(x , y)
titl e ( ' Seno
h i perból i co de x')
xl abel ( ' val or x')
yl abel ('val or y')
Tangente(x)
Seno hiperbólico de x
2
-1
-2
-3---�--2
o
valor x
-3 L--��--2
o
valor x
http://jurgensoft.co.cc
E i e r c i c io d e p r á c tic a
Soluciones a ejercicios de práctica SS1
5.3
90
1 . theta = O : O . Ol*pi : 2*pi ;
r = 5 *cos (4*theta) ;
pol ar(theta , r)
90
2. hol d on
r=4*cos (6*theta) ;
pol ar(theta , r)
t i tl e ( ' Poder fl oral ' )
5
180
270
90
3 . fi gure (2)
10
r=S - S* s i n (theta) ;
pol ar(theta , r)
180
¡.. , .., ·!· .. ··+7"'·'''..·.." "':-,!�¡:", "+"
ü
27ü
(Continúa)
552
Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o de p r á c tic a
5.3
(Continuación)
90
4. fi gure O)
r = sqr t ( SA2 *cos (2 *theta) ) ;
pol ar(theta3 , r)
1 go
¡····_·¡·····+······,·······¡····:x ...+ ·····{········¡-·····;·······I
270
90
5. fi gure(4)
theta = pi f2:4fS*pi : 4 . 8*pi;
r=one s (l , 6) ;
pol ar(theta , r)
180
¡· ·····¡······-;"":+f····,···)�,é:···+···\·i··/+· ···+···...
270
E je r c i c io de pr á c ti c a
5 .4
1 . fi gure(l)
x=-l:O . l:l ;
y=S *x+3 ;
subpl ot (2 , 2 , 1)
pl ot (x , y)
t i tl e ( ' Coordenadas rectangul ares ' )
yl abel ( ' ej e y ' )
gri d on
subpl ot (2 , 2 , 2)
sem i l ogx(x , y)
t i tl e ( ' S i stema coordenado sem i l og x ' )
gri d on
subpl ot(2 , 2 , 3)
sem i l ogy(x , y)
t i tl e ( ' Si stema coordenado sem i l og y ' )
yl abel ( ' ej e y ' )
xl abel ( ' ej e x ' )
http://jurgensoft.co.cc
Soluciones o ejercicios de práctica 553
gri d on
subpl ot ( 2 , 2 , 4)
l ogl og (x , y)
t i tl e ( ' Gráfi ca l og ' )
xl abel ( ' ej e x ' )
gri d on
Coordenadas rectangulares
Sistema coordenado semilog x
8r-------�
6
"
-'"
-------- , --------- , ---------:
4
2
o
-2 �--�--�----�
-1
o
-0_5
0.5
Sistema coordenado senúlog y
-0.5
o
eje x
0.5
Gráfica log
eje x
2. fi gure (2)
x=-1 : 0 . 1 : 1¡
y=3* x . Al ;
subpl ot ( 2 , 2 , l)
pl o t (x , y)
t i tl e ( ' Coordenadas rectangul ares ' )
yl abel ( ' ej e y ' )
gri d on
subpl o t ( 2 , 2 , 2)
sem i l ogx(x , y)
t i tl e ( ' Si stema coordenado sem i l og x ' )
gri d on
subpl o t ( 2 , 2 , 3)
sem i l ogy(x , y)
t i tl e ( ' Si stema coordenado sem i l og y ' )
yl abel ( ' ej e y ' )
xl abel ( ' ej e x ' )
gri d on
subpl o t ( 2 , 2 , 4)
l ogl og (x , y)
ti tl e( ' Gráfi ca l og ' )
xl abel ( ' ej e x ' )
gri d on
(Continúa)
554 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e prá c t i c a
5 .4
(Continuación)
Sistema coordenado semilog x
Coordenadas rectangulares
'"
"
'ir
101
10 1
10°
10 °
1
10 -
10-'
10-2
-1
-0.5
eje x
10-2
1
10-
3. figure( 3 )
x=- 1 : 0 . 1 : 1j
y=lZ*exp(x+Z) j
subpl ot (Z,2 , 1)
pl o t (x , y)
t i tl e ('Coordenadas rectangul ares ' )
yl abel ('eje y')
gri d on
subpl ot ( Z , 2 , Z)
semi l ogx(x , y)
t i tl e ('Si stema coordenado sem i l og x ' )
gri d on
subpl o t ( Z , 2 , 3 )
semil ogy(x , y)
t i t l e ('Si st ema coordenado sem i l og y')
yl abel ('eje y')
xl abel ('eje x')
gri d on
subpl ot (Z,2 , 4)
l ogl og (x , y)
t i tl e ('Gráfi ca Log ' )
xl abel ('e j e x ' )
gri d on
Gráfica Log
eje x
1 0°
http://jurgensoft.co.cc
Coordenadas rectangulares
Sistema coordenado semilog x
Sistema coordenado semilog y
-0.5
o
eje x
0.5
GráficaLog
1 �----�--����10
1
0
10
10
eje x
4. fi gure(4)
x=-l : O . Ol : lj
y=l./x ;
subpl ot (2,2,l)
pl ot (x , y)
t i tl e ( ' Coordenadas rectangul ares ' )
yl abel ( ' ej e y ' )
gri d on
subpl ot (2,2,2)
sem i l ogx(x,y)
t i tl e ( ' Si stema coordenado semi l og x ' )
grid on
subpl o t ( 2,2,3)
sem i l ogy(x,y)
t i tl e ( ' S i s tema coordenado semi l og y')
yl abel ( ' ej e y ' )
xl abel ( ' ej e x ' )
gri d on
subpl ot(2,2,4)
l ogl og (x,y)
t i tl e ( ' Gráfica Log ' )
xl abel ( ' ej e x ' )
grid on
(Continúa)
Soluciones a ejercicios de práctica 555
556 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o de prác t i c a
5 .4
(Continuación)
Sistema coordenado semilog x
Coordenadas rectangulares
l00r-�����
80
50 --------,---------
60
40
-50 -------- -..··- - - - - � - - - .. - - - - - - - - -,.... - - - - - - - - ..
·
,
,
·
20
.
.
.
.
-100 '---�'�--'--�.--�
-0.5
0.5
-1
O
Sistema coordenado semilog
y
10° '--�--���
10°
10-1
10-2
eje x
eje x
E i e rc i c i o d e p r á c t i c a
5.5
1. fpl ot ( ' 5 *tA2 ' , [- 3,+3D
t i tl e ( ' 5 *tA2 ' )
xl abel ( ' ej e x ' )
yl abel ( ' ej e y ' )
-2
2. fpl ot ( ' S * sen (t)A2 +
t*cos (t)A2 ' , [ - 2 *pi , 2* pi ] )
t i tl e( ' S *sen (t)A2 +
t*cos (t)A2 ' )
xl abel ( ' ej e x ' )
yl abel ( ' ej e y ' )
eje
x
5*sen(t)2+ t*COS(t)2
10 r-�-------�- ,
eje x
http://jurgensoft.co.cc
3. fpl ot (' t*exp (t) , , [0 , 10] )
x
t i t l e ('t*exp (t) ' )
xl abel ( ' ej e x ' )
yl abel ( ' ej e y')
Soluciones o ejercicios de práctico 557
lO-"
eje x
4. fpl o t ('l og (t)+
sen ( t) I , [ O , pi ] )
t i tl e ( ' l og(t)+sen(t)')
xl abel ( ' ej e x')
yl abel ('ej e y')
eje A
E je r c i c io de pr á c ti c a
2
6. 1
Almacene estas funciones como archivos-m separados. El nombre de la función
debe ser el mismo que el nombre del archivo-m.
1.
function output = quad(x)
output = x . A2 ;
2. functi on output=one_over(x)
output = exp ( l./x) ¡
3. function output
s i n_x_squared(x)
output = s i n (x . A2);
=
4. functi on resu l t = i n_to_ft(x)
resul t = x . /12 ¡
5.
funct i on resul t=cal _to_j oul es (x)
resul t = 4 . 2 . *x;
6. function output = Watts_to_Btu_per_hour(x)
output = x . *3 . 41 2 ;
7. function output = meters_to_m i l es (x)
output
=
x . /lOOO . *.62 14;
mph_to_fps (x)
output = x . *5 280/3600¡
8. function output
=
558 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o de pr á c tic a
6. 2
Almacene estas funciones como archivos-m separados. El nombre de la función
debe ser el mismo que el nombre del archivo-m.
1. function output = z l (x , y)
% suma de x y y
% l as d i mensiones de l a matr i z deben concordar
output = x+y ;
= z 2 (a , b , c)
% encuentra a . *b . Ac
% l as d i mens i ones de l a matri z deben concordar
output = a . *b . Ac;
2. functi on output
3. function output = z 3 (w , x , y)
% encuentra w . *exp(x . /y)
% l as d i mensiones de l a matri z deben concordar
output = w . *exp(x . /y) ;
4.
5.
funct i on output = z4 (p , t)
% encuentra p . /s i n (t)
% l as d i mensi ones de l a matri z deben concordar
output = p./s i n (t) ;
funct i on [a , b]=f5 (x)
a = cos (x) ;
b = s i n (x) ;
6. functi on [a , b]
a
b
=
=
=
5 . *x . A2 + 2 ;
sqrt( 5 . *x . A2
7 . function [a , b]
exp(x) ;
a
b = l og (x) ;
f6(x)
+
2) ;
f7 (x)
=
8. function [a , b]
a
b
=
=
9. function [a , b]
a
b
=
=
f8(x , y)
x+y ;
x-y ;
y . *exp(x) ;
x . *exp (y) ;
f9(x , y)
http://jurgensoft.co.cc
E j er c i cio de pr á c ti c a
7. 1
1. b
i nput ( ' Ingrese l a l ongi tud de l a base del
triángul o : ' ) ;
h
i nput ( ' Ingrese l a al tura del tri ángul o : ' ) ;
Area = 1/2*b*h
Cuando este archivo corre, genera la siguiente interacción en la
ventana de comandos:
Enter the l ength of the base of the tri angl e : 5
Enter the height of the tri angl e : 4
Area =
10
= i nput ( ' Ingrese el radio del c i l i ndro :
') ;
h
i nput ( ' Ingrese l a al tura del c i l i ndro: ' ) ;
Vol ume = p i *r . A2*h
2. r
Cuando este archivo corre, genera l a siguiente interacción en la
ventana de comandos:
Enter the rad i u s of the cyl i nder : 2
Enter the hei ght of the cyl i nder : 3
Vol ume =
3 7.6991
= i nput ( ' Ingrese un val or de n :
')
vector = O : n
3. n
Cuando este archivo corre, genera la siguiente interacción en la
ventana de comandos:
Enter a val ue of n : 3
n =
3
vector =
0 1 2 3
= i nput ( ' Ingrese el val or i n i ci al :
');
b = i nput ( ' Ingrese el val or fi nal : ) ;
c
i nput ( ' Ingrese el espaci ami ento del vector : ' ) ;
vector = a : c : b
4. a
'
=
Cuando este archivo corre, genera la siguiente interacción en la
ventana de comandos:
Enter the starti ng val ue : O
Enter the endi ng val ue: 6
Enter the vector spac i ng : 2
vector =
O 2 4 6
Soluciones a ejercicios de práctica 559
560
Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e p r á c t i c o 7 .2
1 . d i sp( ' Tabl a de conversi ón de pul gadas a pies ' )
2. di sp( '
Pul gadas
Pi es ' )
3 . i nches :: O : 10 : 1 2 0;
feet :: i nches . f1 2 ;
tabl e = [i nche s ; feet] ;
fpri ntf( ' %8 . 0f %8 . 2 f \n ' , tabl e)
El despliegue resultante en la ventana de comandos es
Tabla de conversión de pulgadas a pies
Pulgadas
O
10
20
30
Pies
0.00
0.83
1 .67
40
2.50
3.33
50
60
4. 1 7
5.00
70
80
5.83
6.67
7.50
90
100
1 10
1 20
8.33
9. 1 7
1 0.00
E j e r c i c i o d e p r á c t i c a 8 .1
Use estos arreglos en los ejercícios.
x= [l 10 42 6
5 8 78 2 3
56 45 9 13
2 3 2 2 8 9] ;
y= [ 1 2 3; 4 10 1 2 ; 7 21 2 7] :
z= [10 22 5 13] ;
L el ements_x = fi nd(x>lO)
el ements-y = fi nd(y>10)
el ements_z = fi nd(z>lO)
2. [rows_x , col s_x] =fi nd(x>10)
[rows_y , col s-y] =fi nd(y>10)
[rows_z , col s_z] =fi nd(z>10)
3. x(el ements_x)
y(el ement LY)
z(el ements_z)
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 56 1
4. el ements_x = find (x>10 & x< 40)
el ements-y = find (y>10 & y< 40)
el ements_z = find(z> 10 & z< 40)
5.
[ rows_x , col s_x] =find (x>10 & x<40)
[ rows_y , col s_y] =fi nd (y>10 & y<40)
[ rows_z , col s_z] =find(z>10 & z<40)
6.
x (el ements_x)
y (el ements_y)
z (el ements_z)
7. el ements_x = fi n d « x>O & x<10)
el ements-y = fi nd « y>O & y<10)
el ements_z = fi nd« z>O & z<10)
(x>70 & x<80»
(y>70 & y<80»
(z>70 & z<80»
8. l ength_x = l ength( f i n d « x>O & x<lO)
l ength_y = l engt h (find« y>O & y<10)
l ength_z = l engt h (find« z>O & z<lO)
E ie r c i c io de p r á c t i c a
l.
(x>70 & x<80» )
(y>70 & y<80» )
(z>70 & z<80» )
8.2
func t i on output = d r i nk (x)
i f x>= 2 1
output = ' Puede beber ' ;
el se
output
' Espere hasta ser mayor ' ;
end
Pruebe su función con lo
drink(22)
d r i n k ( 18)
2. funct i on output = tal l (x)
i f x>=48
output= ' Puede subi r ' ;
el se
output = ' Es muy bajo ' ;
end
Pruebe su función con lo siguiente:
tal l ( 50)
tal l (46)
3. f�nct i on output = spec (x)
i f x>=5 . 3 & x<= 5 . 5
output
' dentro de l as espe ' ;
el se
output = ' fuera de l as espe ' ;
end
Pruebe su función con lo siguiente:
spec ( 5 . 6)
spec ( 5 . 45)
spec ( 5 . 2)
(Continúa)
562 Apéndice B
http://jurgensoft.co.cc
E j e r c i c io d e pr á c t i c a
8.2
(Continuación)
4. function output = metri c_spec (x)
i f x>= S . 3/2 . S4 & x<=5 . 5/2 . S4
output
'dentro de l as espe' ;
el se
output
, fuera de l as espe' ;
end
Pruebe su función con lo siguiente:
metri c_spec ( 2 )
metri c_spec( 2 . 2)
metri c_spec ( 2 . 4)
5. function output = fl i ght (x)
i f x>=O & x<=lOO
output='pri mera etapa' ;
el sei f x<=1 70
output = 'segunda etapa' ;
el sei f x<260
output
'tercera etapa' ;
el se
output = 'ca í da l i bre' ;
end
Pruebe su función con lo �'", ...U\.dLl'''.
fl i gh t (50)
fl i ght(llO)
fl i gh t ( 200)
fl i gh t OOO)
E j e rc i c io d e prá c t i c a
1.
8.3
year = i nput ('Ingrese el nombre de su año
en l a escuel a : ','s ' ) ;
swi tch year
case ' primero'
day='lunes' ;
case ' segundo '
day = ' Martes I ;
case 'tercero'
day = 'Mi ércol es' ;
case 'cuarto'
day = 'Jueves ;
otherwise
day = 'No sé el año' ;
end
di s p ( ['Sus fi nal es son el ' , day] )
I
2. di s p ('¿En qué año está en l a escuel a?')
d i s p ('Use el menú para hacer su sel ecc i ón ')
choice = menu ( ' Año en l a escuel a' , 'pri mero' , 'segundo' ,
'tercero' , 'cuarto') ;
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 563
switch choi ce
case 1
day = ' Lunes ' ;
case 2
day = ' Martes ' ;
case 3
day = ' Mi ércol es ' ;
case 4
day = ' Jueves ' ;
end
d i s p ( [ ' Su s fi nal es son el ' , day] )
3. num = i nput ( ' ¿Cuántas barras de dul ce qui ere? ' ) ;
swi tch num
case 1
bi l l
0 . 75 ;
case 2
bi l l
1 . 25 ;
case 3
bi l l
1 . 65 ;
otherwi se
bi l l = 1 . 6 5 + (num- 3 ) *0 . 30 ;
end
fpri ntf( ' Su importe es %5 . 2 f \n ' , bi l l )
E j e r c i c io de pr á c ti c a
8 .4
1. i nches = 0 : 3 : 24 ;
for k=l : l engt h ( i nches)
feet(k) = i nches (k) j12 ;
end
tabl e= [i nches ' , pi es ' ]
2. x = [ 45 , 2 3 , 1 7 , 34 , 8 5 , 3 3] ;
count=O ;
for k=l : l ength (x)
i f x (k» 30
count = count+1 ;
end
end
fpri ntf( ' Exi sten %4 . 0f val ores mayores que 30 \n ' , count)
3 . num = l ength (find(x>30) ) ;
fpri ntf( ' Exi sten %4 . 0f val ores mayores que 30 \n ' , num)
4.
total = O ;
for k=l : l ength (x)
total = total + x ( k) ;
end
d i s p ( ' El total es : ' )
d i s p (total )
sum (x)
564
Apéndice B
http://jurgensoft.co.cc
E j e r c i c io de pr á c ti c a
8.5
1 . i nches = 0 : 3 : 24 ;
k=l ;
whi l e k<=l ength (i nches)
feet(k) = i nches (k)jI 2 ;
k=k+l ;
end
d i sp ( ' Pul gadas P i es ' ) ;
fpri ntf ( ' %8 . 0f %8 . 2 f \n ' , [i nches ; feet] )
2. x = [ 45 , 2 3 , 1 7 , 34 , 8 5 , 3 3] ;
k=l ;
count = O ;
whi l e k<=l ength (x)
i f x ( k» =30 ;
count = count + 1 ;
end
k=k+ l ;
end
fpri ntf( ' Exi sten %4 . 0f val ores mayores que
30 \n ' , count)
3. count = l ength ( f i n d (x>30))
4. k=l ;
total = O ;
whi l e k<=l ength (x)
total = total + x ( k) ;
k=k+l ;
end
di sp(total )
sum (x)
E je r c i c io de pr á c tic a
9. 1
1 . A = [ 1 2 3 4]
B = [ 12 20 1 5 7]
dot (A , B)
2. sum (A . *B)
3. pri ce= [0 . 99 , 1 . 49 , 2 . 50 , 0 . 99 , 1 . 29] ;
num = [4 , 3 , 1 , 2 , 2 ] ;
total =dot (pr i ce , num)
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica
E j e r c i c i o d e p r á c t i c a 9 .2
1. A= [ 2 S; 2 9; 6 S] ;
B= [ 2 5; 2 9; 6 S] ;
% É stos no se pueden mul tipl icar porque el número de
% col umnas en A no es igual al número de fil as en B
2. A= [ 2 S;
2 9; 6 5] ;
B= [l 3 12; 5 2 9] ;
% Dado que A es una matriz 3 x 2 y B es una matriz 2 x 3
% se pueden mul tipl icar
A*B
%Sin embargo , A*B no es igual a B*A
B*A
3. A= [ 5 1 9;
7 2 2];
B = [ 8 S; 4 2 ; 8 9] ;
% Dado que A es una matriz 2 x 3 y B es una matriz 3 x 2 ,
% se pueden mul t ipl icar
A*B
%Sin embargo , A*B no es igual a B*A
B*A
4. A= [ l 9 8 ; 8 4 7;
2 S 3] ;
B= [7; 1 ; S]
% Dado que A es una mat riz 3 x 3 y B es una mat riz 3 x 1 ,
% se pueden mul tipl icar
A*B
% Sin embargo , B*A no funcionará
Ejercicio de práctica 9.3
1 . a. a=magic(3)
inv (magic(3»
magic(3)A - 1
b. b=magic(4)
inv(b)
bA- 1
c. c=magic(S)
inv(magic(S»
magic(5) A- 1
2 . det(a)
det (b)
det (c)
3. A= [l 2 3 ; 2 4 6; 3 6 9]
det (A)
inv(A)
%Note que l as t res l í neas sól o son múl tip l os uno del
%otro y por tanto no representan ecuaciones
independien tes
565
566 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e p r á c t i c a 10. 1
1. A = [1 , 4 , 6;
3 , 15 , 24; 2 , 3 , 4] ;
B=singl e (A)
C=int8 (A)
D=uint 8 (A)
2 . E = A+B
% El resul tado es un a rregl o de precisión sen cil l a
3. x=int8(1)
y=int8(3)
resul t l=x . /y
% Este cál cul o regresa el entero O
x=int8(2)
resul t2=x . /y
% Este cál cul o regresa el entero 1; parece
% que MATLAB redondea l a respuesta
4. intmax('in tS ' )
intmax( ' intl6 ' )
intmax ( ' int 3 2 ' )
intmax( ' int64 ' )
intmax( ' uint8 ' )
intmax( ' u intl6 ' )
intmax( ' uint 32 ' )
intmax( ' uint64 ' )
5 . intmin ( ' int8 ' )
intmin ( ' intl6 ' )
intmin ( ' in t 3 2 ' )
intmin ( ' int64 ' )
intmin ( ' uint8 ' )
intmin ( ' uintl6 ' )
intmin( ' uint32 ' )
intmin ( ' uint64 ' )
•
E j e rc i c i o d e p rá c t i c a 10 . 2
1 . name = ' Hol l y '
2. G=doubl e ( ' g ' )
fprin t f ( ' El equival ente decimal de l a letra g e s %5 . 0f
\ n ' , G)
3. m= ' MATLA B '
M=char (doubl e (m) - 3 2 )
http://jurgensoft.co.cc
E j e r c i c io d e p r á c t i c a
Soluciones a ejercicios de práctica 567
1 0. 3
1. a=mag ; c O )
b=zero s ( 3 )
c=ones(3)
x C : , : , l) =a
x C : , : . 2 ) =b
x C : , : , 3) =c
2. x O , 2 , 1)
3 . x (2 , 3 , : )
4.
xC : , 3 , : )
E j e r c i c io d e p r á c t i c a
1.
1 0.4
names=char ( ' Mercu r ; o , , ' Venu s ' , ' Ti er ra ' , ' Marte ' , ' Jupi te r ' ,
' Saturno ' , ' Urano ' , ' Neptuno ' , ' Pl utón ' )
2. R= ' rocky ' ;
G= ' gas gi ants ' ;
type=cha r (R , R , R , R , G , G , G , G , R)
3 . space = [ '
'
; '
'
;
1
'
;
1
';' ';'
' .,
r
.
.'
,
' ,.
r
'] ;
4. tab1 e = [names , space , type]
5.
%Estos datos se encontraron en
% http : //sci encepark . etacude . com/astronomy/pl uto . php
%Datos s i m i l ares se encuentran en muchos websi tes
mercury= 3 . 303e2 3 ; % kg
venus = 4 . 86ge24 ; % kg
earth = 5 . 976e2 4 ; % kg
mars = 6 . 42 1e2 3 ; % kg
j u p i ter=1 . ge2 7 ; % kg
saturn = S . 6ge2 6 ; % kg
uranus = 8 . 686e2 5 ; % kg
neptune = 1 . 024e26 ; % kg
pl uto = 1 . 2 7e 2 2 % kg
mass = [mercu ry , venus . earth , mars , j up i t e r ,
saturn , uranu s , neptune , pl uto] , ;
newtabl e= [tabl e , space , num2s t r (mass ) ]
568 Apéndice B
http://jurgensoft.co.cc
E jer c i c io de p r á c ti c o
1 . syms x a b
1 1 . 1
e
%or
d==sym( ' d ' ) %etc
d =
d
2.
exl
xAZ - l
ex1
xAZ - l
exZ = (X+l) AZ
exZ =
(X+l)AZ
ex3 = a*xAZ - l
ex3 =
a*xA l - l
a*xAZ + b * x + c
ex4
ex4 =
a*xAZ+b*x+c
ex5 = a*xA3 + b*xAZ + c*x + d
ex5 =
a*xA3+b*xAZ+c*x+d
ex6 = s i n (x)
ex6
s i n (x)
:=
:=
3. EXl
•
sym ( ' XAZ - 1 ' )
EXl
XAZ - 1
EXl
sym ( ' (X +l)Al ' )
EXl
(X +l)AZ
EX3 = sym ( ' A* X Al
1 ')
EX3
A*X Al - 1
EX4 = sym ( ' A*X Al + B*X + C ' )
EX4 ==
A*X Al + B*X + e
EX5 = sym( ' A* X A3 + B*X Al + C*X + o ' )
EX5 =
A*X A3 + B*X AZ + C*X + o
EX6 = sym ( ' s i n (X) ' )
EX6 =
s i n (X)
4. eql= sym ( ' xAl=l ' )
eql =
xAZ=l
eql= sym ( ' (X+l) AZ=O ' )
eql =
(x+l) AZ=O
http://jurgensoft.co.cc
Sol uciones a ejercicios de práctica 569
eq3= sym ( ' a*xA2=1 ' )
eq3 =
a*xA2= 1
eq4 = sym( ' a* xA2 + b * x + c=O ' )
eq4 =
a*xA2 + b*x + c=O
eq 5 = sym( ' a*xA3 + b*xA2 + c*x + d=O ' )
eq5 =
a*xA3 + b*xA2 + c*x + d=O
eq6 = sym( ' sin(x)=O ')
eq6 =
sin(x)=O
5 . EQl = sym(' XAZ = 1 ' )
EQl =
XA2 = 1
EQ2 = sym ( ' (X +1) AZ=O ' )
EQ2 =
(X +1) A2=O
EQ3 = sym( ' A*X A2 =1 ' )
EQ3 =
A*X A2 =1
EQ4 = sym ( ' A*X A2 + B*X + C = O ' )
EQ4 =
A*X A2 + B*X + C = O
EQ5 = sym ( ' A*X A3 + B*X A2 + C*X + O = O ' )
EQ5 =
A*X A3 + B*X A2 + C*X + D = O
EQ6 = sym ( ' sin(X) = O ' )
EQ6 =
sin(X) = O
E i e r c i c i o d e p r á c t i c a 11.2
1 . yl=exl*ex2
yl =
(xAZ - l) * (x+l ) A2
2. y2=exl/ex2
yZ =
(xA2-1)/(x+l) A2
3. [num1 , denlJ =numden(yl)
numl =
(xA2-1) * (x+l ) AZ
den l =
1
(Continúa)
570 Apéndice B
http://jurgensoft.co.cc
E j e r ci c i o d e pr á c ti c a
1 1 .2
(Continuación)
[num2 , den2] =numden (y2)
nurn2 =
xAZ - l
den2 =
(X+l)A2
4.
Yl=EXl*EX2
Yl =
(XA2 - 1 ) * (X+l) A2
5. Y2=EXljEX2
Y2 =
(XA 2 - 1 ) j (X+ I ) A2
6. [NUMI , DENl] =nurnden (Yl)
NUMl =
(XA 2 - 1 ) * (X+I)A2
DENl =
1
[NUM 2 , DEN2] =numden (Y2)
NUM2 =
XA2- 1
DEN2 =
(X+l)A2
7. %nurnden ( EQ4)
%La fun c i ón nurnden no se apl i ca a ecuac i ones ,
%sól 0 a expresiones
8. a. facto r(yl)
ans =
(x- 1 ) * (x+I) A 3
expand (yl)
ans =
xA4+2*xA3- 2 *x-l
col 1 ect (yl)
ans =
xA4+2*xA 3 -2 * x - l
b . factor(y2)
ans =
(x-l)j(x+l)
expan d (y2)
ans =
lj(x+l)A2*xA 2 - 1j (x+l) A 2
col 1 ect (y2)
ans =
(xA2 - l ) j (x+l)A 2
c.
factor (Yl)
ans =
(X- 1) * (X+I)A3
expand(Yl)
http://jurgensoft.co.cc
ans :::
XA4+2*XA3 - 2 " X - l
col l ect (Y1)
ans :::
XA4+2*XA3-2 " X- l
d. factor (Y2)
ans :::
(X-l)j(X+l)
expand (Y2)
ans
lj(X+l) A2*XA2- 1j(X+l)A2
col l ect (Y2)
ans
(XA 2 - 1 ) j (X+l)A2
==
=
9. factor (exl)
ans
(x- l) * (x+l)
expand(exl)
ans
xA2 - 1
col l ect (exl)
ans
xA2 - 1
factor (eql)
ans
xA2
1
expand (eql)
ans =
xA2 = 1
col l ect (eql)
ans
XAZ
1
%
factor (ex2)
ans
(x+l)A2
expand(ex2)
ans :::
xA2+2 *x+l
col 1 ect (ex2)
ans :::
xAZ+2 " x+ l
factor (eq2)
ans =
(x+l)AZ
O
expand(eq2)
ans
xA2+2 *x+l
O
col l ect (eq2)
ans
xA2+2*x+l
O
=
=
=
=
=
=
=
=
=
=
=
=
=
Soluciones a ejercicios de práctica
571
http://jurgensoft.co.cc
572 Apéndice B .
E jer c i c io de pr á c tic a
1 1 .3
1 . sol ve(exl)
ans
1
-1
sol ve(EXl)
ans
1
-1
sol ve (eql)
ans
1
-1
sol ve (EQl)
ans
1
-1
2.
sol ve (ex2)
ans
-1
-1
sol ve(EX2)
ans =
-1
-1
sol ve(eq2)
ans
-1
-1
sol ve (EQ2)
ans =
-1
-1
3 . a. A=sol ve(ex3 , x , a)
Warni ng : 1 equati ons i n 2 var i abl es .
A =
a : [lxl sym]
x : [lxl sym]
A.a
ans =
l/xA2
A.x
ans
x
%or
[my_a , my_x] =sol ve (ex3 , x , a)
Warn i ng : 1 equations i n 2 vari abl es .
my_a
l/xA2
=
http://jurgensoft.co.cc
my_x =
x
b. A=sol ve(eq3 , x , a)
Warning : l equations in 2 variabl es .
A
a : [Ixl sym]
x:
[lxl sym]
A.a
ans =
l/xA2
A.x
ans =
x
4. a. A=sol ve(EX3 , ' X ' , ' A ' )
Warning : l equations in 2 variabl es .
A =
A:
X:
[lxl sym]
[lxl sym]
A.A
ans =
I/XA2
A.X
ans
X
%o
[My_A , My_X]=sol ve(EX3 , ' X ' . ' A ' )
Warning : l equations in 2 variabl es .
My_A =
I/XA2
My_X =
X
b. A=so 1 ve (EQ3 , ' X ' , I A l )
Warning : l equations in 2 variabl es .
A =
A : [lxl sym]
X : [Ixl sym]
A.A
ans =
I/XA2
A.X
ans =
X
5 . a. A=sol ve(ex4 , x , a)
Warning : l equations in 2 variabl es .
A =
a : [Ixl sym]
x : [lxl sym]
A.a
(Continúa)
Soluciones a ejercicios de pr6ctica 513
574 Apéndice B
http://jurgensoft.co.cc
E i e r c i c i o d e p r á e t i c a 1 1 3 (Continuación)
•
ans
- (b*x+c)/xA2
A.x
ans
x
%o
[my_a , rny_x] =sol ve(ex4 , x , a)
Warning : l equations in 2 variabl es .
my_a =
-(b*x+c)/xA2
rny_x =
x
%b
b. A=sol ve(eq4 , x , a)
Warning : l equations in 2 variabl es .
A =
a : [Ixl sym]
x : [Ixl sym]
A.a
ans =
- (b*x+c)/xA2
A.x
ans =
x
6.
a. A=sol ve(EX4 , ' X ' , ' A ' )
Warning : l equations in 2 variabl es .
A =
A : [IxI sym]
X : [1x1 sym]
•
A.A
ans =
-(B*X+C) /XA2
A.X
ans
X
%o
[My_A , My_X] =sol ve(EX4 , ' X ' , ' A ' )
Warning : I equations in 2 variabl es .
My_A =
-(8*X+C)/XA2
My-X =
X
b. A=sol ve(EQ4 , ' X ' , ' A ' )
Warning : l equations in 2 variabl es .
A =
A : [lxl sym]
X : [lxl sym]
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 575
A.A
ans
- (B'�X+C) /XA2
A.X
ans
X
=
7. A=sol ve(ex5 , x)
A
=
1/6/a* (36*c" b*a - lOS" d*aA2 - S " bA3+ 12 ,', 3 A (1/2) " (4 " cA3" a-cA2 *bA 2 lS*c*b*a*d+2 7 *dA2*aA2+4*d*bA3 ) A ( 1/ 2 ) * a) A (1/3) - 2/3 * (3 *c*abA2) /a/ (36"'c"'b* a - 10S*d" aA2 -S " bA3+ 12'" 3A ( 1/2 ) " (4 " cA3 " a -cA2" bA2 l S *c*b*a" d+2 7" dA2 * aA2+4 " d*bA3) A ( 1/2) " a) A (1/3) - 1/3 " b/a
- 1/12/a* (36*c*b*a- l0S*d*aA2-S*bA3+12* 3 A ( 1/2) * (4*cA3*a- cA2*bA2lS*c*b*a*d+2 7*dA2*aA2+4*d*bA3 ) A O/2) *a) A 0/3) +1/3" (3*c" abA2 ) /a/ (36*c*b*a - lOS*d*aA 2 -S*bA3+ 1 2 * 3A ( 1/2) " (4 " cAFa-cA2" bA2lS*c*b*a*d+2 7*dA2 *aA2+4*d*bA3 ) A (1/2 ) * a ) A (1/3 ) 1/3*b/a+l/2 " i" 3A (1/2) * ( 1/6/a" (36" c" b*a- lOS " d*aA2S*bA3+12* 3 A ( 1/2) * (4*cA3*a-cA2*bA2lS" c" b" a*d+2 7" dA2" aA2+4*d*bA3) A (1/2) "'a) A 0/3) +2/3" (3 " c*a ­
bA2) /a/ (36" c" b*a- l0S*d*aA2 -S " bA3+l2" 3 A (1/2) i, (4 i'cA3 i'a -cA2" bA2 lS " c" b*a*d+2 7*dA2*aA2+4 *d" bA3) A (1/2) " a) A 0/3 ) )
- 1/12/a* (36"'c*b"'a - lOS*d" aA2 - S *bA3 + 1 2 " 3A ( 1/2) " (4" cA3*a - cA 2 " bA2 lS*c*b*a*d+27*dA2*aA2+4*d*bA 3 ) A (1/2) *a) A ( 1/3 ) + 1/3 * (3*c*abA2) /a/ (36" c" b" a- l0S*d*aA2 -S"'bA3+12" 3A (1/2) * (4 *cA3 *a -cA2*bA2 lS" c" b*a" d+27*dA2*aA2+4*d*bA 3 ) A (1/2) *a) A O/3) - 1/3" b/a1/2" i", 3A ( 1/2) * ( 1/6/a'" (36" c" b*a- l0S" d"'aA2 -S"'bA3+12 '" 3A ( 1/2) i,
(4*cA3 *a-cA2*bA2- lS*c*b*a*d+ 2 7 *dA2*aA2+4*d*bA3) A (1/2 ) *a) A ( 1/3)
+2/3 '" (3 i'c" a-bA2) /a/ (36 "' c" b "' a - lOS" d" aA2 - S " bA3+12"'3A 0/2 ) "
(4*cA3 *a-cA2*bA2 - lS *c*b*a*d+2 7*dA2*aA2+4*d*bA3 ) A (1/2 ) *a) A ( 1/3 ) )
% Cl aramente esto es demasi ado compl ej o para memori zar
8. sol ve(ex6)
ans =
O
sol ve (EX6)
ans =
O
sol ve (eq6)
ans =
O
sol ve(EQ6)
ans
O
http://jurgensoft.co.cc
576 Apéndice B
E j er c i c i o de p r á c t i c a
1 1 .4
1. A=sym ( ' xIl2 + 5 *y - 3 * zIl3= 1 5 ' )
A =
xll2 + 5*y - 3*zIl3=15
B=sym ( ' 4*x + yll2 -z = 10 ' )
B =
4*x + yA2 -z = 10
C=sym ( ' x + y + z = 1 5 ' )
C =
x + y + z =15
[X , Y , Z] =sol ve(A , B , C)
X =
1 1 . 5 602919201084188181499999091021 1 . 18348 166 3 79472 700063 5 3 7634033 6 * ;
10 . 2 1 7 2 5 3 72 789544608 3 5 82 44 7 7 3 19544 . 7 2 2 7 3 1 164814885 94 1 5 297821017854*;
1 6 . 8891 2 10186628017649342190 2 5 6 1 2 4 . 2 1 7 7 56 3 8 3 5 16864 76 5 79 70 52 3 110679* ;
16 . 8 89121018662801 7 64934219025612+4 . 21 7 7 5 6 3 8 3 5168647 6 5 797052311067
9* ;
10 . 21725 3 727895446083 58244 7 7 3 1 9 5 4+4 . 7227311648 1488 5941 529782101 7 8 5
4* ;
1 1 . 560291920108418818149999909102+ 1 1 . 183481663 79472700063 5 3 7 6 34 0 3 3
6* ;
Y
=
3 . 509400275238902063684 5 5 7 7121798+6 . 97 3288 3 32460366414 3 5 0 1 3 8972212
3*;
1 . 6407 2 5 3 627272400 3 9 1 7 8 3 3 4 5 506916+ 5 . 5 1 5 3 3 98 5 5176732792622418648899
0*;
. 8498743620 3 3 8 5 78971371077 3 7 12 8 5 5 + 7 . 8 1138693 7 4 5 16 53 5 7 7 7 1 73 6 5 122848
5*i
. 84987436203 3 8 5 789 7 13 7107 7 3 7 1 28 5 5 7 . 8 1 1 38693745 165 3 5 77 7 1 7 3 6 5 1 2 2848 5 * ;
1 . 6407 2 5 36 2 7 2 7 240039178334 5 5 069165 . 51 5 3 3 98 5 5 17 6 7 3 2 7926224186488990*;
3 . 5094002 7 5 2 38902063684 5 5 7 7 1 2 17986 . 97 3 2883324603664143 50138972 2 1 2 3 * ;
Z =
- . 69692195 3 4 7 32088183 4 5 5 76 2 12 814e1+4 . 210193 3 3 1 3 3436058628 5 2 3 7 36812 36* ;
3 . 14202090937 7 3 13 8 7 72 39 2 1 7 7 1 7 3 549. 79260869036184685 10926365471136*;
- 2 . 7389953806966 59662071326762 74083 . 5936305 5 3934788811920312811 7806*;
2 . - 738995 3806966596620713267627408+ 3 . 593630 5 5 39347888119203128 1 1 780
6* ;
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 577
3 . 142020909 3 7 7 3 138772392177173 549+ . 79260869036184685 10926 3 6 5 4 71136
*i
- . 696921 9534 73 2088183455762 12814e- l4 . 2 10 1 9 3 3 3 1 33436058628523 73681236*;
doubl e(X)
ans =
1 1 . 5603 - 1 1 . 1 8 3 5;
10 . 2 1 7 3 - 4 . 7 2 2 7 ;
16 . 8891 - 4 . 2 1 78;
16 . 8891 + 4 . 2 1 78;
10 . 21 7 3 + 4 . 7 2 2 7 ;
1 1 . 5603 + 1 1 . 1835;
doubl e CY)
ans =
3 . 5094 + 6 . 9 7 3 3 ;
1 . 6407 + 5 . 5153 ;
0 . 8499 + 7 . 8 1 14 ;
0 . 8499 - 7 . 8 1 14;
1 . 6407 - 5 . 5153;
3 . 5094 - 6 . 9733;
doubl e(Z)
ans =
- 0 . 0697 + 4 . 2102;
3 . 1420 - 0 . 7926;
- 2 . 7 3 90 - 3 . 5936;
- 2 . 7390 + 3 . 5936;
3 . 1420 + 0 . 7926;
-0 . 0697 - 4 . 2 102 ;
E i e rc i c i o d e p r á c t i c a 1 1 . 5
L eql
eql =
xA 2=1
subs Ceql , x , 4)
ans =
16 = 1
exl
exl =
xA2 - 1
subsCexl , x , 4)
ans =
15
EQl
(Continúa)
578
Apéndice B
http://jurgensoft.co.cc
E i e r c i c i o d e p r á c t i c a 1 1 . 5 (Continuación)
EQ1 =
XA2 = 1
subs(EQ1 , ' X ' , 4)
ans =
16 = 1
EXl
EX1 =
XA2 - 1
subs(EX1 , ' X ' , 4)
ans
15
% etc
=
2. v=O : 2: 10;
subs(ex1 , x , v)
ans =
-1 3 15 35 63 99
subs(EX1 , ' X ' , v)
ans =
-1 3 15 35 63 99
%subs(eq 1 , x , v)
%subs(EQ1 , ' X ' , v)
% No puede sustituir un vector en una ecuación
3. new_ex1=subs(ex1 , { a , b , c } , {3 , 4 , 5} )
new_ex1 =
xA2-1
subs(new_ex1 , x , 1 : 0 . 5 : 5)
ans =
Col umns 1 th rough 5
O 1 .2500 3 . 0000 5 .2500 8 . 0000
Col umns 6 through 9
1 1 .2500 1 5 . 0000 19 .2500 24 . 0000
new_EX1=subs(EX 1 , { ' A ' , ' B ' , ' C ' } , { 3 , 4 , 5} )
new_EX1 =
XA2-1
subs(new_EX1 , ' X ' , 1 : 0 . 5 : 5)
ans =
Col umns 1 th rough 5
O 1 .2500 3 . 0000 5 .2500 8 . 0000
Col umns 6 th rough 9
1 1 .2500 15. 0000 19 .2500 24 . 0000
%
new_eq1=subs(eq 1 , {a , b , c} , {3 , 4 , S} )
new_eq1 =
xA2 = 1
%subs(new_eq1 , x , 1 : 0 . 5 : 5) % no funcionará porque es una
%ecuación
new_EQ1=subs(EQ1 , { ' A ' . ' S ' ' C ' } , { 3 , 4 , 5} )
J
new_EQ1 =
XA2=1
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 579
Ejerc i c i o d e práctica 1 1 .6
1. ezpl ot (exl)
Problema 1
t i tl e ( ' Probl ema 1 ' )
xlabel ( ' X ' )
yl abel (' y ' )
40
30
20
10
O
-5
O
5
x
Problema 2
2. ezp 1 ot (EXl)
40
t i tl e ( ' Probl ema 2 ' )
xl abe 1 ( ' x ' )
yl abel ( ' y ' )
30
"" 20
10
O
o
-5
5
x
Problema 3
3. ezpl ot (ex2 , [- 10 , 10] )
t i tl e ( ' Probl ema 3 ' )
xlabel ( ' x ' )
yl abel ( ' y ' )
100
>,
o
x
10
Problema 4
4. ezpl ot (EX2 , [- 10 , 1O] )
t i tl e ( ' Problema 4 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
5
100
50
O
- 10
-5
O
x
10
(Continúa)
580 Apéndice B
http://jurgensoft.co.cc
E j e r c i c i o d e p r á c t i c a 1 1 . 6 (Continuación)
5 . Las ecuaciones con una sola variable tienen un solo valor válido de x; no
hay pares
x,
y.
6. ezpl ot (ex6)
Problema 6
t i tl e ( ' Probl ema 6 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
-1
-5
7. ezpl ot ( ' coS (x) ' )
O
x
5
Problema 7
t i tl e( ' Probl ema 7 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
>;
O
0. 5
-
-1
-5
O
X
Problema 8
8. ezpl ot ( ' xAZ-yA4= 5 ' )
t i t l e ( ' Problema 8 ' )
xl abel ( ' X ' )
yl abel ( ' y ' )
5
>;
O
•
-5
-5
O
x
Problema 9
9. ezpl ot ( ' sen (x) ' )
hol d on
ezpl ot ( ' coS (X) ' )
05
hol d off
t i tl e( ' Probl ema 9 ' ),.
O
xl abel ( ' x ' )
-0.5
yl abel ( ' y ' )
-1
-5
O
x
5
http://jurgensoft.co.cc
10. ezpl ot ( ' sen (t) ' ,
Soluciones a ejercicios d e práctica 58 1
Problema 10
3
' 3*cos (t) ' )
2
axi s equal
ti tl e ( ' Probl ema 10 ' )
xl abel ( ' x ' )
>.
o
yl abel ( ' y ' )
-
1
-2
-5
E j e r c i c io de p r á c ti c a
x
1 1 .7
Z=sym ( ' sen (sqrt
(XA2+YA2» ' )
Z =
s i n (sqrt (XA2+YA2»
1.
Problema 1
ezmes h (Z)
t i tl e ( ' Probl ema 1 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
Il
-1
-5
Problema 2
2. ezmeshc(Z)
t i tl e ( ' Probl ema 2 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
Problema 3
3. ezs u r f (Z)
ti tl e ( ' Probl ema 3 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
z1 abe1 ( ' z ' )
x
"
O
-[
(Continúa)
582 Apéndice B
http://jurgensoft.co.cc
Ejercicio de práctica
1 1 .7
(Continuación)
4. ezsur fc (Z)
t i tl e ( ' Probl ema 4 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
Problema 4
"
-1
,
5. ezcontour (Z)
-5
Problema 5
t i tl e ( ' Probl ema 5')
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
Problema 6
6. ezcontour f (Z)
t i tl e( ' Probl ema 6 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
5
'"'
o
-5
x
7. figure(7)
ezpol a r( ' x*sen( x) ' )
t i tl e ( ' Probl ema 7 ' )
r =
270
x sen(x)
x
http://jurgensoft.co.cc
8. t=sym ( ' t ' ) ;
Soluciones o ejercicios de práctico 583
Problema S
x = t;
= s i n (t) ;
z = cos (t) ;
ezpl ot3 (x , y , z , [O , 30] )
t i tl e ( ' Probl ema 8 ' )
xl abel ( ' x ' )
yl abel ( ' y ' )
zl abel ( ' z ' )
Y
Ejercicio de p rá ctica
30
1 1 .8
1 . d i ff ( ' xA 2+x+l ' )
ans =
2*x+l
di ff ( ' sen (x) ' )
ans =
cos(x) % 0 defi na x como s i mból i co
x=sym ( ' x ' )
x =
x
d i ff(tan (x) )
ans =
l+tan (x) A 2
d i ff(l og (x) )
ans =
l/x
2. di ff( ' a"'xA2 + b*x + C ' )
ans =
2 *a*x+b
di ff( ' xAO . 5 - 3 *y ' )
ans =
. 5/xA . 5
di ff( ' tan (x+y) ' )
ans =
1+tan(x+y)A2
di ff ( ' 3*x + 4*y - 3*x*y ' )
ans =
3 - 3*y
Exi sten var i os enfoques d i ferentes
di ff(d i ff( ' a*xA2 + b*x + e ' ) )
ans =
2 *a
di ff( ' xAO . 5 - 3 *y ' , 2)
3. %
( Continúa)
584 Apéndice B
http://jurgensoft.co.cc
E i e r c i c i o d e p r á c t i c a 1 1 . 8 (Continuación)
ans
- . 2 5/xAl . 5
di ff( ' tan (x+y) ' , ' x ' , 2 )
ans =
2 *tan (x+y) * (1+tan (x+y) A 2 )
d i ff(di ff( ' 3*x + 4*y - 3*x*y ' , ' x ' »
ans
-3
=
=
4 . di ff( ' yA2 - 1 ' , ' y ' )
ans
2 *y
% o , dado que sól o exi ste una var i abl e
d i ff( ' yA2 - 1 ' )
ans
2 *y
%
d i ff ( ' 2 *y + 3 *xA2 ' , ' y ' )
ans
2
d i ff ( ' a*y + b*x + c*x ' , ' y ' )
ans
a
=
=
=
5. di ff( ' yA2 - 1 ' , ' y ' , 2)
•
ans =
2
% o , dado que sól o exi ste una vari abl e
diff ( ' yA 2 -1 ' , 2)
ans
2
%
di ff(d i ff( ' 2* y + 3 *xA2 ' , ' y ' ) , ' y ' )
ans =
O
di ff ( ' a*y + b*x + c*x ' , ' y ' , 2)
ans
O
=
http://jurgensoft.co.cc
Ejercicio de práctica
Soluciones a ejercicios de práctica 585
1 1 .9
1. i nt ( ' xA2 + x + 1 ' )
ans =
1/3* xA 3 + 1/2*xA 2 +x
% o defi na x como s i mból i ca
x=sym ( ' x ' )
x =
x
i nt (xA2 + x + 1 )
ans =
1/3 * xA3+1/2*xA2+x
i nt (s i n (x) )
ans =
-cos (x)
i nt (tan (x) )
ans =
- 1 og (cos (x) )
i nt (1 og (x) )
ans =
x*l og(x) - x
2. % n o neces i ta especi fi car q u e l a i ntegraci ón e s con
respecto de x , porque es por defecto
i nt ( ' a*xA2 + b*x + c ' )
ans =
1/3*a*xA 3+1/2*b*xA2+c*x
i nt ( ' xAO . 5 - 3 *y ' )
ans
. 66666666666666666666666666666667i'xA ( 3/2) - 3 . '�x'�Y
i n t ( I tan (x+y) ' )
ans
1/2*1 0g (1+tan (x+y) A2)
i nt ( ' 3 * x + 4*y - 3*x*y ' )
ans
3/2 *xA2+4*x*y- 3/2*y*xA2
%
3. i nt (i nt (xA2 + x + 1 ) )
ans =
1/12 *xA4+ 1/6 *xA3+ 1/2 '�xA2
i nt ( i nt (s i n (x) ) )
ans =
- s i n (x)
i n t ( i nt (tan (x) ) )
ans =
- 1/2 * i *xA2 - x* 1 0g (cos (x) ) +x*1 0g ( 1+exp ( 2 * i *x) ) lj2 * i *pol yl og ( 2 , -exp ( 2 * i * x ) )
i nt (i n t (l og (x) ) )
ans =
1/2*xA2 * 1 0g (x) - 3/4*xA2
%
(Continúa)
586 Apéndice B
http://jurgensoft.co.cc
E jercicio de práctica
1 1 .9
(Continuación)
i n t ( i nt ( ' a*xA2 + b*x + e ' »
ans
1/12*a*xA4+1/6*b*xA3+1/2*e*xA2
i nt ( i nt ( ' xAO . 5 - 3*y ' »
ans
. 26666666666666666666666666666667 *xA (5/2 ) 1 . 5000000000000000000000000000000*y*xA2
i n t ( i nt ( ' tan (x+y) ' »
ans =
- 1/4*i *l og (tan (x+y) - i ) *l og (1+tan (x+y) A2)+1/4* i *d i l og ( 1/2* i * (tan (x+y) + i » +1/4 * i * l og(tan (x+y) - i ) *l og ( 1/2 * i * (tan (x+y) + i » +1/8 * i *l og(tan (x+y) ­
i ) A2+1/4* i *1 0g(tan (x+y) + i ) *l og (1+tan (x+y) A2) 1/4 * i *di 1 0g ( 1/2 * i * (tan (x+y) - i » 1/4 * i *1 0g(tan (x+y) + i ) *l og(1/2 * i * (tan (x+y) - i »
1/8 * i * 1 0g (tan (x+y) + i ) A 2
i n t ( i nt ( ' 3 *x + 4 * y - 3*x*y ' »
ans
1/2*xA3+2*y*xA2- 1/2*y*xA3
=
=
=
4.
i nt ( ' yA2 - 1 ' )
ans
l/3*yA3-y
i nt ( ' 2 *y+3*xA2 ' , ' y ' )
ans
yA2+3*y*xA2
i nt ( ' a*y + b*x + e*z ' , ' y ' )
ans
1/2*a*yA2+b*x*y+c*z*y
=
=
=
5 . i n t ( i nt ( ' yA 2 - 1 ' »
ans
1/12*yA4- 1/2*yA2
i nt ( i nt ( ' 2*y+3*xA2 ' , ' y ' ) , ' y ' )
ans
1/3*yA3+3/2*xA2*yAZ
i nt ( i nt ( ' a*y + b*x + c*z ' , ' y ' ) , ' y ' )
ans
1/6*a*yA3+1/Z*b*x*yAZ+1/2*e*z*yA2
=
=
=
6. i nt (xA2 + x + 1 , ° , 5)
ans
3 5 5/6
i nt (s i n (x) , O , 5)
ans
-cos ( 5 ) + 1
i nt (tan (x) , 0 , 5 )
ans
NaN
i nt (l og (x) , 0 , 5 )
ans =
5 *1 0g ( 5) - 5
=
=
=
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica 587
Ejercicio de práctica 1 2. 1
1 . pl ot(x , y ,
,
-o ' )
ti tl e ( ' Probl ema 1 ' )
xl abel ( ' datos x ' )
yl abel ( ' datos y ' )
g r i d on
Problema I
300
>.
.9
�
'"
200
100
o
o
datos x
2. i nterpl (x , y, 1 5 )
ans =
34
3. i nterp l (x , y , 1 5 , ' spl i ne ' )
ans =
3 5 . 9547
4. i nterp l (y , x , 80)
ans =
39 . 0909
5 , i nterp l (y , x . 80 , ' spl i ne ' )
ans =
39 . 2 2 38
6. new_x=lO : 2 : 100 j
new_y= i nterpl(x , y , new_x , ' spl i ne ' ) ;
fi gure (2)
pl ot(x , y , ' o ' , new_x , new_y)
l egend ( ' datos medidos ' , ' i nterpol ación spl i ne ' )
t i tl e ( ' Probl ema 6 ' )
Problema 6
xl abel ( ' datos x ' )
yl abel ( ' datos y ' )
o
datos medidos
---
interpolación spline
lOO
20
óO
40
datos x
80
100
588 Apéndice B
http://jurgensoft.co.cc
E j e rc i c i o d e p r á c t i c a
1 2.2
y=10 : 10 : lOO ' ;
X= [ 1 5 , 30] ;
z= [ 2 3 3 3
55
45
60
70
82
92
111 1 2 1
140 1 5 0
167 1 7 7
1 9 8 198
200 2 1 0
2 20 2 30] ;
1.
pl ot (y , z , ' -o ' )
t i tl e ( ' Probl ema 1 ' )
xl abel ( ' datos y ' )
yl abel ( ' datos z ' )
l egend ( ' x= 1 5 ' , ' x=30 ' )
Problema 1
daoos y
2.
new_z= i nterp2 (x , y , z , 1 5 , 20)
new_z =
45
3 . new_z=i nterp 2 (x , y , z , 1 5 , 2 0 , ' sp l i ne ' )
new_z =
45
4.
new_z=i nterp2 ( x , y , z , [20 , 2 5] , y ' )
new_z =
26. 3333
2 9 . 6667
5 1 . 6667
48 . 3 3 3 3
63 . 3333
66 . 6667
8 5 . 3333
88 . 6667
1 14 . 3 3 3 3 1 1 7 . 6667
143 . 3 3 3 3 146 . 6667
1 70 . 3 3 3 3 1 7 3 . 6667
198 . 0000 198 . 0000
203 . 3 3 3 3 206 . 6667
2 2 3 . 3 3 3 3 2 2 6 . 6667
http://jurgensoft.co.cc
E j e rc i c i o d e p r á c t i c a
Soluciones a ejercicios de práctica
1 2.3
x= [ 10 : 10 : 100] ;
y= [ 2 3 33
55
45
70
60
82
92
111 121
140 1 50
167 1 7 7
1 9 8 198
200 2 1 0
2 2 0 2 30] ' ;
1 . coef=pol yfi t (x , y( 1 , : ) , 1)
coef =
2 . 3 2 24 - 3 . 1 3 3 3
2.
new_x=10 : 2 : 100 j
new-y=pol yval (coef , new_x)
new_y
Col umns 1 th rough 6
20 . 0909 24 . 7 3 58 29 . 3 806 34 . 02 5 5 38 . 6703 43 . 3 1 52
Col umns 7 t h rough 1 2
47 . 9600 52 . 6048 5 7 . 2 497 61 . 8945 66 . 5 394 7 1 . 1842
Col umns 13 t h rough 18
7 5 . 8291 80 . 4739 8 5 . 1 188 89 . 7636 94 . 408 5 99 . 05 3 3
Col umns 1 9 t hrough 2 4
103 . 6982 108 . 3430 1 12 . 9879 1 1 7 . 6 3 2 7 1 2 2 . 2 7 76 126 . 9224
Col umns 25 t hrough 30
1 3 1 . 5673 136 . 2 1 2 1 140 . 8 5 70 14 5 . 5018 150 . 1467 1 54 . 7 9 1 5
Col umns 3 1 t hrough 36
1 5 9 . 4364 164 . 0812 168 . 7261 1 7 3 . 3 709 178 . 0158 182 . 6606
Col umns 3 7 t h rough 4 2
187 . 30 5 5 191 . 9503 196 . 59 5 2 201 . 2400 205 . 8848 2 10 . 5 297
Col umns 43 t h rough 46
2 1 5 . 1 7 4 5 2 19 . 8 1 94 2 24 . 4642 2 2 9 . 1091
=
3. figure(1)
pl ot(x , y ( l , : ) , ' o ' , new_x , new_y)
t i tl e ( ' Probl ema 3
Model o de regresión l i neal xl abel ( ' ej e x ' )
ylabel ( ' ej e y ' )
Problema 3 Modelo de regresión lineal
-
300
'" 200
"
'O' 100
°
z
�-�------'f
-
rl
I
0
-
20
=
15
/_y�94
�/
G���
z
= 15 ' )
40
.
eje x
60
80
I
4
100
(Continúa)
589
590 Apéndice B
http://jurgensoft.co.cc
Eiercic io de práctica l
4.
2.3
(Continuación)
fi gure ( 2 )
coef2=pol yfi t (x , y (2 , : ) , 1)
coef2 =
2 . 29 2 1 7 . 5 3 3 3
new_y2=pol yval (coef2 , new_x) ;
pl o t (x , y( 2 , : ) , ' o ' , new_x , new_y2)
t i tl e ( ' Probl ema 4 - Model o de regresi ón l i neal z
30 ' )
xl abel ( ' ej e x ' )
Problema 4 Modelo de regresión lineal
yl abel ( ' ej e y ' )
-
z
=
30
200
100 -
eje x
Ejercicio de práctica
L
•
1 2.4
x=- 5 : 1 : 5 ;
y=x . A3 + 2 . *x . A2 - x + 3 ;
,
dy_dx=d i ff(y) . /di ff(x)
dy_dx =
42 2 2 8 O - 2 2 12 28 50 7 8
dy_dx_anal yti cal =3*x . A2 + 4 * x - 1
dy_dx_anal yti cal
54 31 14 3 - 2 - 1 6 19 38 63 94
tabl e = [ [dy_dx , NaN] , , dy_dx_anal yti cal ' ]
tabl e =
42
54
22
31
14
8
3
O
-2
-2
2
-1
12
6
19
28
50
38
63
78
NaN
94
% Se agrega NaN al vector dy_dx de modo que l a l ongi tu d
% de cada vector serí a l a m i sma
http://jurgensoft.co.cc
Soluciones a ejercicios de práctica
2. a. x=- 5 : 1 : 5 ;
y=s i n (x) ;
dy_dx=di ff(y) . /d i ff(x) ;
dy_dx_anal yti cal =cos (x) ;
tabl e= [ [dy_dx , NaN] , , dy_dx_anal yti cal ' ]
tabl e =
- 0 . 2021
0 . 2837
-0 . 8979 - 0 . 6 5 3 6
-0 . 7682 - 0 . 9900
0 . 0678 -0 . 4161
0 . 84 1 5
0 . 5403
1 . 0000
0 . 84 1 5
0 . 5403
0 . 06 78
- 0 . 7682 - 0 . 4161
- 0 . 8979 - 0 . 9900
-0 . 2021 - 0 . 6 5 3 6
NaN
0 . 283 7
b. x=- 5 : 1 : 5 ;
y=x . A 5- 1 ;
dy_dx=di ff(y) . /d i ff(x) ;
dy_dx_anal yti cal =5*x . A4 ;
tabl e = [ [dy_dx , NaN] , , dy_dx_anal yti cal ' ]
tabl e =
2 101 3 1 2 5
781
1280
211
405
31
80
1
5
1
O
5
31
211
80
781
405
2 101 1280
NaN
3125
c.
x=- S : 1 : 5 ;
y=5*x . >�exp(x) ;
dy_dx=di ff(y) . /di ff(x) ;
dy_dx_anal yti cal = S*exp (x) + 5 * x . *exp(x) ;
tabl e = [ [dy_dx , NaN] ' , dy_dx_anal yti cal ' ]
tabl e
.':
1 . 0e+OO3
-0 . 0002
-0 . 0001
- 0 . 0004
- 0 . 0003
- 0 . 0006
- 0 . 0005
- 0 . 0005
- 0 . 0007
0 . 0018
O
(Continúa)
591
592 Apéndice B
http://jurgensoft.co.cc
Ejercicio de práctica
0 . 0136
0 . 0603
0 . 2 2 74
0 . 7907
2 . 6184
NaN
(Continuación)
0 . 0050
0 . 02 7 2
0 . 1108
0 . 40 1 7
1 . 3650
4 . 4524
E j e rc i c i o d e p r á c t i c a
1.
1 2.4
1 2.5
quad ( ' x . A3+2*x . A2 - x + 3 ' , - 1 , 1)
ans =
7 . 3333
quadl ( ' x . A3+2*x . A2 - x + 3 ' , - 1 , 1)
ans =
7 . 3333
doubl e ( i nt ( ' xA3+2*xA2 - x + 3 ' , -1 , 1) )
ans =
7 . 33 3 3
a=- l ;
b=l ;
1/4* (bA4-aA4) +2/3* (bA 3 - aA3) - 1/2* (bA2 - aA2)+3* (b-a)
ans =
7 . 3333
2 . a . quad ( ' sen (x) , , - 1 , 1)
ans =
o
quadl ( ' sen (x) , , - 1 , 1)
ans =
O
doubl e ( i nt ( ' sen (x) ' , - l , l) )
ans =
O
a=- l ;
b=l ;
cos (b) -cos (a)
ans ;;
O
b.
quad ( ' x . A 5 - 1 ' , - l , l)
ans =
-2
quadl ( ' x . A5 - 1 ' , - 1 , 1)
ans =
- 2 . 0000
doubl e( i n t ( ' xA 5 - l ' , - 1 , 1) )
ans =
-2
http://jurgensoft.co.cc
c.
a=- l ;
b=l ;
(bA6-aA6)/6- (b-a)
ans =
-2
quad ( ' S *x . *exp(x) ' , - l , l)
ans =
3 . 6788
quadl ( ' S*x . *exp (x) ' , - 1 , 1)
ans =
3 . 6788
doubl e (i nt ( ' S *x*exp (x) , , - 1 , 1) )
ans =
3 . 6788
a=- l ;
b=l ;
- S�' (exp(b) - exp(a) ) + S * (b*exp(b) -a*exp(a) )
ans =
3 . 6 7 88
Soluciones a ejercicios de práctica 593
•
g
Tabla B.l
Resumen climatológico anual, estación: 3 1 03 0 1 / 1 3872, Asheville, Carolina del Norte, 1 999 (Elev. 2240 pies sobre el nivel del mar; lato 35"36'N, lon. 8r32'W)
Temperatura (OF)
EMNP
Número de día;;
, IPbajo
echal Máx
Me;;
1 999
I
7(, I
o
o
2
4
http://jurgensoft.co.cc
M(¡x
Mín
>=90" <=32"
<=0"
----,-.2
O
16 I
�-+--._".,¡.._()
2
16 I
()
()
()
No reportado.
Ocurrió en una o más fechas previas durante el mes.
la fecha en el campo Fecha es el último día de ocurrencia.
Usado sólo hasta diciembre de 1 983.
A Cantidad acumulada. Este valor es un total que puede incluir
datos de un mes o meses o año (para valor anual) previos.
B Total ajustado. Valores totales mensuales con base en datos
proporcionales disponibles o través de todo el mes.
E Total anual o mensual estimado.
+
U.S. Department 01 Commerce Nationol Oceonic & Atmospheric Adminislrolion
Medias o totales mensuales con base en series de tiempo
incompletas. Faltan 1 o 9 días. Los medias o totales anuales
incluyen uno o más meses que tienen de 1 o 9 días faltantes.
M Se uso para indicar elemento de datos faltante.
T Trazo de precipitación, nevada o nieve profundo.
El valor de datos de precipitación será cero.
S Cantidad de precipitación en continua acumulación.
El total se incluirá en un valor mensual o anual subsecuente.
días 1 ·20 tienen 1 .35 pulaadas de precipitación
X
=
luego comienzo un periodo de
acumulación. El elemento TPCP sería
entonces 001 355 Y el valor de cantidad
total acumulada aparece en un valor
mensual subsecuente. Si TPCP "M" no
hubo precipitación medida durante el
mes. la bandera se pone en "S" y la
cantidad total acumulada aparece en
un valor mensual subsecuente.
http://jurgensoft.co.cc
Indice analítico
/
Símbolos
/, 49
-, 49, 1 79
;, 49
0, 49
:, 1 29, 1 79
-., 1 79
., 1 79
\, 334
-, 179
%, 49, 2 1 0, 238
%%, 238
%a, 238
%C, 222
%e, 222, 238
%f, 222, 238
%g 222, 238
%s, 222, 238
@, 21O
[], 49
.", 49
", 49, 1 79, 334
' , 49, 238, 334
", 368, 422
* (asterisco), 49, 1 79, 334
... (elipsis), 1 29
= (igual), 49
== (igual a), 244, 287
{ } (llaves), 368, 422
+ (más), 49, 279
,
>
(mayor que), 1 79, 244, 286, 287
(mayor que o igual a), 244, 287
< (menor que), 1 79, 244, 286, 287
<= (menor que o igual a), 244, 287
X (multiplicación), 1 79
- (no), 244, 287
>=
(no igual a), 244, 286-287
1 (0), 244, 287
. * (punto asterisco), 49
& (y), 244, 287
-=
A
Abs, función, 60, 94, 99
Add folder, opción, 206
Agua en una alcantarilla (ejemplo), 450-45 1
Ajuste de curvas, 444-454
función polyval, 448-449
regresión lineal, 444-446
regresión polinomial, 447-448
Álgebra
matricial, 301 -342
determinantes, 3 1 5- 3 1 7
matriz inversa, 3 1 3-3 1 5
matrices especiales, 329-332
multiplicación de matriz, 309-3 1 1 , 332
operador transpose, 301 -302
operaciones y funciones de matrices, 301-321
potencias de matriz, 3 12-3 1 3
productos cruz, 3 1 7 -3 2 1
producto punto, 302-303
sistemas de ecuaciones lineales, soluciones de,
3 2 1 -332
simbólica, 375-385
capacidades, 375-376
ecuaciones simbólicas, manipulación, 379-384
expansión de expresiones, 381 -382
expresiones simbólicas, manipulación, 379-384
extracción de numeradores y denominadores, 380
factorización de expresiones, 381 -382
función collect, 381
función expand, 381
función factor, 3 8 1
596 índice analítico
http://jurgensoft.co.cc
función simple, 382-384
función simplify, 383, 42 1 -422
recopilación de términos, 3 8 1 -382
simplificación de funciones, 382-383
sustitución, 392-393
variables simbólicas, 420
Algoritmo natural, 59
Amarillo (indicador), 1 79
And (&), operador, 244
Animación, 503-509
de películas, 504-509
redibujar/borrar, 503-504
Anotación de ejes, 502
Ans, variable 1 2 - 1 3 , 49, 203, 3 1 4, 3 86, 390
Any, función 253, 288
Antiderivada, 4 1 0
Aproximación, 433 , 444, 461 , 466-467
Arcoseno, 66
Arcotangente, 67
Archivo(s)
.au, 235
.aví, 236
.bmp, 235
.edf, 235
.dat, 39, 48, 235, 498, 5 1 4
.mat, 39, 43, 48, 208, 235, 498, 5 14
matlab.mat, 40
cape, 492, 498, 5 1 5
clown, 492, 5 1 5
detail, 492, 5 1 5
durer, 492, 5 15
earth, 492
flujet, 492, 5 1 5
mandrill, 490, 492, 5 1 6
mri, 5 16
spine, 492, 5 1 6
dicom (estándar de imágenes digitales y
comu:Qicaciones en medicina), 3-4
.emf, 499
.fig, 1 76
.fits, 235
gatlin, 492, 5 1 5
.gif, 235
.hdf, 235
.jpegl.jpg, 235
-m, 1 1
guardar los, 229
para calcular la aceleración de una nave espacial,
creación (ejemplo), 44-47
script, 3 9-40, 43, 209
tipos de, 43
uso de modo celda en (ejemplo), 227-23 1
-m de función
código, acceso a, 205
comentarios, 1 94
con múltiples entradas y salidas, 1 94- 1 99
creación de, 1 87-205
sin entrada o sin salida, 1 99-201
variables globales, 204
-m de programa, publicación a un archivo HTML,
229-230
nombre de, 1 8 8
sintaxis, 1 87- 1 90
sphere.m, 205
.tiff, 235
.wav, 235
.wkl, 235
.xls, 235
Argumento(s), 56
de entrada y salida, 1 88, 201 , 203-204, 206, 209
determinación del número de, 20 1 -202
Arrastre, cálculo del (ejemplo), 33-36
Arreglos, 343-373
bidimensionales, 367
carácter, 354-357
especial para, 368
celda, 359-360, 367
función celldisp, 359, 368
definición, 3 0 1
editor de, 1 5- 1 6
enteros, 349
esparcidos, 352-353
carácter especial para, 368
estructura de, 362-367
almacenamiento de datos planetarios con (ej emplo),
362-364
carácter especial para, 368
extracción y uso de datos de (ejemplo), 365-367
gestión de bases de datos, y, 3 6 1
lógicos, 3 5 2
carácter especial para, 3 6 8
multidimensional, 353-354
multiplicación de, 29
numéricos, carácter especial para, 368
operaciones
27-36
lista explícita, 27
potencia de, 3 1 3
simbólicos, carácter especial para, 368
tipos de datos numéricos:
enteros, 348-349
estructura, 360-367
números complejos, 349
números punto flotante precisión doble, 344-346
números punto flotante precisión sencilla, 346-348
.txt, 235
ASCII, sistema de codificación 350-35 1 , 355
formato,
definición, 4 1
http://jurgensoft.co.cc
Asheville_1999.xls, 1 1 3- 1 14
Asignación, 2 1 , 26, 39
de calificaciones (ejemplo),
260
Asin, función, 66, 99
Asind, función, 66, 99
Asistente de importación, 42, 234-236, 491
ASTM,
tamaño de grano, 1 92
Autumn, mapa de color 1 7 1 , 1 7 9
B
B
(indicador), 1 7 9
variable, 1 3
\b, 223, 238
Bar, función, 1 6 1 , 1 79
Bar3, función, 1 6 1 , 1 79
Bar3h, función, 1 6 1 , 1 79
barh, función, 1 6 1 , 179
Barra de herramientas
celda, 229
archivo-m programa, publicación a un archivo
HTML, 229-230
de figura, 1 7 5
beep, función, 255
Biomédica, ingeniería, MATLAB y, 3
Black, indicador, 1 79
Blue, indicador, 1 79
Bone, mapa de color, 1 7 1, 179, 5 1 5
Botón
data, ventana de herramientas de ajuste de curvas, 458
estrella, 1 7
Bucle(s), 270-286
comando break, 283-284, 287-288
comando continue, 284, 287
estructuras de repetición de, 270-286
definición, 243
for, 270-278, 356
cálculo de factoriales con (ejemplo), 275-277
mejorar la eficiencia de, 284-286
para bucles, 270-278, 283
while, 278-283
C
C++, 1 -2
C, 42
variable, 1 4
(indicador), 179
Caída libre
(ejemplo), objetos en, 2 1 7-2 1 9
Cajas de herramientas, 1 7
de ajuste d e curvas, 458-461
definición, 209
para funciones, creación, 205-208
índice analítico 597
simbólica, 375, 420
Cálculo, 404-41 7
de ingeniería, y
estructura, 3 6 1
de trabaj o de frontera móvil (ejemplo), 468-70
diferenciación, 404-410
integración, 4 1 0-41 3
Camlight, [unción, 5 1 1 , 5 1 5
Campos, 360
Capacidad calorífica, 452
de un gas (ejemplo), 452-454
Característica (s)
especiales, 49, 99, 238, 368, 5 1 9-520
help, 57-59, 1 45 , 222, 278, 283, 443, 470
línea siguiente, 1 29
Carpetas, 206-207
Case/switch, estructura, 262
Ceil, función, 64, 99
Celldisp, función, 359, 368
Census, función, 476
Centro de gravedad:
cálculo (ejemplo), 303-306
uso de multiplicación matricial para encontrar
(ejemplo), 3 1 1
Cftool, función, 458, 476
char, función, 35 1 , 554, 367-368
Chemical and Process Thermodynamic (Kyle), 452
Cian, indicador, 129, 1 7 9
Círculo, indicador, 179
Clase, 343
Clausius-Clapeyron,
ecuación 6 1 -63
Climatológicos,
datos, 84-87
Códi.go
acceso, 205
vectorizado, 275
Color, mapa de, 1 7 1 , 500
colorcube, 1 7 1 , 179
cool, 1 7 1 , 1 7 9
copper, 1 7 1 , 179
interno, 5 1 4
personalizado, 488
creación, 5 14
Comando, 49, 5 19-520
-ascü, 4 1 , 49
axis, 1 79, 490, 5 1 5
equal, 1 75 , 179
break, 283-284, 287-288
case, 288
ele, 14, 49
elear, 1 4- 1 5 , 49
elf, 5 1 2
conj , 92, 95, 99
continue, 284, 287-288
598 índice analítico
http://jurgensoft.co.cc
contour, 168, 173, 179
de formato especial, 223
de i mportación, 235-236
doe, 5 8
doc fileformats, 234
270, 288
end,
•
erf, 99
exit, 49
find, comando, 247-250, 287-288
for, 288
format, 39
format +, 3 8-39, 49
formal bank, 38-39, 97
format compact, 39, 49
format long, 37, 39, 49
format long e, 38-39, 49
format loose, 39, 49
format rat, 38-39, 49, 368
format short, 3 8-39, 49
format short e, 38-39, 49
238
ginput,
Help inUne, 208
1 00
helpwin,
hidden off, 5 1 1 , 5 1 5-5 1 6
hidden on, 5 1 1
historia de, 1 2
47
ventana
hold off, 1 79
hold on, 1 54, 1 79, 398
iskeyword, 1 8
isreal, 95, 1 00
isvarname, 1 8
len, 100
length, 74-75, 254, 285
load, 40, 42, 49, 208
logspace, 28-29, 48-49
namelengthmax, 1 8
pathtool, 206, 2 1 0
quit, 49
reingreso de, 1 1
rename, 1 6
rescritura de, 1 ]
save, 49, 356
subplot, 1 5 1 - 1 53 , 1 55 , 1 59- 1 60, 1 80, 1 82- 1 8 3
surf, 1 70, 1 80
surfe, 1 68 , 173, 1 80
syms, 377, 420
text, 1 80
title, 1 80
type, 205
ventana de, 9, 1 1 , 40, 47
what, 43
which, 1 9
who, 49
whos, 14-15, 40, 49
Y funciones, 49
Comentario (%),
operador, 44
Comentarios, 1 94, 209
Complex, función, 92, 94, 99
Compra de gasolina (ejemplo), 262-265
enfoque de menú, 266-269
Compuestos orgánicos, 336
Condición lógica, 243
eoneplot, función, 5 1 3, 5 1 5
Conj, comando, 92, 95, 99
Continue, comando, 284, 287-288
Contour, comando, 1 68, 1 73, 1 79
Constructor de arreglos celda ({ } ) , 368
Conversión(es)
binario a decimal, 350
de materia en energía, 5-7
Creación de gráficas desde la ventana del área de trabajo,
176
Cruz, productos, 3 1 7-321
Cuadrado, i n dicador, 1 7 9
Cuadratura, 467
Lobatto, 467
Simpson, 467
Cumprod, función, 74
Cumsum, función,74, 99, 347, 368
Curva con forma de campana, 8 1
D
D (indicador), 179
Datos
carácter, 343-344
tipo de, 367
y cadena, 350-35 1
dc clima, 76-81
d e i mportación, 234-236
de temperatura, uso de, 1 12- 1 14
de volumen, 5 1 5
escalares, 5 1 5
exportación de, 237-238
limatológicos, 84-87
352
lógicos,
numéricos, 343-344
simbólicos, 343-344, 3 5 1 -352
vectoriales, visualización de volumen de, 5 1 3-5 1 4
visualización de volumen de, 5 1 2-5 1 3
Derivada parcial, 406
Desbordamiento, 96-97
de exponente, 96
Desviación estándar, 74-75
Det, función, 3 16, 333-334
Determinación del número de argumentos de entrada y
salida, 201 -202
http://jurgensoft.co.cc
Determinantes, 3 1 5-3 1 7
función MATLAB usada para encontrar, 333
Diag, función, 1 23, 125, 1 28- 1 29
Diagonales, matrices, 1 25
Diagramas de flujo, 245-247
combinación con pseudocódigo, 246
definición, 245
para diseño de programas de cómputo, 247
Diamante
en diagramas de flujo, 247
indicador, 1 79
Diferenciación simbólica, 407
Diferencial,
uso del término, 405
Diferencias y diferenciación numérica, 461 -465
Dinámica de fluidos, 4
MATLAB y, 4-5
Directorio, 206
Disp, función, 2 1 5 , 2 1 9-22 1 , 238, 248, 266, 356, 361
Display, función. Vea función disp
Distancia al horizonte (ejemplo), 1 1 7
Distribución
de peso (ejemplo), 1 62- 1 6 3
normal, 8 8
División elemento por elemento, 29
2001 : A Space Odyssey, archivos de sonido de
(ejemplo), 236-237
Dot, función, 303, 308, 334
Double, función, 346, 368, 3 86, 390
Drawnow, función, 504, 5 15
Dsolve, función, 4 1 8-4 1 9, 422
Dürer, Albrecht, 1 27
E
EBCDIC, 350-35 1
Ecuación(es)
C1ausius-C1apeyron, 6 1 -63
diferenciales, 4 1 8-420
de primer orden, 4 1 9
función dsolve y, 4 1 8-4 1 9
Y entrada de manipulación de función, 472
y resolución de problemas, 473-474
y resolución numérica, 470-474
y solucionadores, 47 1
Hall-Petch, 196- 1 97
simbólicas,
manipulación, 379-384
simultáneas,
resolución (ejemplo), 323-324, 326-329
Edición
de estudiante, MATLAB, 2
profesional, MATLAB, 2
ventana de, 1 7, 42-43, 48
índice analítico 599
Editor
/depurador. Vea Ventana de edición
de archivos-m MATLAB , 42
de arreglos, 1 5- 1 6
Einstein, Albert, 5-6
Elementos, 1 08- 1 09, 1 1 2, 1 16
Eliminación gaussiana, 325
Elipsis ( ... ), 1 29
Else,
cláusula, 254, 287-288
Elseif,
estructura, 255-257, 287-288
.Emf, Metarchivo mejorado, 499
End,
comando, 254-255, 270, 288
Energía cinética (ejemplo), 198- 1 99
Enteros, 348-349
Entrada
gráfica, 226-227
/salida controlada por el usuario, 2 15-242
Enunciado if simple, 254
Eps,
función, 97, 99
Erf,
comando, 99
Escala de grises. Vea Imágenes de intensidad
Escalamiento de ejes y anotación en gráficas, 1 44
Escalares, 20, 343
Escritura de datos desde archivos, 234-237
Esquema de codificación secreta, creación (ejemplo),
358-359
Estrella, indicador, 1 79
Estructura( s)
case/switch, 262
de repetición de bucle, 270-286
definición, 243
de selección, 254-270, 286
elseif, 255-257
if, 288
if/else, 254-255, 287
switch/case, 260-262, 266
Etime,
función, 284-288
Evaluar celda y avanzar,
función, 229, 23 1
Exp,
función, 37, 60, 99
Expand,
función, 3 8 1 , 384, 42 1 -422
Exponente,
desbordamiento de, 96
Exportación de datos, 237-238
Expresiones
largas, 22-23
600 índice analítico
http://jurgensoft.co.cc
simbólicas,
manipulación, 379-384
y ecuaciones, resolución de, 385-396
Eye, función, 3 3 0, 334, 368
Ezeontour, función, 399, 422
Ezcontourf, función, 399, 422
Ezmesh, función, 399-400, 422
Ezmeshc, función, 399-400, 422
Ezplot, función, 396-399, 405, 422
Ezplot3, función, 400, 422
Ezpolar, función, 400, 422
Ezsurf, función, 399, 422
Ezsurfc, función, 399-400, 422
F
Factor,
función, 3 8 1 , 384, 42 1 -422
Factorial, 65, 1 00, 275
Factoriales, cálculo con bucles for (ejemplo), 275-277
Figura,
176, 501
ventana
Figure,
función, 1 36-1 3 8
.File,
de la barra de menú, 1 7
File_name, 40-41
Find,
comando, 247-250, 287-288
diagrama de flujo y pseudocódigo para, 250-25 1
Findsym,
función, 389
Fitting,
botón,
ventana de herramientas de ajuste de curvas, 459
Fix,
función, 64, 97, 100
• Flag,
mapa de color, 1 7 1 , 1 7 9
Fliplr,
función, 1 23 , 1 29
Flipud,
función, 1 23 , 1 29
Floor,
función, 64, 1 00
For, 288
Format, cornmando, 3 9
Format + , cornmando, 38-39, 49
Format bank, cornmando, 3 8-39, 97
Format compact, cornmando, 39, 49
Format long, cornmando, 37, 39, 49
Format long e, cornmando, 38-39, 49
Format loose, cornmando, 39, 49
Format rat, cornmando, 3 8-39, 49, 368
,
Format short, cornmando, 38-39, 49
Format short e, cornmando, 38-39, 49
Formato
ASCII,
definición, 4 1
de despliegue, 37-39
FORTRAN, 1 -2, 42
Fplot,
función, 1 67, 1 7 8- 1 79, 208-209
Fprintf,
función 39,
238, 248-250
Franklin, Benjamin, 1 27
Función(es),
abs, 94, 99
[a,b] = size, 75
addpath, 207, 2 1 0
all, 253, 288
alpha, 5 1 5
angle, 94, 99
anidado, 56
anónimas, 208, 2 1 0
creación, 208
guardar, 208
any,
288
archivos-m de, 1 87-205
asin, 66, 99
asind, 66, 99
bar, 1 6 1 , 1 79
bar3, 1 6 1 , 1 79
bar3b, 1 6 1 , 1 79
barb, 1 6 1, 1 7 9
beep, función 2 5 5
cam1ight, 5 1 1 , 5 1 5
ceil, 64, 99
celldisp, 359, 368
censns, 476
cftool, 458, 476
char,
354, 367, 368
doek, 97, 99, 284-288
colleet, 3 8 1 , 3 84, 42 1 -422
colormap, 1 68, 1 7 1 , 5 1 5
comandos y, 49
comet, 1 79
comet3, 1 68, 1 79
complex, 92. 94, 99
con entradas y salidas múltiples, 1 94- 1 99
515
coneplot,
eos, 66, 99, 1 87
cross, 3 33-334, 340
cumprod, 74
cumsum, 74, 99, 347, 368
date, 97, 99
de análisis de datos, 70-88
definición de, 1 87
definidas por el usuario, 1 87 -2 1 4
http://jurgensoft.co.cc
de funciones, 208
de redondeo, 63-64
de simplificación, 3 82-383
det, 3 16, 333, 334
diag, 1 23, 125, 1 28 - 1 29, 1 29
diff, 405, 407-408, 421 -422, 461
475-476
disp, 2 1 5, 2 1 9-221 , 238, 248, 266, 356, 361
display.
dot, 303, 308, 334
double, 346, 368, 386, 390
drawnow, 504, 5 1 5
dsolve, 4 1 8-4 1 9 , 422
en línea, 208
entrada de, 92, 94
eps, 97, 99
estadísticas, 83
etime, 284-288
evaluar celda y avanzar, 229, 23 1
exp, 37, 6 1 , 99
expand, 3 8 1 , 384, 42 1 -422
eye, 330, 334, 368
ezcontour, 399, 422
ezcontourf, 399, 422
ezmesh, 399-400, 422
ezmeshc, 399-400, 422
ezplot, 396-399, 405, 422
ezplot3, 400, 422
ezpolar, 400, 422
ezsurf, 399, 422
ezsurfc, 399-400, 422
factor, 3 8 1 , 384, 42] -422
figure, 1 36- 1 38
findsym, 389
fix, 64, 97, 1 00
fliplr, 1 23 , 1 29
flipud, 1 23 , 1 29
floor, 64, 1 00
fpIot, 1 67 , 1 7 8- 1 79, 208-209
fprintf, 39, 2 1 5 , 221 -226, 238, 248-250
gallery, 332, 334
gca, 5 1 5
ged, 65, 100
gef, 502, 5 1 5
get, 501 -502, 5 14, 5 1 6
getframe, 506-508, 5 1 6
global, 204, 209
gráficas de, 1 67
grid, 1 79
grid off, 1 79
grid on, 1 79
help, 1 1 , 1 7 , 48-49 , 57, 100, 1 7 1 , 253, 422, 443 , 5 1 2
solicitud de la, desde l a ventana de comandos, 1 94
hist, 1 6 1 - 1 62, 1 79
i, 97, 99
índice analítico 60 1
image, 92, 94, 1 00, 485-487, 490, 5 14, 5 1 6
imagese, 485-487, 490, 5 1 4, 5 1 6
imfinfo, 491 , 5 1 6
imread, 489, 493, 498, 5 1 6
imwrite, 499
inf, 97, 99
int, 4 1 0-4 1 3 , 421 ,
input, 1 88, 2 1 5 ,
internas, 55- 1 06
interp l , 434-436, 442, 474, 476
opciones de interpolación en, 437
interp2, 443, 474, 476
interp3, 443, 474, 476
interpn, 443, 474, 476
intmax, 349
intmin, 95, 99
inv, 322, 333-334
isosurfaee, 5 1 6
isprime, 65, 1 00
j , 97, 99
lcm, 65
Iegend, 1 80
Iength, 74, 75
Iinspace, 28-29, 48-49, 1 80
log, 59-60, 1 00, 3 1 4
log2, 59, 1 00
loglO, 59-60, 100
lógicas/estructuras de control, 243-299
magic, 1 23 , 1 25 , 128-129, 332, 334
manipulador de, 208-209
definición, 472
matemáticas elementales, 59-64
y cálculos comunes, 59-63
media, 72-73
mediana, 72-73
menu, 266, 288
mesh, 170, 1 80
meshgrid, 1 15 - 1 1 6, 1 2 8- 1 29, 1 72, 1 80, 1 82, 1 86, 2 1 0,
512
motion, 1 95
movie, 5 1 6
NaN, 97, 99
nargin, 201 -202, 206, 2 1 0
nargout, 20 1 -202, 206, 2 1 0
nombres de, 1 87- 1 89, 208-209
Y las reglas de nomenclatura, 209
nthroot, 60, 1 00
nthroot, 60, 1 00
num2str, 220, 238, 355-357
nurnden, 380, 384, 42 1 -422
números
aleatorios, 88-91
complejos, 9 1 -95
ones, 1 23 - 1 24, 1 28 - 1 29, 288, 329-33 1 , 334
602 índice analítico
http://jurgensoft.co.cc
paseal, 3 3 2 , 334, 3 3 8
std, 83, 1 00
pause, 1 80, 238
str2num , 368
pcolor, 1 68 , 1 80 , 5 1 6
subs, 393, 4 1 2 , 4 2 1 -422
peaks, 173- 174, 1 80, 399, 485-487, 5 1 6
sum,
pi, 30, 49, 65, 97-99
surf, 2 0 1
pie, 1 6 1 , 1 80
sym, 3 5 1 -352, 377, 420, 422
pie3, 1 6 1 , 1 80
syms, 422
pIot, 1 55 , 1 6 8 , 1 80 , 1 82 , 500
sym2poly, 3 8 3
plot3, 168, 1 80
tan, 66, 1 00
plotyy, 1 64 -1 65 , 1 80
tangent, 57
polar, 180, 1 82
tie, 2 0 1 , 286, 2 8 8
poly2sym, 3 8 3
toe, 2 8 6 , 288
polyfit, 446-448, 474, 476
trigonométricas, 64-69
uso de, 5 5-57
polyvaI, 448-449, 475-476
njimport, 235-236, 238
primes, 65, 1 00
prod, 7 3
valores especiales y, varias, 97-98
quad, 467, 475-476
var, 83, 1 00
quadl, 467, 476
wavread, 235-237, 238
quad l , 475
while, 278-279, 283-284, 288
que se usan en matemáticas discretas, 65
xIsímport, 238
raud, 88, 1 00
:xlsread, 237
randn, 89, 1 00, 1 84 , 3 1 3
xlswrite, 237, 238
rats, 64, 65
zeros, 1 23 - 1 24, 1 2 8- 1 29, 329-33 1 , 334
real, 92, 94
realmax, 95-96, 99, 345-346, 368
G
realmin, 95, 99, 345-346, 368
G (indicador), 1 79
rem, 56, 60, 1 00
GalIery, función, 332, 334
rosser, 3 3 2
Gea, función, 5 1 5
round, 64, 1 00
Gcd, función, 65, 1 00
semilog:x, 1 55 , 1 80
Gcf, función, 502. 5 1 5
semilogy, 1 55 , 1 5 8- 159, 1 80
Gestión de bases d e datos, y arreglos estructura, 3 6 1
set, 502-504, 5 1 6
Get, función, 501 -502, 5 14, 5 1 6
shading flat, 1 7 1 , 1 80
Getframe, función, 506-508, 5 1 6
shading, 5 1 6
Global, función. 204, 209
shading interp, 170- 1 7 1 , 1 80
Grados, conversión a radianes, 64-65, 1 90- 1 92
sign, 60, 1 00
•
1 00
simple, 384, 42 1 -422
simplify, 3 83-384, 42 1 -422
con un bucle whlle, creación de una tabla para
(ejemplo). 280-283
Gráfica(s)
sin, 66, 98, 1 00, 1 87
bidimensionales, 1 3 5- 1 5 1
sine, 250-253
contoursliee, 5 1 3
diagrama de flujo de, 252
de barras y d e pastel , 1 60- 1 62
sin entrada o salida, 1 99-201
de contorno, 1 7 3
sind, 66, 1 00
d e función, 1 67-68
sign, 60, 100
de línea tridimensional, 1 68 - 1 69
single, 346, 368
de malla, 169-170
siuh , lOO
de superficie, 1 69- 174
size, 56, 74-75, 1 00, 2 0 1 , 330, 334
de tallo, 1 77
solve, 385-387, 3 89-390, 4 2 1 -422
uso de, 3 9 1
edición de, desde la barra de menú, 174-175
en pseudocolor, 1 7 3- 1 74
sort, 75, 1 00
escalamiento de ej e y anotación de, 144
sortrows, 75, 100
guardado de, 1 76- 1 77
sound, 1 00 , 2 3 8
lineales. Vea gráficas lo garítmicas
sparse, 352, 368
logarítmicas, 155- 1 56
sphere, 1 74, 1 80, 205-206
loglog, 1 5 5
sqrt, 55-56, 60, 100
mesb, 1 68, 1 7 2
http://jurgensoft.co.cc
Hidden on,
polares, 1 5 3- 1 54
rectangulares. Vea gráficas logarítmicas
representación en escala de
índice analítico 603
comando, 5 1 1
para, 1 7 1
surf, 1 68, 1 70- 1 7 2
Hidrocarburos, 336
Hist,
esquema
función, 1 61 - 1 62 , 1 79
tridimensionales, ] 68- 1 74
Histograma, 1 6 1
x-y con dos ejes y, 1 64- 165
Historia d e comandos, 1 2
ventana de, 47
Graficación, 1 35 - 1 86
Hold off,
básica, 1 35 - 144
comando, 179
icono de, 1 7 6
Hold on,
simbólica, 396-404
comando, 154, 1 79, 398
Gráficos
Hot,
avanzados, 485-5 1 8
mapa de color, 1 7 1 , 1 79
animación, 503, 509
Hsv,
gráficos handle, 500-503
mapa de color, 1 7 1 , 1 80
iluminación, 5 1 1
imágenes, 485-500
líneas ocultas, 5 1 0- 5 1 1
1
transparencia, 509-5 1 0
i,
función, 97, 99
visualización de volumen, 5 1 1 -5 1 4
Grid, función, 1 79
Grid off, función, 1 79
Grid on, función, ] 79
If,
e structura, 288
IfIelse,
estructura, 254-255, 287
Guardar
su trabajo, 39-47
Huminación, 5 1 1
variables , 40-42
Image,
función, 92, 94, 1 00, 485-487, 490, 5 14, 5 1 6
H
Imagen(es), 485-500
H (indicador), 1 79
de intensidad, 488-490
Hall-Petch,
de mandil, 490-491
en color verdadero (RGB), 492-497
ecuación, 1 96- 1 97
Handles
indexadas, 490
de ejes, 502
información de,
de figura, 5 0 1 -02
almacenamiento, 499-500
de gráficas, 500-503
lectura de. 498
Help,
Mandelbrot, 494-497, 507
característica, 57-59, 1 45, 222, 27 8, 283, 443 , 470
función, 1 1 , 1 7 , 48-49, 57, 1 00, 1 7 1 ,
422, 443, 5 12
tipos de, 488-497
Imagesc,
solicitud de la, desde la ventana de comandos, 1 94
inline,
función, 485-487, 490, 5 14, 5 1 6
imfinfo,
comando, 208
menú, 48, 57
función, 491 , 5 1 6
Imread,
temas, 57
tutoríal, 237-238, 504, 5 1 3
función, 489, 493, 498, 5 1 6
Imwrite,
Helpwin,
comando, 5 7 , 1 00
función, 499
Indexadas,
imágenes, 490
Herramientas
caja de, de aj uste de curvas, 458-461
Indicador,
de ajuste básico, 455-458
bIack, 1 7 9
de ajuste interactivo, 455-461
bIue, 1 79
línea rayada, 1 79
ruta, 206-207
raya-punto, 1 79
Hexagrama, indicador, 1 79
Hidden off,
comando, 5 1 1 , 5 1 5 , 5 1 6
lnf,
función, 97, 99
índice analítico
604
http://jurgensoft.co.cc
Ingeniería
biomédica, MATLAB e, 3
eléctrica, MATLAB e, 3
y ciencia, resolución de problemas en, 3
L
Lem,
función, 65
Len,
Input,
función, 1 88 , 2 1 5, 237, 2 3 8 , 26 1
comando, 1 00
Lectura
Instalación de M ATLAB , 9
de datos desde archivos, 234-237
Inspector de propiedades, 503
¡escritura de datos desde archivos, 234-237
Int,
Legend,
función, 4 1 0-4 1 3 , 42 1 -422, 476
Int8, 368
Int16 368
Int32, 368
Int64, 368
función, 1 80
Length,
,
comando, 74-75, 254, 285
Línea sólida, indicador, 1 79
Linspaee,
función, 28-29, 48-49, 180
Integración, 4 1 0-4 1 3
numérica, 465-470
Load,
comando, 40, 42, 49, 208
simbólica, 4 1 3
Interpl, función, 434-436, 442, 474, 476
opciones de interpolación en, 437
Interp2, función, 443, 474, 476
Interp3, función, 443, 474, 476
Interpn, función, 443, 474, 476
Interpolación, 433-444
lineal, 433-436
multidimensional, 442-444
segmentarla (spline) cúbica, 436-442
Log,
función, 59-60, 1 00, 3 1 4
Log2,
función, 59- 1 00
LoglO,
función, 59, 60, 1 00
Loglog, gráfica, 1 5 5
Logspace, comando, 28-29, 48-49
Liga
Functions-Alphabetical List, 5 8
MATLAB Functions Listed by Category, 5 8
Interfaz gráfica de usuario (GUI), 458, 476
Intmax,
comando, 95, 99
Intmin,
Limitaciones computacionales, 95-96
Línea(s)
ocultas, 5 1 0-5 1 1
comando, 95
punteada.
Inv,
indicador de, 1 79
función, 322, 333-334
rayada,
Iskeyword,
comando, 1 8
•
lsosurfaee,
indicador, 1 7 9
Lista
explícita, 27
función, 5 1 6
Type of 6t, 459
Isprime,
función, 65, 1 00
Isreal,
comando, 95, 1 00
Isvarname,
comando, 1 8
Isosuperficies, 5 1 2-5 1 3
M
M (indicador), 1 7 9
Magenta (indicador), 1 7 9
Magic,
función, 1 23, 1 25 , 1 28 - 1 29 , 332, 334
Mandelbrot,
Benoít, 494
J
J, función, 97, 9 9
Jet,
mapa de color, 1 7 1 , 1 80
Julia, Gaston, 494
K
K (indicador), 1 7 9
ilil" 5"'i1\",�, 494-497, 507
película (ejemplo), 507-509
Manipulación de gráficos, 500
Manipulador de función, 208-209
definición, 472
Manipuladores de gráficas, 5 0 1
Mapa de color, 1 7 1 , 500
autumn, 1 7 1 , 1 7 9
http://jurgensoft.co.cc
bone, 1 7 1 , 1 79, 5 1 5
colorcube, 1 7 1 , 1 79
cool, 1 7 1 , 1 79
copper, 1 7 1 , 1 79
flag, 1 7 1 , 1 79
gray, 489-490, 5 1 6
hot, 1 7 1 , 179
hsv, 1 7 1 , 1 80
interno, 5 14
jet, 1 7 1 , 1 80
personalizado, 488
creación, 5 1 4
pink, 1 7 1 , 1 80
prism, 1 7 1 , 1 80
spring, 1 7 1 , 1 80
summer, 1 7 1 , 1 80
winter, 1 7 1 , 1 80
Mapeo, 1 1 6
Maple, 1 , 387, 420, 4 1
Marca x , indicador, 1 79
Mars
Climate
Observer, 33-36
Orbiter, 3 1
Más, indicador, 1 79
Masa molar, 338
Matemáticas
combinatorias, 1 02
discretas, 64-65
simbólicas, 375-43 1
MathCad, 1
y mathematica, 1
MathWorks, 207
y caj a de herramientas de imágenes, 3-4
MATLAB , I -9
ambiente, 9-54
caja de herramientas de, 1 7
simbólica de, 375, 420
cajas de herramientas,
e; ingeniería biomédica, 3
editor/depurador de archivos-m, 42
en dinámica de fluidos, 4-5
en ingeniería eléctrica, 3
función, usada para encontrar determinantes, 333
inicio, 9
instalación de, 9
liga, Functions Listed by Category, 5 8
matemáticas simbólicas y, 375-43 1
matrices en, 20-36, 48
nomenclatura de, 1 88-189
o arreglos, 343-373
prompt (incitador) de, 9
reglas algebraicas usadas en, 1 0
resolución d e problemas con, 17-39
índice analítico 605
salir de, 9
solución de error en, J J
tipos de enteros, 348
tipos de datos almacenados en, 343-344
variables de, 1 8- 1 9
ventana(s), 9- 1 7
de apertura de, 9- 1 0
del área de trabajo, 1 2 - 1 5 , 40, 47
versiones de, 2
y despliegue de números, 36-39
y dinámica de fluidos, 4-5
y el botón de inicio, 1 7
y el uso en l a industria, 2-3
y espacio en blanco, 23
y funciones en línea, 208
y herramientas de ayuda, 57-58
y los caracteres especiales, 49
y matrices multidimensionales, 343
y menú Relp, 48, 57
y pi, 30
Y "procesamiento de números", 1 -2
y rescritura de comandos, 1 1
�atrices, 20-36, 48, 107- 133
definición de, 1 07- 1 09
diagonales, 125
esparcidas,
uso en cálculos, 352
especiales, 122- 1 28, 329-332
mágicas, 1 26- 1 28, 3 14
ingulares, 3 15
uso de operador punto y coma para definir, 109- 1 1 2
y operaciones
de arreglos, 27-36
escalares, 20-21
�atriz
bidimensional, 343
de ceros, 1 22- 1 24
determinación del tamaño de una, 74
de unos, 1 24
identidad, 3 14, 330-332, 352
inversa, 3 13-3 1 5
uso común de, 333-334
mal condicionada, 3 1 5
manipulación de una matriz, 107- 133
Rosser, 332
solución con uso de, 322-324
técnicas para determinar una, 333
vacía, 1 29
max, 1 00
Máximos y IlÚnimos, 70-7 1
Meshgrid, función 1 15 - 1 16, 1 28- 1 29, 1 72, 1 80, 182, 1 86,
2 1 0, 5 1 2
Media, 72-73
�ediana, 72-73
606 índice analítico
http://jurgensoft.co.cc
"Melancolía", de Albrecht Dürer, 1 27
Ode1l 3, 47 1 , 476
Metarchivo mej orado (.ernf), 499
"Ojo de buen cubero", 444
Menú
Opción
función, 266, 288
add folder, 206
help, 48, 5 7
more plots . . . , 1 7 6
insert, 1 7 5
new, 1 7
tools, 1 7 5
precision field, 223
Min, 1 00
save As. . ., 1 76
Mínimos cuadrados, 445
tools
Operaciones
de arreglos, 27-36
Modo celda, uso e n archivos-m MATLAB , 227-23 1
lista explícita, 27
Moore, Gordon, 1 8 3
escalares, 20-21
Multiplicación
de arreglos, 29
clemento por elemento, 2 9
y funciones matriciales, 30 1 - 3 2 1
Operador
asignación, 2 1
operador para, 1 95
comentario (o/e), 44
matricial, 309-3 1 1 , 3 3 2
not (-), 244
Y uso para encontrar el centro de gravedad, 3 1 1
or (1), 244
punto, 28
punto y coma, 109- 1 1 2, 1 29
transpose, 30, 1 96, 3 0 1 -302
N
\n, 223, 238
National Weather Service, 76, 1 1 2- 1 1 3
Navegación por ventana de Folder, 207
Naves espaciales Voyager 1 y 2, cálculo de la aceleración
de (ejemplo), 44-47
Nomenclatura de MATLAB , 1 8 8- 1 89
Operadores relacionales y lógicos, 243-245
Orden de operaciones, 2 1
Ordenación d e valores, 74
Ortogonalidad, 3 1 7 , 333
Otherwise, 2 6 1
Numerical Methods Using MATLAB (MathewslFink), 467
Números
aleatorios, 88-9 1
gaussianos, 89
uniformes, 88-89
complejos, 9 1 -95, 349
tipo de almacenamiento por defecto para, 349
despliegue de, 36-39
enteros, 348-349
índice, 1 08 - 109, 1 1 1 , 302
punto flotante precisión
doble, 344-346
sencilla, 346-348
reales, 100
o
0, 1 79
266, 288
Óvalo,
en diagramas de fiujo, 247
Notación científica, 36-37, 48
•
Basic Fitting, 455
width field, 223
Momento, 3 1 9
de una fuerza en torno a un punto, 3 1 9-3 2 1
->
tools -> Data Statistics. 455-458
técnica de regresión de, 474
P
P (indicador), 1 79
Pantalla
de ayuda en ventana, uso de, 5 7
por defecto, 9- 1 0
Paralelogramo, en diagramas de flujo, 247
Parámetros de aj uste interaetivo (ejemplo), 230-234
Pare Dormand-Prince, 47 1
Peaks, función, 485-487, 5 1 6
Película Mandelbrot (ej emplo), 507-509
Pentagrama, indicador, 1 79
Peso molecular (\1W), 338
Plano,
sombreado, 1 7 1
Población d e la Tierra (ejemplo), 459, 4 6 1
Potencia( s )
d e arreglos, 3 1 3
Ode15i, 47 1 , 476
de matriz, 3 1 2-3 1 3
Ode15s, 47 1 , 476
PowerPoint (Microsoft), 230
Ode23, 47 1 , 476
"Procesamiento de número", 1 -2
Ode23s, 47 1 , 476
Procesamiento de señal, uso de la función sine (ejemplo),
Ode23t, 47 1 , 476
Ode23tb, 47 1 , 476
Ode45, 47 1 , 476
250-253
Producto( s)
cruz, 3 1 7-32 1
http://jurgensoft.co.cc
punto, 302-303
función MATLAB para, 332
Producto
escalar, 302
vectoriales, 3 17 , 333
Propiedades
periódicas de los elementos, 1 65 - 1 67
termodinámicas:
expansión de tablas de vapor (ejemplo), 439-441
uso de tablas de vapor (ejemplo), 437-439
Pseudocódigo, 245-247
como enfoque de planeación, 246
Punto, indicador, 1 79
R
\r, 223, 238
R (indicador), 1 7 9
Radianes , 29
conversión a grados, 64-65, 1 90: 1 92
gaussianos, 89
uniforme, 88-89
Raya-punto, indicador, 1 7 9
Razón dorada, 297
Realmax, 95-96
Realmin, 95
Rectángulos,
en diagramas de flujo, 247
Regla del trapezoide, 466-467
Reingreso de comandos, 1 ]
Rescritura d e comandos, 1 1
Regresión
lineal, 444-446
polinomial, 447-448
Resolución
de problemas
en, ingeniería y ciencia, 3
expresiones y ecuaciones, 3 85-396
Rojo (indicador), ] 79
s
S (indicador), 179
Salida fonnateada. Vea función fprintf
Salir de MATLAB, 9
Scripts, 43
Secuencia, 243, 286
de comandos, guardar, 1 1
definición, 243
Series armónicas, 346-347
Sintaxis MATLAB para ealcular, 333
Sistema
de codificación ASen, 350-3 5 1 , 355
de ecuaciones
lineales, soluciones, 3 2 1
resolución, 389-390
índice analítico 607
Sobrescritura de comandos, 1 1
Sombreado, 485
plano, 1 7 1
S truct, definición, 360
Subdesbordamiento, 96
Subgráficas, 1 5 1 - 1 53
Subscripts, 253
Sumas y produetos, 73-74
Sustitución, 392
Switch/case, estructura, 260-262, 266
T
\t, 223, 238
Tabla(s)
de vapor:
expansión de las (ejemplo), 439-44 1
grados a radianes, creación (ejemplo), 273-275
Tamaño de grano ASTM, 1 92
y fortaleza de metal (ejemplo), 1 96- 1 9 8
Tasas d e difusión (ejemplo), 1 56- 1 59
Técnica(s)
de regresión de mínimos cuadrados, 474
numéricas, 433-483
Temas help, 57
Teoría de relatividad, 5-6
Tipo(s)
de datos,
375
numérico, 344-350
primario, 343, 367
de enteros,
MATLAB, 348
entero
no signado, 348-349
signado, 348-349
Transparencia, 509-5 1 0
Triángulo
abajo, indicador, 1 79
arriba (indicador), 1 79
derecho (indicador), 1 79
izquierda (indicador), 179
Tutorial help, 237-238, 504, 5 1 3
U
Uint8, 368
Uintl6, 368
Uint32, 368
Uint64, 368
Unidad(es)
de ingeniería estadounidenses, 3 1
desalinizadora, balances de materiales en (ejemplo),
326-329
estándar estadounidenses, 3 1
inglesas, 3 1
SI (Systeme International), 3 1
608
índice analítico
http://jurgensoft.co.cc
Uso
Ventana(s), 9- 1 7
de graficación simbólica para ilustrar un problema de
d e apertura, 9- 1 0
balística), 402-404
d e ayuda d e funciones matemáticas, 5 9
de matemáticas simbólicas
d e comandos, 9, 1 1 , 40, 47
( ej emplo ) , 3 8 8 - 389
de directorio actual, 1 5 , 47
para eneontrar el ángulo de lanzamiento óptimo,
de documentos, 1 5 - 1 6 , 48
409-4 1 0
de edición, 1 7 , 42-43 , 48
de figura, 1 76, 501
para encontrar el trabajo producido en u n pistón,
4 1 4-4 1 7
de gráficas, 1 6- 1 7 , 48
del área de trabajo, 1 2- 1 5 , 40-41 , 47
para resolver un problema de balística (ej emplo),
desplegable de editor de propiedades, 503
394-396
historia de comandos, 47
v
Verde, indicador, 1 7 9
V (indicador), 1 79
Visualización d e volumen, 5 1 1 -5 14
de datos escalares, 5 1 2-5 1 3
Valorees)
de datos vectoriales, 5 1 3-5 1 4
especiales y funciones varias, 97-98
promedios, 72-73
Varagin, 206, 2 10
Variable(s), 12, 1 8 - 1 9
A, 13
W
Weather_Data.xls, 76, 84
Wind, 5 1 3 , 5 1 6
ans, 1 2- 1 3 , 49, 203 , 3 1 4, 386, 390
Winter, mapa de color, 1 7 1 , 1 80
B, 1 3
Word (Microsoft), 230
globales, 204, 209
en la vida cotidiana, uso de, 204
X
convención de nomenclatura, 204
Xlabel , 1 80
guardar, 40-42
locales, 202-204
y
simbólicas, 420
y (indicador), 1 7 9
unnamed, 1 6
YIabel, 1 80
Variable_list, 4 l
Varianza, 74-75
y desviación estándar, 74-75
Vector, 20, 27-28
Vectores, 343
fuerza (ejemplo), 306-308
Z
ZlabeI, 1 80