Sei sulla pagina 1di 195

BIBLIOGRAFA

ii

MATLAB aplicado a las ciencias de la ingeniera

MATLAB aplicado a las ciencias de la ingeniera

iii

iv

MATLAB aplicado a las ciencias de la ingeniera

Primera edicin, marzo 2016.


250 ejemplares
Hecho el Depsito Legal en la Biblioteca Nacional del Per N 2016-02237.
Editado por:
Rubn Galeas Arana.
Jr. Tarapac 672 Pilcomayo-Huancayo-Junn.
Impreso en:
Multiservicios Centro Grfico del Sr. Heber Garca Dorregaray.
Jr. Maran 121 Huancayo.
RUC. 10198637993.
Marzo 2016.
MATLAB APLICADO A LAS CIENCIAS DE LA INGENIERA
Cdigo CTI : 0403 0503 IMPLEMENTACIN DE ESTNDARES PARA LA
SEGURIDAD Y ADMINISTRACIN DE DATOS Y PROGRAMAS
Cdigo UNESCO : 1203 17 INFORMTICA.
ISBN: 978-612-00-2196-5
Autores:
Mg. Rubn Galeas Arana.
Mg. Juan Guido Arellano Guerrero.
Ing. Hernn Ramn Juan de Dios Balden.
Derechos Reservados.
Prohibida la reproduccin total o parcial de este libro, su tratamiento informtico,
la transmisin de ninguna otra forma o por cualquier otro medio; ya sea
electrnico, mecnico, por fotocopia u otros mtodos; sin permiso previo y por
escrito de los autores.
Distribucin y Ventas.
Jr. Tarapac 672 Pilcomayo-Huancayo.
Telfono: 064-261444.
r_galeas_a@hotmail.com

MATLAB aplicado a las ciencias de la ingeniera

UNIVERSIDAD NACIONAL DEL CENTRO DEL PERU


CENTRO DE INVESTIGACIN DE LA UNCP
Instituto de Investigacin de la Facultad de Ingeniera Elctrica y Electrnica

INFORME FINAL
Proyecto: LIBRO DE INVESTIGACIN
Ttulo:

MATLAB APLICADO A LAS CIENCIAS


DE LA INGENIERA
Cdigo CTI

Cdigo UNESCO

: 0403 0503 IMPLEMENTACIN DE ESTANDARES PARA LA


SEGURIDAD Y ADMINISTRACIN DE DATOS Y PROGRAMAS

: 1203 17 INFORMTICA

Fecha de inscripcin

: 10 de junio de 2015

Fecha de culminacin : 10 de marzo de 2016


Ejecutores:
Apellidos y Nombres

Investigador1

Participacin2

Facultad /Dependencia
/Institucin

GALEAS ARANA RUBEN

Docente

Responsable

FIEE

ARELLANO GUERRERO JUAN

Docente

Corresponsable

FIEE

JUAN DE DIOS BALDEON HERNAN

Docente

Colaborador

FIEE

vi

MATLAB aplicado a las ciencias de la ingeniera

MATLAB aplicado a las ciencias de la ingeniera

vii

Cuidemos nuestro medio ambiente, recuerda


que ste es nuestro nico hogar, no tenemos
otro.

A todos los profesionales que confan en la


ingeniera, porque la ingeniera nunca engaa.

viii

MATLAB aplicado a las ciencias de la ingeniera

MATLAB aplicado a las ciencias de la ingeniera

ix

LISTA DE FIGURAS
Figura 1.1. Pantalla del escritorio donde est el cono del MATLAB.
Figura 1.2. Pantalla principal del MATLAB versin R2015a.
Figura 1.3. Opciones para activar las ventanas Workspace y Command History.
Figura 1.4. Pantalla principal del MATLAB con la Ventana de comandos, ventana de trabajo y la
ventana de historia de comandos.
Figura 1.5. Modo de uso de la ventana de comandos.
Figura 1.6. Ventana del rea de trabajo.
Figura 1.7. Ventana de historia de comandos.
Figura 1.8. Ventana de ayuda de la sentencia sqrt.
Figura 1.9. conos que permiten guarda y recuperar variables de trabajo.
Figura 3.1. Representacin grfica de un arreglo unidimensional.
Figura 3.2. Representacin de una matriz de mxn.
Figura 4.1. Pantalla principal del MATLAB que muestra los botones para crear archivos M-Ficheros.
Figura 4.2. Pantalla principal del MATLAB en el que se muestra la ventana de editor de programas.
Figura 4.3. Ventana de grabacin de archivos.
Figura 4.4. Estructura secuencial.
Figura 4.5. Ventana de editor de programas del MATLAB.
Figura 4.6. Estructura condicional simple.
Figura 4.7. Estructura condicional doble.
Figura 4.8. Estructura condicional mltiple.
Figura 4.9. Estructura de decisin mltiple.
Figura 4.10. Estructura repetitiva mientras.
Figura 4.11. Ventana que muestra la parbola con 8 puntos.
Figura 4.12. Ventana que muestra la parbola con 100 puntos.
Figura 5.1. Ventana grfica del MATLAB.
Figura 5.2. Grafico que muestra la unin de los puntos (3;1), (5;3), (2;-1) y (4;3).
Figura 5.3. Grfica de una recta conociendo dos puntos.
Figura 5.4. Grfica de la recta de la Figura 5.3 en MATLAB con ejes iguales.
Figura 5.5. Grfica de la recta de la Figura 5.3 en MATLAB con rea definida.
Figura 5.6. Grfica de la recta de la Figura 5.3 en MATLAB con rejilla.
Figura 5.7. Grfico que representa a la recta y=2x-3.
Figura 5.8. Grfico que representa a la recta y=2x-3 con rejillas ms pequeas.
Figura 5.9. Grfico que representa a la parbola y=2x2-4x+5.
Figura 5.10. Grfico que representa a la funcin cbica y=x3-6x2+2x-3.
Figura 5.11. Grfico que representa a la funcin de la forma y=x4+x3-5x2-3.
Figura 5.12. Grficas de funciones racionales de la forma y=1/p(x).
Figura 5.13. Grfico que representa a la funcin de la forma y=1/(2-x).
Figura 5.14. Grfico que representa a la funcin de la forma y=1/(x2+x-12).
Figura 5.15. Grfica tradicional de la funcin y=sen(x).
Figura 5.16. Grfico que representa a la funcin de la forma y=sind(x).
Figura 5.17. Grfico que representa a la funcin de la forma y=2+sind(x).
Figura 5.18. Grfico que representa a la funcin de la forma y=sind(x+90).
Figura 5.19. Grfico que representa a la funcin de la forma y=3sind(x).

x
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura
Figura

MATLAB aplicado a las ciencias de la ingeniera

5.20. Grfico que representa a la funcin de la forma y=sind(3x).


5.21. Grfico de la funcin sinusoidal de la forma y= y=2+3sind(3x+90).
5.22. Grfico una funcin por partes.
5.23. Usos de la funcin plot(x,y,'linestyle','--','marker','x','color','r','linewidth',2.5).
5.24. Usos de la funcin plot(x,y,'-o').
5.25. Grfico de mltiples curvas.
5.26. Grfico de mltiples curvas con caractersticas de cada curva.
5.27. Grfico de mltiples curvas utilizando la sentencia hold on.
5.28. Grfico utilizando todas las caractersticas de los grficos en MATLAB.
5.29. Grfica en mltiples ventanas en MATLAB.
5.30. Representacin del plano polar.
5.31. Representacin del punto P(4,70) en el plano polar.
5.32. Representacin de los puntos (2.5,30), (6,45) y (4,70) en el plano polar.
5.33. Utilizacin de las caractersticas especiales de la funcin polar.
5.34. Utilizacin de las caractersticas especiales de la funcin polar.
5.35. Utilizacin de las funciones logartmicas en MATLAB.
5.36. Vectores en el plano cartesiano.
5.37. Uso de la funcin compass.
5.38. Comparacin de las sentencias plot y fill.
5.39. Puntos de una lnea en 3D.
5.40. Grfico de una lnea en 3D con la funcin plot3.
5.41. Grfico de un resorte en 3D con la funcin plot3.
5.42. Uso de la funcin plot3 con sus caractersticas especiales.
5.43. Uso de las funciones plot3, mesh y surf.
5.44. Uso de la funcin mesh con un mejor acabado.
5.45. Uso de la funcin surf con un mejor acabado.
5.46. Uso de la funcin surf con shading flat con un mejor acabado.
5.47. Uso de la funcin contour con 25 curvas de nivel.
5.48. Uso de la funcin contour3 con 25 curvas de nivel.
5.49. Uso de la funcin sphere con n=20 (por defecto).
5.50. Uso de la funcin sphere con n=10.
5.51. Uso de la funcin cylinder con r=1 y n=20 (por defecto).
5.52. Uso de la funcin cylinder con r=5 y n=10.
5.53. Resultado final despus de ejecutar la funcin movimiento.

MATLAB aplicado a las ciencias de la ingeniera

xi

INTRODUCCIN
MATLAB es el nombre abreviado de MATriz LABoratory, es un lenguaje de programacin
especialmente diseado para el uso con fines cientficos o de ingeniera, por tanto, nos permite
programar todo tipo de clculos numricos con matrices, vectores, nmeros escalares (tanto con
nmeros reales como con nm eros complejos) y cadenas de caracteres; de una manera ms
sencilla y eficiente que otros lenguajes de programacin. Dicho de otro modo, MATLAB te brinda las
herramientas necesarias con las que t construyes el programa que te permitir resolver los clculos
necesarios para t anlisis, trabajo o proyecto.
Antes de que empieces a leer esta entrada queremos hacerte una advertencia. MATLAB (como
cualquier otro programa de clculo cientfico) no es una excepcin a la regla de que slo se aprende
con prctica, esfuerzo y muchas horas de estudio y dedicacin, como tantas otras cosas en la vida.
Por supuesto, si utilizas material de apoyo y alguien que gue tus primeros pasos, las muchas horas
sern tan slo unas cuantas horas y ya podrs utilizar el software para los propsitos que desees.
Todo esto suena un poco complicado, pero los principios que rigen MATLAB son sencillos,
especialmente si conoces otros lenguajes de programacin como C++, Visual Basic, FoxPro entre
otros. MATLAB es un lenguaje de alto rendimiento para clculos tcnicos, uno de sus puntos
importantes es que permite construir nuestras propias herramientas reutilizables. Podemos crear
fcilmente nuestras propias funciones y programas especiales (conocidos como M-archivos) en
cdigo Matlab, los podemos agrupar en Toolbox (tambin llamadas libreras): coleccin especializada
de M-archivos para trabajar en clases particulares de problemas. Matlab, a parte del clculo
matricial y lgebra lineal, tambin perm ite hacer clculos con polinomios, funciones, lmites,
derivadas, integrales, ecuaciones diferenciales ordinarias, grficos, aplicaciones GUI (Interfaz Grfica
de Usuario) y simulaciones con el SIMULINK.
Quiz la parte ms difcil, es que modifiques tu modo de pensar de humano a mquina, diseando
un algoritmo que el software y t comprendas.

Los autores.

xii

MATLAB aplicado a las ciencias de la ingeniera

MATLAB aplicado a las ciencias de la ingeniera

xiii

NDICE
INTRODUCCIN

xi

CAPTULO I: CARACTERSTICAS BSICAS DEL MATLAB

1.1 EL ESPACIO DE TRABAJO DEL MATLAB.

1.2 VENTANAS DEL MATLAB.

a) Ventana de comandos (command window).

b) Ventana del rea de trabajo (Workspace).

c) Ventana de historia de comandos (Command history).

1.3 AYUDA EN LNEA (HELP).

1.4 ALMACENAR Y RECUPERAR DATOS.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

13

2.1 VARIABLES EN MATLAB.

13

2.2 CONSTANTES EN MATLAB.

13

2.3 OPERACIONES CON ESCALARES EN MATLAB.

14

2.4 VISUALIZACIN DE DATOS EN LA VENTANA DE COMANDOS.

17

2.5 FORMATOS DE SALIDA EN MATLAB.

18

2.6 USO DE PARNTESIS Y PRECEDENCIA DE LAS OPERACIONES EN MATLAB.

20

2.7 FUNCIONES INTERNAS O PREDEFINICAS EN MATLAB.

21

APLICACIONES DEL CAPTULO II.

34

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

47

3.1 ARREGLO UNIDIMENSIONAL (LISTA O VECTOR).

47

a) Formas abreviadas de construir un vector.

50

b) Operaciones aritmticas con vectores.

53

c) Funciones que trabajan con vectores.

57

3.2 ARREGLO BIDIMENSIONAL (MATRIZ).

61

a) Operaciones aritmticas con matrices.

67

b) Funciones que trabajan con matrices.

72

c) Construccin rpida de matrices.

78

APLICACIONES DEL CAPTULO III.

81

xiv

MATLAB aplicado a las ciencias de la ingeniera

CAPTULO IV: PROGRAMACIN EN MATLAB

93

4.1 CREACIN DE ARCHIVOS M-FICHEROS EN MATLAB.

93

4.2 OPERACIONES DE ENTREDA Y SALIDA DE DATOS EN MATLAB.

95

a) Entrada de datos (lectura de datos).

95

b) Salida de datos.

95

4.3 ESTRUCTURAS SECUENCIALES.

97

4.4. ESTRUCTURAS CONDICIONALES.

98

a) Operadores de relacin en MATLAB.

99

b) Operadores lgicos en MATLAB.

99

c) Estructura condicional simple (if end).

100

d) Estructura condicional doble (if else end).

101

e) Estructura condicional mltiple (if elseif elseif else ... end)

103

f) Estructura de decisin mltiple (switch case1 case2 otherwise ... end)

105

4.5. ESTRUCTURAS DE CONTROL REPETITIVOS.

108

a) Contador.

108

b) Acumulador.

108

c) Estructura repetitiva mientras (while --- end).

108

d) Estructura repetitiva para (for --- end).

110

4.6. FUNCIONES DEFINADAS POR EL USUARIO.

112

a) Estructura de una funcin definida por el usuario.

113

b) Funciones sin entrada o salida.

114

APLICACIONES DEL CAPTULO IV.

117

CAPTULO V: GRFICOS EN MATLAB

121

5.1 GRFICAS BIDIMENSIONALES 2D.

121

a) Grficas de funciones de la forma y = f(x).

122

- Grfica de una recta de la forma y=ax+b.

122

- Grfica de una funcin cuadrtica de la forma y=ax2+bx+c (parbola).

127

- Grfica de una funcin cbica de la forma y=ax3+bx2+cx+d.

128

- Grfica de funciones polinmicas de la forma y=an xn+an-1xn-1+an-2 xn-2++ao.

129

- Grfica de una funcin racional de la forma y=1/p(x).

131

- Grfica de una funcin sinusoidal de la forma y=a+b.sen(cx+).

133

- Grfica de una funcin por partes.

137

b) Caractersticas especiales de la funcin plot.

139

c) Grfica de mltiples curvas con la funcin plot.

141

MATLAB aplicado a las ciencias de la ingeniera

xv

d) Grfica en mltiples ventanas (subgrficas).

142

e) Curvas en polares.

145

f) Funciones logartmicas.

149

g) Funciones de grficos especiales.

150

5.2 GRFICAS TRIDIMENSIONAL - 3D.

152

a) Curvas en el espacio.

152

b) Grficas de funciones de la forma z = f(x;y).

155

c) Algunas superficies conocidas en el espacio.

162

5.4 GRFICAS EN MOVIMEINTO (MOVIES).

165

APLICACIONES DEL CAPTULO V.

166

BIBLIOGRAFA

179

xvi

MATLAB aplicado a las ciencias de la ingeniera

BIBLIOGRAFA

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

CAPTULO I: CARACTERSTICAS BSICAS DEL MATLAB

CAPTULO I
CARACTERSTICAS BSICAS DEL MATLAB
1.1 EL ESPACIO DE TRABAJO DEL MATLAB.
Usar MATLAB por primera vez es fcil, dominarlo puede tomar aos. En este captulo se
introducir al lector al ambiente de MATLAB y se le mostrar cmo efectuar clculos m atemticos
bsicos.
Dado que el procedimiento para instalar MATLAB depende de su sistema operativo de la
computadora, se supone que el lector tiene instalado MATLAB en su computadora o que trabaja
en un laboratorio de computacin donde tiene instalado el MATLAB.
Para iniciar MATLAB en el ambiente Windows se debe hacer doble clic en el cono del escritorio
que se muestra en la Figura 1.1, recordando al lector que la versin que estudiaremos en la
presente edicin es el MATLAB R2015a

Figura 1.1. Pantalla del escritorio donde est el cono del MATLAB.
Una vez abierto el MATLAB debe salir la pantalla principal delMATLAB R2015a que se muestra
en la Figura 1.2, en el cual se muestra la ventana de comando (Command Window) con el prompt
del MATLAB (>>) el cual indica que el MATLAB est listo para que ingrese un comando.

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 1.2. Pantalla principal del MATLAB versin R2015a.


La parte ms importante que se muestra en la Figura 1.2 es el Command Window (Ventana de
comandos), en esta ventana se puede realizar clculos en forma similar a como lo hace en un
calculadora cientfica. Por ejemplo para calcular una suma de 5+6 se escribe el siguiente
comando en el prompt del MATLAB (>>).
>> 5+6
ans =
11
Tambin se puede hacer operaciones combinadas tales como:
>> 3+4*(7-2)
ans =
23

Otro ejemplo.
>> cos(pi/3)
ans =
0.5000

CAPTULO I: CARACTERSTICAS BSICAS DEL MATLAB

1.2 VENTANAS DEL MATLAB.


MATLAB utiliza varias ventanas de despliegue, tal como se puede observar en la Figura 1.2, la
vista principal al momento de cargar el MATLAB solo muestra la Ventana de Comandos
(Command Windows), sin embargo existen dos ventanas importantes para un adecuado uso del
MATLAB, dichas ventanas son la Ventana del rea de trabajo (Workspace) y la Ventana de
historia de comandos (Command history), las cuales se activan haciendo clic en el cono Layout
del men y luego seleccionar la opcin Three Column, luego seleccionar la opcin Command
History y activar la opcin Docked (ver Figura 1.3).

Figura 1.3. Opciones para activar las ventanas Workspace y Command History.
Luego de activar dichas ventanas, la pantalla principal se ver tal como se muestra en la Figura
1.4, en el cual se puede apreciar las tres ventanas ms importantes del MATLAB.

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 1.4. Pantalla principal del MATLAB con la Ventana de comandos, ventana de trabajo y la
ventana de historia de comandos.
a) Ventana de comandos (command window).
Esta ventana ofrece un ambiente similar a una memoria de trabajo, en el cual se realiza las
operaciones matemticas, se almacena valores y resultados calculados en variables, se invoca
a las funciones que tiene el MATLAB, etc.; esta ventana es la ms importante del MATLAB y
siempre debe estar visible.
Como ejemplo se puede ingresar los datos que se muestran en la Figura 1.5, en el cual se
almacena el valor de 12 en la variable a, el valor de 5 en la variable b y luego se calcula la
suma de a+b y se almacena en la variable c.
Si se desea limpiar la pantalla de la ventana de comandos se debe utilizar la sentencia clc.
>>clc
Para salir del MATLAB se debe utilizar la sentencia quit.
>>quit
Para hacer comentarios en MATLAB se debe utilizar el smbolo de porcentaje (%).
>>X=12;

%se define la variable X con un valor de 12

>>A=[2,1,3,6,9,4];

%se define el array A con 6 elementos.

CAPTULO I: CARACTERSTICAS BSICAS DEL MATLAB

Figura 1.5. Modo de uso de la ventana de comandos.


b) Ventana del rea de trabajo (Workspace).
Esta ventana bsicamente sirve para mantenernos informados sobre el valor actual que tienen
las variables que se ejecutan en la ventana de comandos, en la Figura 1.6 se muestra un
ejemplo de las variables a, b y c ejecutados cuyos valores son 12, 5 y 17 respectivamente.

Figura 1.6. Ventana del rea de trabajo.


Si se desea borrar alguna variable en particular se debe utilizar la sentencia clear en la ventana
de comandos, por ejemplo si deseamos borrar la variable b se pondra:
>>clear b

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Y si quisiramos borrar todas las variables utilizaramos simplemente la sentencia clear.


>>clear
Para saber qu variables se han utilizado y que estn guardados en la memoria se puede
utilizar la sentencia who o whos.
>>who
c) Ventana de historia de comandos (Command history).
Esta ventana registra todos los comandos que se escriben en la ventana de comandos, este
registro se realiza por fechas; entonces cuando se desea volver a ejecutar alguna operacin o
alguna sentencia simplemente se busca en la ventana de historia de comandos y se hace
doble clic y en la ventana de comandos se ejecutar la accin correspondiente. En la Figura 1.7
se muestra los comandos que se ejecutaron en la ventana de comandos que se muestra en la
Figura 1.5.

Figura 1.7. Ventana de historia de comandos.


1.3 AYUDA EN LNEA (HELP).
MATLAB dispone de una excelente sentencia de ayuda en lnea, esta sentencia es help con el
que se puede encontrar ayuda en lnea de alguna funcin o sentencia que tiene el MATLAB.
Existe varias formas de ingresar al help, pero el ms recomendable es digitar la sentencia help
seguido del comando o funcin sobre el cual se necesita la ayuda, por ejemplo si deseamos ayuda
sobre la sentencia sqrt en la ventana de comandos se digitara lo siguiente:
>>help sqrt
En ese momento saldr la ventana que se muestra en la Figura 1.8.

CAPTULO I: CARACTERSTICAS BSICAS DEL MATLAB

Figura 1.8. Ventana de ayuda de la sentencia sqrt.


En la ventana de la Figura 1.8 se observa varias opciones de la cuales se puede resaltar que
cuando se desea mayor informacin sobre la sentencia de ayuda se debe hacer clic en la opcin
reference page for sqrt, luego del cual saldr una nueva ventana de ayuda con toda la informacin
referente a la sentencia sqrt y de las sentencias relacionadas con esta.
1.4 ALMACENAR Y RECUPERAR DATOS.
Matlab permite guardar y cargar datos de los archivos del computador. Para guardar todas las
variables actuales que se encuentran en la ventana Workspace se debe hacer clic en el cono
Save Workspace que se muestra en la Figura 1.9, y con la opcin del cono Import Data se
carga l a s variables de un espacio de trabajo guardado previamente.

Figura 1.9. conos que permiten guarda y recuperar variables de trabajo.

10

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

BIBLIOGRAFA

11

12

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

13

CAPTULO II
OPERACIONES Y FUNCIONES BSICAS CON MATLAB
2.1 VARIABLES EN MATLAB.
En MATLAB como en cualquier otro lenguaje de programacin se utilizan variables, estas deben
tener un nombre segn ciertas reglas que se enumeran a continuacin:
* Necesariamente tienen que empezar por una letra y pueden estar seguidos de letras, dgitos y
o el smbolo subguin ( _ ). Por ejemplo: A, b1, suma, altura, suma1, suma_edad son variables
vlidos, mientras que 1suma, 2b, suma-edad no se pueden utilizar como variables.
* Las maysculas y minsculas se diferencian en los nombres de variables. Por ejemplo A y a
son dos variables diferentes, de igual manera Suma y suma son dos variables diferentes.
* Los nombres de variables no pueden contener ningn smbolo, no es vlido usar los smbolos:
+, -, *, /, \, >, <, @, %, &, #, etc.
* Es recomendable no usar como nombre de variables las sentencias predefinidas del MATLAB,
por ejemplo no se debe usar for, if, while, close, end, pi, sin, cos, etc.
A diferencia de otros lenguajes de programacin en MATLAB no es necesario declarar las
variables. En el siguiente ejemplo se muestra el uso de las variables base, altura y area.
>> base=12
base =
12
>> altura=5
altura =
5
>> area=base*altura
area =
60
2.2 CONSTANTES EN MATLAB.
El MATLAB tiene predefinido algunas constantes que es recomendable no volverlos a definir con
otros valores, dichas constantes se muestran en el Cuadro 2.1.

14

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Por ejemplo:
>> pi
ans =
3.1416
>> i
ans =
0 + 1.0000i
>> realmax
ans =
1.7977e+308

Constante
ans
pi
eps
inf
nan
iyj
realmin
realmax

Cuadro 2.1. Relacin de constantes definidas en MATLAB.


Definicin
Variable usada por defecto para almacenar el ltimo
resultado
Razn de una circunferencia a su dimetro
Nmero ms pequeo, tal que cuando se le suma 1,
crea un nmero en coma flotante en el computador mayor
que
1
Infinito
Magnitud no numrica
i = j = 1
El nmero real positivo ms pequeo que es utilizable
El nmero real positivo ms grande que es utilizable

Valor
???
3.1416
2.2204e-016
infinito
NaN
0 + 1.0000i

2.2251e-308
1.7977e+308

2.3 OPERACIONES CON ESCALARES EN MATLAB.


MATLAB, a diferencia de otros lenguajes de programacin, realiza operaciones con nmeros
enteros, reales y complejos tanto con escalares como con matrices (este tema se ver ms
adelante), a continuacin desarrollaremos las operaciones con escalares (enteros, reales y
complejos).
Todas las operaciones aritmticas que se realizan entre dos escalares se muestra en el
Cuadro 2.2.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

Operacin
aritmtica

+
*
/
\
^

15

Cuadro 2.2. Operaciones aritmticas con MATLAB.


Sintaxis
Descripcin
en MATLAB
a+b
Suma de a y b.
a-b
Resta de a y b
a*b
Multiplicacin a y b
a/b
Divisin de a entre b.
a\b
Divisin inversa de a entre b, es decir a\b=b/a.
a^b
Potenciacin de a elevado a la b (ab)

En el siguiente ejemplo se muestra los resultados de las operaciones aritmticas con MATLAB.
>> a=12.5678954
a=
12.5679
>> b=5.987654332
b=
5.9877
>> suma=a+b
suma =
18.5555
>> resta=a-b
resta =
6.5802
>> multiplicacion=a*b
multiplicacion =
75.2522
>> division=a/b
division =
2.0990
>> divinversa=a\b

16

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

divinversa =
0.4764
>> potencia=a^b
potencia =
3.8195e+06
Como se dijo anteriormente, el MATLAB tambin trabaja con nmeros complejos tal como se
muestra a continuacin.
>> a=3+2i
a=
3.0000 + 2.0000i
>> b=5.67-3.87654i
b=
5.6700 - 3.8765i
>> suma=a+b
suma =
8.6700 - 1.8765i
>> resta=a-b
resta =
-2.6700 + 5.8765i
>> multiplicacion=a*b
multiplicacion =
24.7631 - 0.2896i
>> division=a/b
division =
0.1962 + 0.4869i
>> divinversa=a\b
divinversa =
0.7121 - 1.7669i

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

17

>> potencia=a^b
potencia =
-9.3838e+02 - 1.4028e+04i
2.4 VISUALIZACIN DE DATOS EN LA VENTANA DE COMANDOS.
Un aspecto importante a tener en cuenta en MATLAB, es el uso del punto y coma (;) al final de
las sentencias que se escriben en la ventana de comandos; como se puede observar en los
ejemplos anteriores no hemos usado el punto y coma, lo que significa que el resultado de una
variable se muestra en pantalla mientras que si pondramos el punto y coma, el resultado solo se
podra ver en la ventana de trabajo (Workspace) en los siguientes ejemplos analizaremos ambos
casos.
Cuando no se usa el punto y coma.
>> a=12.56
a=
12.5600
>> b=2.213
b=
2.2130
>> c=a+b
c=
14.7730
>> d=a-b
d=
10.3470
Cuando se usa el punto y coma.
>> a=12.56;
>> b=2.213;

18

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> c=a+b;
>> d=a-b;
>> suma=a+c;
>> q=a*b;
2.5 FORMATOS DE SALIDA EN MATLAB.
Todos los clculos que se realizan en MATLAB se hacen en doble presin, sin embargo por
defecto slo se muestran los resultados con 4 cifras decimales, pero cuando se desea ver los
resultados con dos decimales o con 15 decimales se utiliza la sentencia format, cuyos formatos
de salida se muestran en el Cuadro 2.3 para el valor de pi.
Cuadro 2.3. Valores de la constante pi en varios formatos que acepta el MATLAB.

Tipo
format short
format long
format short e
format long e
format short g
format long g
format bank
format hex
format rat

Resultado

Ejemplo: >> pi

Formato coma fija con 4 dgitos despus de la


coma (es el formato que viene por defecto).
Formato coma fija con 15 dgitos despus de
la coma.
Formato coma flotante con 4 dgitos despus
de la coma en formato cientfico.
Formato coma flotante con 15 dgitos
despus de la coma en formato cientfico.
La mejor entre coma fija o flotante con 4
dgitos despus de la coma.
La mejor entre coma fija o flotante con 15
dgitos despus de la coma
Formato coma fija con 2 dgitos despus de la
coma
Hexadecimal
Aproximacin racional

3.1416
3.14159265358979
3.1416e+000
3.141592653589793e+000
3.1416
3.14159265358979
3.14
400921fb54442d18
355/113

En los siguientes ejemplos podemos darnos cuenta sobre el uso de la sentencia format.
>> format long
>> a=12.5678954
a=
12.567895399999999
>> b=5.987654332
b=

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

5.987654332000000
>> suma=a+b
suma =
18.555549731999999
>> resta=a-b
resta =
6.580241067999999
>> multiplicacion=a*b
multiplicacion =
75.252213335932865
>> division=a/b
division =
2.098968093871588
>> divinversa=a\b
divinversa =
0.476424583546423
>> potencia=a^b
potencia =
3.819479772876211e+06
Y si ponemos format bank, sera:
>> format bank
>> a=12.5678954
a=
12.57
>> b=5.987654332
b=
5.99
>> suma=a+b

19

20

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

suma =
18.56
>> resta=a-b
resta =
6.58
>> multiplicacion=a*b
multiplicacion =
75.25
>> division=a/b
division =
2.10
>> divinversa=a\b
divinversa =
0.48
>> potencia=a^b
potencia =
3819479.77
Para regresar a su estado por defecto solo se debe utilizar la sentencia format.
>>format

%retorna los valores de salida por defecto.

2.6 USO DE PARNTESIS Y PRECEDENCIA DE LAS OPERACIONES EN MATLAB.


Para hacer clculos aritmticos en MATLAB se debe tener en cuenta el uso correcto de los
parntesis y la precedencia de las operaciones aritmticas.
Las operaciones producto * y el cociente / tienen precedencia sobre la suma + y la diferencia
-, tal como podemos ver en los siguientes ejemplos, adems utilizamos parntesis para cambiar
el orden en el que se efectan las operaciones:
>> 2*3+4

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

21

ans =
10
>> 2*(3+4)
ans =
14
>> 2/3+4
ans =
4.6667
>> 2/(3+4)
ans =
0.2857
Hay que tener cuidado a la hora de realizar las operaciones, ya que a veces podemos obtener un
resultado distinto al esperado, al no estar acostumbrados a escribir las operaciones en una sola
lnea y no utilizar de modo adecuado los parntesis.
2.7 FUNCIONES INTERNAS O PREDEFINICAS EN MATLAB.
La versin R2015a del MATLAB posee un gran nmero de funciones implementadas, a las cuales
se invoca escribiendo el nombre de la funcin junto con el parmetro o parmetros necesarios. A
continuacin desarrollaremos solo las principales funciones predefinidas en MATLAB, sin
embargo si el lector quiere saber ms sobre alguna funcin en especial, lo nico que tiene que
hacer es usar la opcin help nombre de la funcin, por ejemplo:
>> help sqrt % se mostrar toda la ayuda referente a la funcin sqrt (ver Figura 1.8).

Funcin
ceil(x)
fix(x)
floor(x)
mod(x,y)
rem(x,y)
round(x)
rand()

Cuadro 2.4. Funciones aritmticas.


Descripcin
Redondea al entero ms cercano hacia infinito positivo del valor de x.
Redondea al entero ms cercano hacia cero del valor de x.
Redondea al entero ms cercano hacia menos infinito del valor de x.
Calcula el residuo de una divisin de x/y
Calcula el residuo de una divisin de x/y
Redondea al entero ms cercano de x.
Genera un nmero aleatorio entre 0 y 1.

22

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

A continuacin se desarrolla algunas formas de utilizar las funciones aritmticas.


>> ceil(12.4)
ans =
13
>> ceil(-2.3)
ans =
-2
>> ceil(20/6)
ans =
4
>> ceil(2.6+3.2i)
ans =
3.0000 + 4.0000i
>> fix(3.1)
ans =
3
>> fix(3.8)
ans =
3
>> fix(-3.8)
ans =
-3
>> fix(2.7-2.6i)
ans =
2.0000 - 2.0000i
>> floor(6.7)
ans =

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

6
>> floor(-6.7)
ans =
-7
>> floor(20/6)
ans =
3
>> floor(2.4-9.6i)
ans =
2.0000 -10.0000i
>> mod(20,6)
ans =
2
>> mod(49,7)
ans =
0
>> rem(20,6)
ans =
2
>> rem(49,7)
ans =
0
>> rand()
ans =
0.9649
>> rand()

23

24

FIEE UNCP

Funcin
sin(x)
sind(x)
asin(x)
asind(x)
sinh(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

Rubn Galeas Juan Arellano Hernn Juan de Dios

Cuadro 2.5. Funciones trigonomtricas.


Descripcin
valor del seno de x expresado en radianes.
valor del seno de x expresado en grados sexagesimales.
valor en radianes del arco seno de x.
valor en grados sexagesimales del arco seno de x.
seno hiperblico de x en radianes.

sinh(x)=(e x-e-x)/2
asinh(x)
cos(x)
cosd(x)
acos(x)
acosd(x)
cosh(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

valor en radianes del arco seno hiperblico de x


valor del coseno de x expresado en radianes.
valor del coseno de x expresado en grados sexagesimales.
valor en radianes del arco coseno de x.
valor en grados sexagesimales del arco coseno de x.
coseno hiperblico de x en radianes.

cosh(x)=(ex+e-x)/2
acosh(x)
tan(x)
tand(x)
atan(x)
atand(x)
atan2(x,y)
atan2d(x,y)
tanh(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

valor en radianes del arco coseno hiperblico de x.


valor de la tangente de x expresado en radianes.
valor de la tangente de x expresado en grados sexagesimales.
valor en radianes del arco tangente de x.
valor en grados sexagesimales del arco tangente de x.
valor en radianes del arco tangente de (x,y).
valor en grados sexagesimales del arco tangente de (x,y).
tangente hiperblico de x en radianes.

tanh(x)=sinh(x)/cosh(x)
atanh(x)
cot(x)
cotd(x)
acot(x)
acotd(x)
coth(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

valor en radianes del arco tangente hiperblico de x.


valor de la cotangente de x expresado en radianes.
valor de la cotangente de x expresado en grados sexagesimales.
valor en radianes del arco cotangente de x.
valor en grados sexagesimales del arco cotangente de x.
cotangente hiperblico de x en radianes.

coth(x)=cosh(x)/sinh(x)
acoth(x)
sec(x)
secd(x)
asec(x)
asecd(x)
sech(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

valor en radianes del arco cotangente hiperblico de x.


valor de la secante de x expresado en radianes.
valor de la secante de x expresado en grados sexagesimales.
valor en radianes del arco secante de x.
valor en grados sexagesimales del arco secante de x.
secante hiperblico de x en radianes.

sech(x)=1/cosh(x)
asech(x)
csc(x)
cscd(x)
acsc(x)
acscd(x)
csch(x)

Calcula el
Calcula el
Calcula el
Calcula el
Calcula el
Calcula el

valor en radianes del arco secante hiperblico de x.


valor de la cosecante de x expresado en radianes.
valor de la cosecante de x expresado en grados sexagesimales.
valor en radianes del arco cosecante de x.
valor en grados sexagesimales del arco cosecante de x.
cosecante hiperblico de x en radianes.

csch(x)=1/sinh(x)
acsch(x)

Calcula el valor en radianes del arco cosecante hiperblico de x.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

A continuacin se desarrolla algunas formas de utilizar las funciones trigonomtricas.


>> sin(pi/6) %calcula el seno de pi/6 radianes
ans =
0.5000
>> sind(30)
ans =
0.5000
>> tand(90)
ans =
Inf
>> cotd(90)
ans =
0
>> asin(0.5)
ans =
0.5236
>> asind(0.5)
ans =
30.0000
>> sinh(10)
ans =
1.1013e+04
>> cosh(-2.4)
ans =
5.5569
>> secd(60)
ans =

25

26

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

2.0000
>> sin(3-2i)
ans =
0.5309 + 3.5906i

Funcin
exp(x)
expm1(x)
log(x)
log10(x)
log1p(x)
log2(x)
nthroot(x,n)
sqrt(x)

Cuadro 2.6. Funciones logartmicas y exponenciales.


Descripcin
x
Calcula el valor de e .
Calcula el valor de exp(x)-1.
Calcula del logaritmo natural de x.
Calcula el logaritmo en base 10 de x
Calcula el valor de log(1+x).
Calcula el logaritmo en base 2 de x.
Calcula la n-sima raz real de x.
Calcula la raz cuadrada de x.

A continuacin se desarrolla algunas formas de utilizar las funciones logartmicas y


exponenciales.
>> exp(2.65)
ans =
14.1540
>> exp(2.65-2.1i)
ans =
-7.1456 -12.2179i
>> log10(12.765)
ans =
1.1060
>> nthroot(32,5)
ans =
2

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

27

>> sqrt(25.78)
ans =
5.0774
>> sqrt(2-2i)
ans =
1.5538 - 0.6436i

Funcin
abs(x)
angle(x)
complex(a,b)
conj(x)
imag(x)
real(x)

Cuadro 2.7. Funciones de nmeros complejos.


Descripcin
Calcula el valor de valor absoluto o mdulo de x=a+bi.
Calcula el ngulo de fase de x=a+bi en radianes.
Crea un nmero complejo de la forma a+bi.
Calcula la conjugada de x=a+bi.
Extrae la parte imaginaria de x=a+bi.
Extrae la parte real de x=a+bi.

A continuacin se desarrolla algunas formas de utilizar las funciones de nmeros complejos.


>> A=complex(3,4)
A=
3.0000 + 4.0000i
>> modulo=abs(A)
modulo =
5
>> angulo=angle(A)
angulo =
0.9273
>> C=conj(A)
C=

28

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

3.0000 - 4.0000i
>> i=imag(A)
i=
4
>> r=real(A)
r=
3
Cuadro 2.8. Funciones de matemtica discreta.
Descripcin
Calcula los factores primos de x.
Calcula el factorial de x.
Calcula el mximo comn divisor de a y b.
Calcula el mnimo comn mltiplo.
Determina si x es primo o no. Devuelve cero si x no es primo y uno si x es
primo
nchoosek(n,k) Calcula el nmero de combinaciones de n tomados de k en k.
perms(n,k)
Calcula el nmero de permutaciones de n..
primes(x)
Calcula todos los nmero primos menores o iguales a x.
Funcin
factor(x)
factorial(x)
gcd(a,b)
lcm(a,b)
isprime(x)

A continuacin se desarrolla algunas formas de utilizar las funciones de matemtica discreta.


>> factor(24)
ans =
2

>> factorial(5)
ans =
120
>> gcd(18,12)
ans =

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

6
>> lcm(18,12)
ans =
36
>> isprime(11)
ans =
1
>> isprime(12)
ans =
0
>> nchoosek(5,3)
ans =
10
>> perms(5)
ans =
5
>> primes(30)
ans =
2

11

13

17

19

23

29

Cuadro 2.9. Funciones de conversin de coordenadas.


Funcin
Descripcin
cart2pol(x,y)
Convierte coordenadas cartesianas a coordenadas polares.
cart2pol(x,y,z)
Convierte coordenadas cartesianas a coordenadas cilndricas.
pol2cart(teta,r)
Convierte coordenadas polares a coordenadas cartesianas.
pol2cart(teta,r,z)
Convierte coordenadas cilndricas a coordenadas cartesianas.
cart2sph(x,y,z)
Convierte coordenadas cartesianas a coordenadas esfricas.
sph2cart(teta,phi,r) Convierte coordenadas esfricas a coordenadas cartesianas.

29

30

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

A continuacin se desarrolla algunas formas de utilizar las funciones de conversin de


coordenadas.
>> [teta,r]=cart2pol(3,4)

% devuelve teta en radianes.

teta =
0.9273
r=
5
[teta,r,z]=cart2pol(3,4,7)

% devuelve teta en radianes.

teta =
0.9273
r=
5
z=
7
>> [x,y]=pol2cart(0.9273,5)
x=
3.0000
y=
4.0000
>> [x,y,z]=pol2cart(0.9273,5,7)
x=
3.0000
y=

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

31

4.0000
z=
7
>> [teta,phi,r]=cart2sph(3,5,7)

% devuelve teta y phi en radianes.

teta =
1.0304
phi =
0.8763
r=
9.1104
>> [x,y,z]=sph2cart(1.0304,0.8763,9.1104)
x=
3
y=
5
z=
7
Cuadro 2.10. Funciones de cambios de base numricos y de cadena.
Funcin
Descripcin
bin2dec()
Convierte una cadena en binario a un nmero decimal entero
dec2bin()
Convierte un nmero decimal entero a una cadena en binario.
base2dec
Convierte una cadena en base B a nmero decimal entero.
dec2base
Convierte un nmero decimal entero a una cadena en base B.
str2double
Convierte una cadena de nmeros a un nmero de doble precisin.
num2str()
Convierte un nmero a una cadena.
A continuacin se desarrolla algunas formas de utilizar las funciones de cambios de base
numricos y de cadena.

32

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> bin='1001011'

%nmero en base almacenado como cadena.

bin =
1001011
>> dec=bin2dec(bin) %convierte la cadena en binario a nmero decimal.
dec =
75
>> bin1=dec2bin(dec) %convierte nmero decimal a binario tipo cadena.
bin1 =
1001011
>> b6='40521'

%nmero en base 6 almacenado como cadena.

b6 =
40521
>> dec1=base2dec(b6,6)

%Convierte la cadena en base 6 a base 10.

dec1 =
5377
>> b1=dec2base(dec1,6)

%convierte un nmero en base 10 a cadena en base 6.

b1 =
40521
>> b2=dec2base(dec1,8) %convierte un nmero en base 10 a cadena en base 8.
b2 =
12401
>> cad='425.78'
cad =

%nmero almacenado como cadena.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

425.78
>> n=str2double(cad) %convierte una cadena de dgitos a nmero decimal.
n=
425.7800
>> cad1=num2str(n)
cad1 =
425.78

%convierte un nmero decimal a una cadena de dgitos.

33

34

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

APLICACIONES DEL CAPTULO II.


2.1. Crear la variable r=pi/6 radianes y luego convertir a grados sexagesimales, usar la s iguiente
frmula:

Solucin en MATLAB.
>> r=pi/6;
>> S=180*r/pi
S=
30.0000
Por lo tanto diremos que pi/6 radianes es equivalente a 30 sexagesimales.
2.2. Calcular el volumen del cilindro que se muestra en la siguiente figura, sabiendo que el radio es
de 50 cm y la altura es de 2 m.

Figura 2.1
Solucin en MATLAB. Antes de solucionar se debe tener cuidado con las unidades, en este
ejemplo r=50 cm y h=2 m, por lo tanto se debe uniformizar de la siguiente manera:
r=50 cm =0,5 m y h=2 m, entonces en MATLAB sera.
>> r=0.5;

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

35

>> h=2;
>> V=pi*r^2*h
V=
1.5708
Por lo tanto diremos que el volumen del cilindro es 1,5708 m 3.
2.3. Calcular el valor de la componente vertical (Ay) y la componente horizontal (Ax) del vector A cuyo
mdulo es 12 newton que se muestra en la Figura 2.2, sabiendo que =35.

Figura 2.2
Solucin en MATLAB.
>> A=12;
>> alfa=35;
>> Ax=A*cosd(alfa)
Ax =
9.8298
>> Ay=A*sind(alfa)
Ay =
6.8829
Por lo tanto diremos que la componente Ax=9,8298 N y Ay=6,8829 N.

36

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

2.4. Determinar las tensiones sobre las cuerdas AC y BC que se muestra en la figura; sabiendo que
=25, =55 y el peso del bloque es de 50 N.

Solucin matemtica.
= 0
=

. cos = . cos

cos

(1)

cos

= 0
+ =

. sen = . sen =

.cos
. cos +cos . sen

(2)

Solucin en MATLAB.
>> clc
>> alfa=25;
>> beta=55;
>> W=50;
>> TA=W*cosd(beta)/(sind(alfa)*cosd(beta)+cosd(alfa)*sind(beta)) %ecuacin 2.
TA =
29.1212
>> TB=TA*cosd(alfa)/cosd(beta)

%ecuacin 1.

TB =
46.0145
Por lo tanto diremos que la tensin en A es TA=29,1212 N y la tensin en B es TB=46,0145 N.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

37

2.5. Se tiene una temperatura de 20 C, convertir dicha temperatura a las escalas en grados Kelvin
(K), Fahrenheit (F) y Rankine (R) usar la siguiente frmula:

Solucin en MATLAB.
>> clc
>> C=20;
>> K=C+273
K=
293
>> F=9*C/5+32
F=
68
>> R=9*C/5+492
R=
528
Por lo tanto diremos: 20 C = 293 K = 68 F = 528 R.
2.6. Considere el aparato de joule que se muestra en la figura. La masa de cada uno de los dos
bloques es de 1,5 kg y el tanque aislado se llena con 200 g de agua. Determina el aumento de la
temperatura del agua despus que los bloques caen una altura de 3 m.

38

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Solucin:
El recipiente est aislado trmicamente, por lo que no fluye energa por calor, es decir:
=0

= + = 0 + = 2

El trabajo por la cada de los bloques es igual al trabajo realizado sobre el agua en el recipiente
por las cuchillas giratorias. Este trabajo se traduce en un aumento de la energa interna del
agua.
2 = = . .
=

2
.

Donde C es el calor especfico del agua es igual a 4186 J/(kg.C)


Solucin en MATLAB.
clc
>> m=1.5; %masa de cada bloque
>> g=9.8; %cte. aceleacin de la gravedad
>> h=3; %altura que cae cada bloque
>> magua=200/1000; %masa de agua en kg.
>> C=4186; %cte.
>> T=2*m*g*h/(magua*C)
T=
0.1054
Por lo tanto diremos que la temperatura es de 0,1054 C.
2.7. Determinar la fuerza que acta sobre las cargas elctricas q1=+1x10-6 C y q2=+2,5x10-6 C que
se encuentran en reposo y en el vaco a una distancia de 5 cm.

Donde k=9x109 N.m 2/C2 Constante de Coulomb en el vaco.

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

39

Solucin en MATLAB.
>> clc
>> k=9e9; %cte de Coulomb
>> q1=1e-6;
>> q2=2.5e-6;
>> r=5/100; %distancia en metros.
>> F=k*q1*q2/r^2
F=
9
Por lo tanto diremos que la fuerza de repulsin es de 9 N.
2.8. Determinar la altura h de la torre de alta tensin y el ngulo que se muestra en la siguiente
figura.

Solucin matemtica.
Para hallar la altura en este caso se aplica la siguiente frmula:

= 22 21 .2
y el ngulo se calcula con:

= atan ( )
2

40

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Solucin en MATLAB.
>> d1=50;
>> d2=200;
>> h=sqrt(d2^2-2*d1*d2)
h=
141.4214
>> theta=atand(h/d2)
theta =
35.2644
Por lo tanto diremos que la altura h de la torre es de 141,4214 m y el ngulo =35,2644.
2.9. Determinar el rea del tringulo que se muestra en la siguiente figura sabiendo que los lados a,
b y c miden 10, 12 y 15 cm respectivamente.

Solucin matemtica.
- Clculo del semipermetro:

++
2

y el rea sera:

= ( )( )( )
Solucin en MATLAB.
>> a=10;
>> b=12;
>> c=15;
>> p=(a+b+c)/2;
>> area=sqrt(p*(p-a)*(p-b)*(p-c))

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

41

area =
59.8117
Por lo tanto diremos que el rea del tringulo es 59,8117 cm 2.
2.10. Determinar el coeficiente del octavo trmino del desarrollo del siguiente binomio (2x+3y) 10.
Solucin matemtica.
Para hallar el coeficiente del trmino k+1 del desarrollo de un binomio de la forma (ax+by)n se
utiliza la siguiente frmula:

+1 = ( ) .

Solucin en MATLAB.
>> a=2;
>> b=3;
>> n=10;
>> k=8-1;
>> T8=nchoosek(n,k)*a^(n-k)*b^k
T8 =
2099520
Por lo tanto diremos que el coeficiente del octavo trmino es 2 099 520.
2.11. Determinar las races de una ecuacin cuadrtica de la forma Ax2+Bx+C=0 cuando A=2, B=3 y
C=-12, para el cual se utiliza la siguiente frmula:

+ 2 4
1 =
2
2 =

2 4
2

Solucin en MATLAB.
>> clc
>> A=2;
>> B=3;
>> C=-12;
>> x1=(-B+sqrt(B^2-4*A*C))/(2*A)
x1 =
1.8117
>> x2=(-B-sqrt(B^2-4*A*C))/(2*A)

42

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

x2 =
-3.3117
Por lo tanto diremos que x1=1,8117 y x2=-3,3117.
Este mismo problema podemos calcular para A=2, B=5 y C=25;
>> clc
>> A=2;
>> B=5;
>> C=25;
>> x1=(-B+sqrt(B^2-4*A*C))/(2*A)
x1 =
-1.2500 + 3.3072i
>> x2=(-B-sqrt(B^2-4*A*C))/(2*A)
x2 =
-1.2500 - 3.3072i
En este caso se observa que los resultados son nmero complejos, es decir x1=-1,25+3,3072i
y x2=-1,25-3,3072i.
2.12. Determinar la altura h de la figura que se muestra sabiendo que =60, Vo=60 m/s y dx=400 m.

Solucin matemtica.

= . cos ( )

. cos( )

CAPTULO II: OPERACIONES Y FUNCIONES BSICAS CON MATLAB

43

= . sen( ). 22
Solucin en MATLAB.
>> clc
>> vo=60;
>> theta=60;
>> dx=400;
>> t=dx/(vo*cosd(theta));
>> h=vo*sind(theta)*t-9.81*t^2/2
h=
-179.1797
Por lo tanto diremos que h=-179.1797 m (negativo porque est debajo del eje x de referencia).
2.13. El pez arquero caza insectos lanzndoles un chorro de agua (ver siguiente figura). Determinar
la velocidad inicial (Vo) del chorro de agua y la distancia horizontal (d) para que el pez pueda
dar sobre un escarabajo que se encuentra a una altura h=1,2 m sobre la superficie del agua,
adems el ngulo de disparo es 70.

Solucin matemtica.

2 . 2 ()
==
2

2 . (2)
= 2 =

2
()

2. (2)
=
2

44

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Solucin en MATLAB.
>> clc
>> h=1.2;
>> theta=70;
>> vo=sqrt(2*h*9.81)/sind(theta)
vo =
5.1636
>> d=vo^2*sind(2*theta)/(2*9.81)
d=
0.8735
Por lo tanto diremos que para que el pez de en el escarabajo debe estar ubicado a una distancia
de 0,8735 m y enviar con una velocidad inicial de 5,1636 m/s.

BIBLIOGRAFA

45

46

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

47

CAPTULO III
ARREGLOS VECTORES Y MATRICES CON MATLAB
Un arreglo es una estructura que MATLAB utiliza para almacenar y manipular datos. Un arreglo es
una lista de nmeros dispuestos en filas y/o columnas, si estn dispuestos en filas se llaman arreglos
unidimensionales (lista o vector) y si estn dispuestos en filas y columnas se llaman arreglos
bidimensionales (matrices) y si se tiene ms de dos dimensiones se llama hipermatrices.
3.1 ARREGLO UNIDIMENSIONAL (LISTA O VECTOR).
Un arreglo unidimensional en MATLAB es un conjunto de elementos dispuestos uno a
continuacin de otros, donde cada elemento conserva su mismo espacio y tienen su propio ndice
de identificacin que viene a ser la numeracin consecutiva de cada espacio que ocupa un dato
en el arreglo, esta numeracin en MATLAB empieza en uno (1) a diferencia de otros lenguajes
de programacin como el C++ que empieza en cero (0). En la Figura 3.1 se ilustra el concepto de
arreglo unidimensional.

Figura 3.1. Representacin grfica de un arreglo unidimensional.


Para crear una lista o vector en MATLAB se debe ingresar los datos separados por espacios en
blanco o separados por comas y todo ello debe estar entre corchetes.
>> A=[10 12 6 8 -1 8.9]
A=
10.0000 12.0000

6.0000

8.0000 -1.0000

8.9000

O tambin se puede ingresar separados por comas (,).


>> A=[10,12,6,8,-1,8.9]
A=
10.0000 12.0000

6.0000

8.0000 -1.0000

8.9000

Tambin podra ser combinacin de comas (,) o espacios en blanco.


>> A=[10,12 6 8,-1,8.9]

48

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

A=
10.0000 12.0000

6.0000

8.0000 -1.0000

8.9000

Para acceder a los elementos individuales de una lista o vector A se hace utilizando los subndices
entre parntesis, as A(n) sera el n-simo elemento del vector X y si queremos acceder al ltimo
elemento podemos indicarlo usando end como subndice.
>> A(5)

% quinto elemento del vector A.

ans =
-1
>> A(2)
ans =
12
>> A(end) %ltimo elementos del vector A
ans =
8.9000
Un vector puede cambiar su tamao, si tiene n elementos, basta aadir nuevos valores para las
posiciones n+1, n+2 y as sucesivamente. Si es necesario MATLAB asigna ceros a los elementos
entre el ltimo del vector original y el aadido. Por ejemplo el vector A tiene 6 elementos pero se
pueden aadir elementos de la siguiente manera:
>> A(7)=4

%se agrega un sptimo elemento al vector A con un valor de 4.

A=
10.0000 12.0000

6.0000

8.0000 -1.0000

8.9000

4.0000

>> A(10)=2 %llena con ceros las posiciones 8 y 9


A=
10.0000 12.0000

6.0000

8.0000 -1.0000

8.9000

4.0000

2.0000

Tambin es posible aadir nuevos elementos a un vector ya existente a partir de otros vectores.

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

49

>> x=[3 -2 6 -7 4 5];


>> y=[1 2 3 4];
>> z1=[x,y] %une los vectores x e y para formar z1
z1 =
3

-2

-7

>> z2=[x(1),y,x(4)]

%une el elemento 1 de x con el vector y ms el elemento 4 de x


para formar z2.

z2 =
3

-7

Para acceder a un bloque de elementos a la vez, se usa la notacin de dos puntos (:), as x(m:n)
nos muestra desde el m-simo hasta el n-simo elemento del vector x.
>> x=[3 -2 6 -7 4 5];
>> x(2:5) %devuelve desde el elemento 2 hasta el elemento 5 del vector x
ans =
-2

-7

Tambin es posible eliminar elementos de un vector existente mediante la asignacin del vaco []
al elemento o rango de elementos que se deseen eliminar.
>> x=[3 -2 6 -7 4 5];
>> x(2)=[ ] % se elimina el segundo elemento del vector x
x=
3

-7

>> x(2:4)=[ ] % se elimina los elementos del 2 al 4 del vector x


x=
3

Si introducimos un nmero entre el primero y el segundo tambin separado por dos puntos (:) se
mostrarn los elementos del primero al ltimo indicado, incrementados segn el nmero que
aparece en el centro (o decrementados si el nmero es negativo).
>> x=[3 -2 6 -7 4 5 -8 -3 2];

50

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> x(2:2:6) % devuelve el segundo, cuarto y sexto elemento del vector x


ans =
-2

-7

Otra forma de obtener un conjunto concreto de elementos del vector es indicando entre corchetes
[] las posiciones de los elementos que queremos obtener poniendo parntesis fuera de los
corchetes.
>> x=[3 -2 6 -7 4 5 -8 -3 2];
>> x([3 5 1 6]) % devuelve los elementos 3, 5, 1 y 6 del vector x
ans =
6

a) Formas abreviadas de construir un vector.


A continuacin se da algunas formas abreviadas de construir un vector, entonces a parte de
definir un vector introduciendo cada uno de sus elementos, tambin podemos crearlo
haciendo uso de las siguientes sentencias:
(a:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de 1 en 1.
>> x=(1:7) % crea el vector x que comienza en 1 aumenta de 1 en 1 y acaba en 7
x=
1

>> y=(5:9)
y=
5

(a:c:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de c en


c.
>> x=(1:3:10)
x=
1

10

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

51

>> y=(2:4:11)
y=
2

10

>> z=(50:-7:1)
z=
50

43

36

29

22

15

linspace (a,b) genera un vector linealmente espaciado entre los valores a y b con 100 elementos.
>> x=linspace(-5,5) %genera el vector x con 100 elementos desde -5 hasta 5
x=
Columns 1 through 10
-5.0000 -4.8990 -4.7980 -4.6970 -4.5960 -4.4949 -4.3939 -4.2929 -4.1919 -4.0909
Columns 11 through 20
-3.9899 -3.8889 -3.7879 -3.6869 -3.5859 -3.4848 -3.3838 -3.2828 -3.1818 -3.0808
Columns 21 through 30
-2.9798 -2.8788 -2.7778 -2.6768 -2.5758 -2.4747 -2.3737 -2.2727 -2.1717 -2.0707
Columns 31 through 40
-1.9697 -1.8687 -1.7677 -1.6667 -1.5657 -1.4646 -1.3636 -1.2626 -1.1616 -1.0606
Columns 41 through 50
-0.9596 -0.8586 -0.7576 -0.6566 -0.5556 -0.4545 -0.3535 -0.2525 -0.1515 -0.0505
Columns 51 through 60
0.0505

0.1515

0.2525

0.3535

0.4545

0.5556

0.6566

0.7576

0.8586

0.9596

1.3636

1.4646

1.5657

1.6667

1.7677

1.8687

1.9697

Columns 61 through 70
1.0606

1.1616

1.2626

52

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Columns 71 through 80
2.0707

2.1717

2.2727

2.3737

2.4747

2.5758

2.6768

2.7778

2.8788

2.9798

3.3838

3.4848

3.5859

3.6869

3.7879

3.8889

3.9899

4.3939

4.4949

4.5960

4.6970

4.7980

4.8990

5.0000

Columns 81 through 90
3.0808

3.1818

3.2828

Columns 91 through 100


4.0909

4.1919

4.2929

linspace (a,b,c) genera un vector linealmente espaciado entre los valores a y b con c elementos.
>> y=linspace(-5,5,20) %genera el vector y con 20 elementos desde -5 hasta 5
y=
Columns 1 through 10
-5.0000 -4.4737 -3.9474 -3.4211 -2.8947 -2.3684 -1.8421 -1.3158 -0.7895 -0.2632
Columns 11 through 20
0.2632

0.7895

1.3158

1.8421

2.3684

2.8947

3.4211

3.9474

4.4737

5.0000

logspace (a,b) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b
con 50 elementos.
>> x=logspace(0.2,4)
x=
1.0e+04 *
Columns 1 through 10
0.0002

0.0002

0.0002

0.0003

0.0003

0.0004

0.0005

0.0006

0.0007

0.0008

0.0016

0.0019

0.0023

0.0028

0.0033

0.0039

0.0047

Columns 11 through 20
0.0009

0.0011

0.0014

Columns 21 through 30

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

0.0056

0.0067

0.0081

53

0.0096

0.0115

0.0138

0.0165

0.0197

0.0235

0.0281

0.0574

0.0687

0.0821

0.0981

0.1173

0.1403

0.1677

0.3425

0.4095

0.4895

0.5853

0.6997

0.8365

1.0000

Columns 31 through 40
0.0336

0.0402

0.0480

Columns 41 through 50
0.2005

0.2397

0.2865

logspace (a,b,c) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b con
c elementos.
>> x=logspace(0.2,4,10)
x=
1.0e+04 *
0.0002

0.0004

0.0011

0.0029

0.0077

0.0205

0.0541

0.1431

0.3782

1.0000

b) Operaciones aritmticas con vectores.


En el Cuadro 3.1 se muestra todas las operaciones aritmtica que se pueden hacer con vectores.
Cuadro 3.1. Operaciones aritmticas con vectores en MATLAB.
Sintaxis
en MATLAB
x+k
x-k
k*x
x/k
k.^x
x.^k
x+y
x-y
x.*y
x./y
x.^y

Descripcin
Suma a cada elemento del vector x el escalar k.
Resta a cada elemento del vector x el escalar k.
Multiplica a cada elemento del vector x el escalar k.
Divide a cada elemento del vector x el escalar k.
Potenciacin del escalar k a cada elemento del vector x.
Potenciacin de cada elemento del vector x elevado a la k.
Suma de los vectores x e y con el mismo nmero de elementos.
Resta de los vectores x e y con el mismo nmero de elementos.
Multiplicacin elemento a elemento de los vectores x e y.
Divisin elemento a elemento.
Potenciacin elemento a elemento

A continuacin desarrollaremos algunos ejemplos de operaciones aritmticas con vectores y


escalar en MATLAB.
>> x=[3,-2,2,5,-1,4]

54

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

x=
3

-2

-1

12

11

10

-2

25

16

>> z1=x+7
z1 =
10

>> z2=2*x
z2 =
6

-4

>> z3=x.^2
z3 =
9

A continuacin desarrollaremos algunos ejemplos de operaciones aritmticas entre vectores en


MATLAB.
>> x=[3,-2,2,5,-1,4]
x=
3

-2

-1

10

>> y=(1:6)
y=
1

>> z1=x+y
z1 =
4

>> z2=x-y

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

55

z2 =
2

-4

-1

-6

-2

20

-5

24

>> z3=x.*y
z3 =
3

-4

>> z4=x./y
z4 =
3.0000 -1.0000

0.6667

1.2500 -0.2000

0.6667

>> z5=x.^y
z5 =
3

625

-1

4096

A continuacin desarrollaremos ejemplos de aplicaciones aritmticas con vectores de nmero


complejos.
>> x=[2-i,1+2i,4+2i,-2+i]
x=
2.0000 - 1.0000i 1.0000 + 2.0000i 4.0000 + 2.0000i -2.0000 + 1.0000i
>> y=[i,-1+3i,2,2+2i]
y=
0.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 0.0000i 2.0000 + 2.0000i
>> x=[2-i,1+2i,4+2i,-2+i]
x=
2.0000 - 1.0000i 1.0000 + 2.0000i 4.0000 + 2.0000i -2.0000 + 1.0000i
>> y=[i,-1+3i,2,2+2i]

56

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

y=
0.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 0.0000i 2.0000 + 2.0000i
>> z1=3+2i+x
z1 =
5.0000 + 1.0000i 4.0000 + 4.0000i 7.0000 + 4.0000i 1.0000 + 3.0000i
>> z2=x-2
z2 =
0.0000 - 1.0000i -1.0000 + 2.0000i 2.0000 + 2.0000i -4.0000 + 1.0000i
>> z3=2*x
z3 =
4.0000 - 2.0000i 2.0000 + 4.0000i 8.0000 + 4.0000i -4.0000 + 2.0000i
>> z4=x+y
z4 =
2.0000 + 0.0000i 0.0000 + 5.0000i 6.0000 + 2.0000i 0.0000 + 3.0000i
>> z5=x.*y
z5 =
1.0000 + 2.0000i -7.0000 + 1.0000i 8.0000 + 4.0000i -6.0000 - 2.0000i
>> z5=x./y
z5 =
-1.0000 - 2.0000i 0.5000 - 0.5000i 2.0000 + 1.0000i -0.2500 + 0.7500i
>> z6=x.^y
z6 =
1.1023 + 1.1457i 0.0042 + 0.0156i 12.0000 +16.0000i 0.0183 + 0.0149i

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

57

c) Funciones que trabajan con vectores.


En el Cuadro 3.2 se muestra las funciones ms importantes que trabajan con vectores.
Cuadro 3.2. Funciones relacionados con vectores en MATLAB.
Funcin
Descripcin
length(x)
Determina el nmero de elementos del vector x.
sum(x)
Calcula la suma de todos los elementos del vector x.
prod(x)
Calcula el producto de todos los elementos del vector x.
unin(x,y)
Determina la unin de los conjuntos x e y.
intersect(x,y) Determina la interseccin de los conjuntos x e y.
setdiff(x,y)
Determina la diferencia de los conjuntos x e y.
sort(x)
Ordena de menor a mayor los elementos del vector x
max(x)
Determina el mayor elemento del vector x.
min(x)
Determina el menor elemento del vector x.
mean(x)
Determina el promedio de los elementos del vector x.
median(x)
Determina la mediana de los datos del vector x.
mode(x)
Determina la moda de los datos del vector x.
std(x)
Determina la desviacin estndar de los datos del vector x.
var(x)
Determina la varianza de los datos del vector x.
cross(x,y)
Determina el producto vectorial de los vectores x e y.
dot(x,y)
Determina el producto escalar de los vectores x e y.
A continuacin desarrollaremos algunos ejemplos de funciones que trabajan con vectores.
>> x=[3 -4 7 5 2 -2 1 6]
x=
3

-4

>> n=length(x)
n=
8
>> suma=sum(x)
suma =
18
>> p=prod(x)

-2

58

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

p=
10080
>> maximo=max(x)
maximo =
7
>> minimo=min(x)
minimo =
-4
>> ordenado=sort(x)
ordenado =
-4

-2

A continuacin desarrollaremos ejemplos de las funciones de teora de conjuntos con MATLAB.


>> x=[3 -4 7 5 2 -2 1 6];
>> y=[3 2 -5 5 10 3 4 -3 2 1 -6 8 1 -2];
>> u=union(x,y)

% Calcula la unin de los conjuntos x e y.

u=
-6

-5

-4

-3

>> i=intersect(x,y)

-2

10

% Calcula la interseccin de los conjuntos x e y.

i=
-2

>> d=setdiff(x,y)
d=
-4

5
% Calcula la diferencia de los conjuntos x e y.

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

>> d1=setdiff(y,x)

59

% Calcula la diferencia de los conjuntos y e x.

d1 =
-6

-5

-3

10

A continuacin desarrollaremos ejemplos de las funciones estadsticas con MATLAB.


>> x=[12 8 12 10 15 14 13 8 18 12 10 16 11 14 12 11 18 9 12 15];
>> media=mean(x) % Calcula la media de los datos estadsticos de x.
media =
12.5000
>> mediana=median(x) % Calcula la medina de los datos estadsticos de x.
mediana =
12
>> moda=mode(x) % Calcula la moda de los datos estadsticos de x.
moda =
12
>> de=std(x) % Calcula la desviacin estndar de los datos estadsticos de x.
de =
2.9110
>> v=var(x) % Calcula la varianza de los datos estadsticos de x.
v=
8.4737
A continuacin desarrollaremos ejemplos de las funciones vectoriales con MATLAB. En este caso
diremos que el vector A=3i-2j+k y el vector B=2i+2j-3k, entonces para hallar el producto vectorial
y escalar de dichos vectores sera:
>> A=[3 -2 1]; %coeficientes del vector A.
>> B=[2 2 -3]; %coeficientes del vector B.
>> AxB=cross(A,B) %calcula el producto vectorial de A y B.

60

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

AxB =
4

11

10

%Estos seran los coeficientes del vector AxB=4i+11j+10k

>> AB=dot(A,B)

%calcula el producto escalar de A y B.

AB =
-1
Tambin es necesario indicar que la mayora de las funciones matemticas que hemos
desarrollado en el captulo II tambin funcionan con vectores. A continuacin desarrollaremos
algunos ejemplos de aplicacin.
>> x=[3.2,-2.3,5,3,6.8,4.1]
x=
3.2000 -2.3000

5.0000

3.0000

6.8000

4.1000

-0.0584 -0.7457 -0.9589

0.1411

0.4941 -0.8183

>> y1=sin(x)
y1 =

>> y2=ceil(x)
y2 =
4

-2

>> y3=round(x)
y3 =
3

-2

>> y4=sqrt(x)
y4 =
Columns 1 through 4
1.7889 + 0.0000i 0.0000 + 1.5166i 2.2361 + 0.0000i 1.7321 + 0.0000i

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

61

Columns 5 through 6
2.6077 + 0.0000i 2.0248 + 0.0000i
>> y5=log(x)
y5 =
Columns 1 through 4
1.1632 + 0.0000i 0.8329 + 3.1416i 1.6094 + 0.0000i 1.0986 + 0.0000i
Columns 5 through 6
1.9169 + 0.0000i 1.4110 + 0.0000i
3.2 ARREGLO BIDIMENSIONAL (MATRIZ).
Un arreglo bidimensional en MATLAB es un conjunto de elementos dispuestos en filas y columnas
uno a continuacin de otros, donde cada elemento conserva su mismo espacio y tienen dos
ndices de identificacin (fila,columna), la primera representa al nmero de fila que se inicia con
uno (1) y la segunda representa al nmero de la columna que tambin se inicia con uno (1). En
la Figura 3.2 se ilustra el concepto de arreglo bidimensional, donde la matriz A tiene m filas y n
columnas.

Figura 3.2. Representacin de una matriz de mxn.


Por ejemplo una matriz A de 5x6 sera:

62

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

En este punto es necesario aclarar que MATLAB es fundamentalmente un programa de clculo


matricial, por lo que si analizamos a profundidad diremos que una variable del tipo escalar que
hemos estudiado en el captulo II es una caso particular de una matriz de 1x1; ahora los vectores
de n elementos tambin es un caso particular de una matriz de 1xn;
A continuacin veremos cmo se crean las matrices, cmo se realizan operaciones con estas
entidades y cmo se accede a sus elementos.
Para crear una matriz en MATLAB se debe ingresar las filas con los datos separados por espacios
en blanco o separados por comas y para pasar a otra fila se debe poner necesariamente un punto
y coma (;) y todo ello debe estar entre corchetes.
>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

Para acceder a los elementos individuales de una matriz A se hace utilizando los subndices de
filas y columnas entre parntesis, as A(n,m) sera la n-sima fila y la m-sima columna de la
matriz A y si queremos acceder al ltimo elemento podemos indicarlo usando end como
subndice.
>> A(1,4)
ans =
0
>> A(2,3)
ans =
6
>> A(end) %ltimo elemento de la matriz.
ans =
-3

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

63

Una matriz puede cambiar su tamao, si tiene n elementos, basta aadir nuevos valores para las
posiciones m+1, m+2 y as sucesivamente. Si es necesario MATLAB asigna ceros a los elementos
que faltan para completar la matriz. Por ejemplo la matriz A tiene 6 columnas, si queremos
aumentar una columna se hace de la siguiente manera:
>> A
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

>> A(1,7)=8 %llena con ceros las dems posiciones.


A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

8
0
0
0
0

Tambin es posible aadir nuevas filas o columnas a una matriz ya existente a partir de otras
matrices, pero la condicin es que si deseamos aadir ms columnas las dos matrices deben
tener el mismo nmero de columnas y si deseamos aadir ms filas las dos matrices deben tener
el mismo nmero de filas.
>> A
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

8
0
0
0
0

>> B=[1 2 3 4 5 6 7]
B=
1

64

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> C=[A;B]
C=
2
3
-1
1
0
1

4 -1
5 6
0 2
2 -2
3 4
2 3

0
-1
1
3
1
4

1
2
1
1
5
5

-1
0
2
-1
-3
6

8
0
0
0
0
7

Para acceder a una fila o a una columna, se usa la notacin de dos puntos (:), as A(m,:) nos
muestra todos los elementos de la fila m y si ponemos A(:,n) nos muestra todos los elementos de
la columna n.
>> A
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

8
0
0
0
0

>> A(3,:) %muestra la fila 3 de la matriz A.


ans =
-1

>> A(:,4) % muestra la columna 4 de la matriz A.


ans =
0
-1
1
3
1
Tambin es posible eliminar filas o columnas de una matriz existente mediante la asignacin del
vaco [] a la fila o columna que se deseen eliminar.
>> A

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

65

A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

8
0
0
0
0

>> A(:,6)=[ ] %Elimina toda la columna 6 de la matriz A.


A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

8
0
0
0
0

>> A(3,:)=[ ] %Elimina toda la fila 3 de la matriz A


A=
2
3
1
0

4
5
2
3

-1
6
-2
4

0
-1
3
1

1
2
1
5

8
0
0
0

Tambin es posible intercambiar filas de una matriz existente, cuyo procedimiento es la siguiente:
>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

>> A([1,3],:)=A([3,1],:) %intercambia la fila 1 y 3


A=
-1
3
2

0 2
5 6
4 -1

1
-1
0

1
2
1

2
0
-1

66

FIEE UNCP

1
0

2
3

-2
4

Rubn Galeas Juan Arellano Hernn Juan de Dios

3
1

1
5

-1
-3

Tambin es posible intercambiar columnas de una matriz existente, cuyo procedimiento es la


siguiente:
>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

1
2
1
1
5

-1
0
2
-1
-3

>> A(:,[2,4],:)=A(:,[4,2]) %intercambia la columna 2 y 4


A=
2
3
-1
1
0

0 -1
-1 6
1 2
3 -2
1 4

4
5
0
2
3

1
2
1
1
5

-1
0
2
-1
-3

Tambin es posible renombrar una fila haciendo operaciones aritmticas y sumando a nuevas
filas, cuyo procedimiento es la siguiente:
>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

>> A(2,:)=-2*A(2,:)
A=
4 8 -5
-6 -10 -12
-1 0 2
1 2 -2
0 3 4

1
2
1
1
5

-1
0
2
-1
-3

% multiplica por 2 a la fila 2 y se reemplaza toda la fila 2.

3
2 -4
1 1
3 1
1 5

-3
0
2
-1
-3

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

>> A(1,:)=A(1,:)+2*A(4,:)
A=
4
3
-1
1
0

8 -5
5 6
0 2
2 -2
3 4

6
-1
1
3
1

3
2
1
1
5

67

%Multiplica la fila 4 por 2 y se suma a la fila 1.

-3
0
2
-1
-3

a) Operaciones aritmticas con matrices.


En el Cuadro 3.3 se muestra todas las operaciones aritmtica que se pueden hacer con matrices.
Cuadro 3.3. Operaciones aritmticas con matrices en MATLAB.
Sintaxis
en MATLAB
A+k
A-k
k*A
A/k
k.^A
A.^k
A+B
A-B
A*B
A/B
A.*B
A./B
A.^B

Descripcin
Suma a cada elemento de la matriz A el escalar k.
Resta a cada elemento de la matriz A el escalar k.
Multiplica a cada elemento de la matriz A el escalar k.
Divide a cada elemento de la matriz A el escalar k.
Potenciacin del escalar k a cada elemento de la matriz A.
Potenciacin de cada elemento de la matriz A elevado a la k.
Suma matricial de las matrices A y B (debe cumplir propiedad de suma de
matrices).
Resta matricial de las matrices A y B (debe cumplir propiedad de resta de
matrices).
Multiplicacin matricial de las matrices A y B (debe cumplir con propiedad
de multiplicacin de matrices).
Divisin matricial de las matrices A y B (debe cumplir con la propiedad de
divisin de matrices)
Multiplicacin elemento a elemento de las matrices A y B que deben ser del
mismo orden.
Divisin elemento a elemento de las matrices A y B que deben ser del
mismo orden.
Potenciacin elemento a elemento de las matrices A y B que deben ser del
mismo orden.

A continuacin desarrollaremos algunos ejemplos de operaciones aritmticas con matrices y


escalar en MATLAB.
>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=

68

FIEE UNCP

2
3
-1
1
0

Rubn Galeas Juan Arellano Hernn Juan de Dios

4 -1 0
5 6 -1
0 2 1
2 -2 3
3 4 1

1 -1
2 0
1 2
1 -1
5 -3

>> Z1=A+2
Z1 =
4
5
1
3
2

6
7
2
4
5

1
8
4
0
6

2
1
3
5
3

3
4
3
3
7

1
2
4
1
-1

>> Z2=A-3
Z2 =
-1
0
-4
-2
-3

1 -4 -3 -2 -4
2 3 -4 -1 -3
-3 -1 -2 -2 -1
-1 -5 0 -2 -4
0 1 -2 2 -6

>> Z3=2*A
Z3 =
4 8 -2
6 10 12
-2 0 4
2 4 -4
0 6 8

0
-2
2
6
2

2
4
2
2
10

-2
0
4
-2
-6

>> Z4=A/2
Z4 =
1.0000
1.5000
-0.5000
0.5000
0

2.0000
2.5000
0
1.0000
1.5000

-0.5000
0
0.5000 -0.5000
3.0000 -0.5000 1.0000
0
1.0000 0.5000 0.5000 1.0000
-1.0000 1.5000 0.5000 -0.5000
2.0000 0.5000 2.5000 -1.5000

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

69

>> Z5=2.^A
ans =
4.0000 16.0000 0.5000 1.0000
8.0000 32.0000 64.0000 0.5000
0.5000 1.0000 4.0000 2.0000
2.0000 4.0000 0.2500 8.0000
1.0000 8.0000 16.0000 2.0000

2.0000
4.0000
2.0000
2.0000
32.0000

0.5000
1.0000
4.0000
0.5000
0.1250

>> Z6=A.^2
Z6 =
4
9
1
1
0

16 1
25 36
0 4
4 4
9 16

0
1
1
9
1

1
4
1
1
25

1
0
4
1
9

A continuacin desarrollaremos algunos ejemplos de operaciones aritmticas entre matrices en


MATLAB.
>> A
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

>> B
B=
0
-1
1
3
1

1 -1
2 0
1 2
1 -1
5 -3

>> Z1=A+B
Z1 =

70

FIEE UNCP

2
2
0
4
1

5
7
1
3
8

Rubn Galeas Juan Arellano Hernn Juan de Dios

-2
6
4
-3
1

>> Z2=A-B
Z2 =
2
4
-2
-2
-1

3 0
3 6
-1 0
1 -1
-2 7

>> A
A=
2
3
-1

4 -1
5 6
0 2

>> B
B=
0
-1
1

1 -1
2 0
1 2

>> Z3=A*B
Z3 =
-5 9 -4
1 19 9
2 1 5
>> Z4=A/B
Z4 =
3.8000 -0.6000

1.4000

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

71

0.8000 0.4000 3.4000


-2.0000 1.0000
0
>> Z5=A.*B
Z5 =
0
-3
-1

4 1
10 0
0 4

>> Z6=A./B
Z6 =
Inf
4.0000 1.0000
-3.0000 2.5000
Inf
-1.0000
0
1.0000
>> Z7=A.^B
Z7 =
1.0000 4.0000 -1.0000
0.3333 25.0000 1.0000
-1.0000
0 4.0000
A continuacin desarrollaremos ejemplos de aplicaciones aritmticas con matrices de nmero
complejos.
>> A=[2-i,1+2i;4+2i,-2+i]
A=
2.0000 - 1.0000i 1.0000 + 2.0000i
4.0000 + 2.0000i -2.0000 + 1.0000i
>> B=[1+2i,-2;2+3i,-1+i]
B=
1.0000 + 2.0000i -2.0000 + 0.0000i
2.0000 + 3.0000i -1.0000 + 1.0000i
>> Z1=A+B

72

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Z1 =
3.0000 + 1.0000i -1.0000 + 2.0000i
6.0000 + 5.0000i -3.0000 + 2.0000i
>> Z2=2-j+A
Z2 =
4.0000 - 2.0000i 3.0000 + 1.0000i
6.0000 + 1.0000i 0.0000 + 0.0000i
>> Z3=A*B
Z3 =
0.0000 +10.0000i -7.0000 + 1.0000i
-7.0000 + 6.0000i -7.0000 - 7.0000i
>> Z4=A/B
Z4 =
-0.6538 - 0.7308i 0.4231 - 0.1154i
1.1923 + 0.0385i 0.3462 - 0.7308i
b) Funciones que trabajan con matrices.
En el Cuadro 3.4 se muestra las funciones ms importantes que trabajan con matrices.

Funcin
size(A)
sum(A)
prod(A)
sort(A)
max(A)
min(A)
mean(A)
median(A)
mode(A)
std(A)
var(A)
trace(A)
det(A)

Cuadro 3.4. Funciones relacionados con matrices en MATLAB.


Descripcin
Determina el nmero de filas y columnas de la matriz A.
Calcula la suma de cada columna de la matriz A.
Calcula el producto de cada columna de la matriz A.
Ordena de menor a mayor cada columna de la matriz A.
Determina el mayor elemento de cada columna de la matriz A.
Determina el menor elemento de cada columna de la matriz A.
Calcula el promedio de cada columna de la matriz A.
Calcula la mediana de cada columna de la matriz A.
Calcula la moda de cada columna de la matriz A.
Calcula la desviacin estndar de cada columna de la matriz A.
Calcula la varianza de cada columna de la matriz A.
Calcula la traza de la matriz A (suma de diagonal principal)
Calcula la determinante de la matriz A.

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

inv(A)
diag(A)
tril(A)
triu(A)
rot90(A)
fliplr(A)
flipud(A)
transpose(A)

73

Determina la inversa de la matriz A.


Extrae los elementos de la diagonal principal de la matriz A.
Construye una matriz triangular superior a partir de la matriz A.
Construye una matriz triangular inferior a partir de la matriz A.
Hace rotar la matriz A 90 en sentido antihorario
Invierte la matriz A en su imagen horizontalmente.
Invierte la matriz A en su imagen verticalmente.
Determina la transpuesta de la matriz A, es equivalente a A.

A continuacin desarrollaremos algunos ejemplos de funciones que trabajan con matrices.


>> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3]
A=
2
3
-1
1
0

4 -1
5 6
0 2
2 -2
3 4

0
-1
1
3
1

>> [f,c]=size(A)

1
2
1
1
5

-1
0
2
-1
-3

%en la variable f nmero de fila y en c el nmero de columnas.

f=
5

c=
6
>> S=sum(A)
S=
5

14

10

>> S1=sum(sum(A))
S1 =
39
>> P=prod(A)

-3

74

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

P=
0

96

10

>> or=sort(A)
or =
-1
0
1
2
3

0 -2
2 -1
3 2
4 4
5 6

-1
0
1
1
3

1 -3
1 -1
1 -1
2 0
5 2

>> mayor=max(A)
mayor =
3

-3

>> menor=min(A)
menor =
-1

-2

-1

>> prom=mean(A)
prom =
1.0000

2.8000

1.8000

>> mediana=median(A)
mediana =
1

-1

-1

>> moda=mode(A)
moda =
-1

-2

>> ds=std(A)

0.8000

2.0000 -0.6000

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

ds =
1.5811

1.9235

3.3466

1.4832

1.7321

1.8166

3.7000 11.2000

2.2000

3.0000

3.3000

>> varianza=var(A)
varianza =
2.5000

>> B=[2 4 -1 0;3 5 2 0;-1 2 1 2;1 -2 3 1]


B=
2
3
-1
1

4 -1
5 2
2 1
-2 3

0
0
2
1

>> t=trace(B)
t=
9
>> d=det(B)
d=
-71.0000
>> I=inv(B)
I=
0.5211 -0.1972 -0.1831 0.3662
-0.1268 0.1831 0.0986 -0.1972
-0.4648 0.3380 0.0282 -0.0563
0.6197 -0.4507 0.2958 0.4085
>> di=diag(B)
di =
2

75

76

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

5
1
1
>> Bs=tril(B)
Bs =
2
3
-1
1

0
5
2
-2

0
0
1
3

0
0
0
1

>> Bi=triu(B)
Bi =
2
0
0
0

4
5
0
0

-1
2
1
0

0
0
2
1

>> R=rot90(B)
R=
0
-1
4
2

0 2
2 1
5 2
3 -1

1
3
-2
1

>> H=fliplr(B)
H=
0
0
2
1

-1 4
2 5
1 2
3 -2

2
3
-1
1

>> V=flipud(B)
V=
1
-1

-2
2

3
1

1
2

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

3
2

5
4

2
-1

77

0
0

>> T=transpose(B)
T=
2
4
-1
0

3 -1
5 2
2 1
0 2

1
-2
3
1

>> T1=B'
T1 =
2
4
-1
0

3 -1
5 2
2 1
0 2

1
-2
3
1

Tambin es necesario indicar que la mayora de las funciones matemticas que hemos
desarrollado en el captulo II tambin funcionan con matrices. A continuacin desarrollaremos
algunos ejemplos de aplicacin.
>> A=[3.2,-2.3,5;3,6.8,4.1]
A=
3.2000 -2.3000
3.0000 6.8000

5.0000
4.1000

>> Z1=sin(A)
Z1 =
-0.0584 -0.7457 -0.9589
0.1411 0.4941 -0.8183

>> Z2=ceil(A)
Z2 =
4
3

-2
7

5
5

>> Z4=round(A)

78

FIEE UNCP

Z4 =
3
3

-2
7

Rubn Galeas Juan Arellano Hernn Juan de Dios

5
4

>> Z5=sqrt(A)
Z5 =
1.7889 + 0.0000i 0.0000 + 1.5166i 2.2361 + 0.0000i
1.7321 + 0.0000i 2.6077 + 0.0000i 2.0248 + 0.0000i
>> Z6=log(A)
Z6 =
1.1632 + 0.0000i 0.8329 + 3.1416i 1.6094 + 0.0000i
1.0986 + 0.0000i 1.9169 + 0.0000i 1.4110 + 0.0000i
c) Construccin rpida de matrices.
En el Cuadro 3.5 se muestra las funciones ms importantes que sirven para construccin de
matrices rpidas.
Cuadro 3.5. Funciones relacionados con la construccin de matrices en MATLAB.
Funcin
Descripcin
zeros(n)
Genera una matriz nula (de ceros) de nxn.
zeros(m,n)
Genera una matriz nula (de ceros) de mxn.
ones(n)
Genera una matriz de nxn, donde cada elemento es 1.
ones(m,n)
Genera una matriz de mxn, donde cada elemento es 1.
rand(n)
Genera una matriz de nxn con nmeros aleatorios entre 0 y 1.
rand(m,n)
Genera una matriz de mxn con nmeros aleatorios entre 0 y 1.
eye(n)
Genera una matriz identidad (diagonal de unos) de nxn.
Genera una matriz mgica (suma de filas, columnas y diagonales son
magic(n)
iguales) de nxn.
pascal(n)
Genera una matriz de nxn con el tringulo de Pascal.
Construye una matriz cuya diagonal son a, b, c, . El orden de la matriz
blkdiag(a,b,c,)
depende del nmero de elementos a, b, c,

A continuacin desarrollaremos algunos ejemplos de funciones que trabajan con matrices.


>> Z=zeros(3)
Z=
0
0
0

0
0
0

0
0
0

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

>> Z1=zeros(3,4)
Z1 =
0
0
0

0
0
0

0
0
0

0
0
0

>> On=ones(4)
On =
1
1
1
1

1
1
1
1

1
1
1
1

1
1
1
1

>> On=ones(4,2)
On =
1
1
1
1

1
1
1
1

>> R=rand(3)
R=
0.8147
0.9058
0.1270

0.9134
0.6324
0.0975

0.2785
0.5469
0.9575

>> R=rand(2,3)
R=
0.9649
0.1576

0.9706
0.9572

>> X=eye(3)
X=
1
0
0

0
1
0

0
0
1

>> M=magic(3)
M=
8

0.4854
0.8003

79

80

FIEE UNCP

3
4

5
9

Rubn Galeas Juan Arellano Hernn Juan de Dios

7
2

>> M1=magic(5)
M1 =
17
23
4
10
11

24 1 8 15
5 7 14 16
6 13 20 22
12 19 21 3
18 25 2 9

>> P=pascal(4)
P=
1
1
1
1

1
2
3
4

1 1
3 4
6 10
10 20

>> C=blkdiag(2,4,1,-2)
C=
2
0
0
0

0
4
0
0

0
0
1
0

0
0
0
-2

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

81

APLICACIONES DEL CAPTULO III.


3.1. Dado los conjuntos A, B y C que se muestran en la siguiente figura. Determinar las siguientes
operaciones con conjuntos.
a) A U B
b) A U C
c) B C
d) (B U C) A
e) A B
f) (A U C) (B C)
g) A B C

>> A=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]
A=
1

>> B=13:24

12

14

16

18

19

21

23

25

27

30

32

34

36

82

FIEE UNCP

B=
13

14

15

Rubn Galeas Juan Arellano Hernn Juan de Dios

16

17

18

19

20

21

22

23

24

>> C=3:3:36
C=
3

12

15

>> AoB=union(A,B)

18

21

24

>> AoC=union(A,C)

33

36

14

15

16

17

18

19

18

19

21

>> ByC=intersect(B,C)

12

14

15

16

BoCyA =
3 9 12

23

14

16

>> A_B=setdiff(A,B)

18

19

21

27

30

12

25

27

30

12

14

16

>> AyByC=intersect(intersect(A,B),C)
AyByC =
18 21

23

24

23

24

25

27

30

33

34

36

36

% Solucin e.

32

34

>> AoC_ByC=setdiff(union(A,C),intersect(B,C))
AoC_ByC =
1 3 5

22

24
% Solucin d.

21

% Solucin c.

>> BoCyA=intersect(union(B,C),A)

A_B =
1 3

20

% Solucin b.

AoC =
1 3 5 6 7
32 33 34 36

21

30

% Solucin a.

AoB =
1 3 5 7 9 12 13
25 27 30 32 34 36

ByC =
15 18

27

19

23

36
% Solucin f.

25

27

% Solucin g.

30

32

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

83

3.2. Dado los vectores: = 2 + 3 + 4 y = 3 + + 2 . Determinar el producto vectorial de x .

Solucin en MATLAB.
>> a=[2 3 4]
a=
2

>> b=[3 1 2]
b=
3

>> axb=cross(a,b)
axb =
2 8

-7

Entonces podemos concluir que el producto vectorial es: x = 2 + 8 7


3.3. En un saln de clase de 30 alumnos se ha preguntado el nmero de hermanos que tiene, el
resultado ha sido el siguiente:
2

Determinar la media, mediana, moda, desviacin estndar y varianza.

84

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Solucin en MATLAB.
>> h=[2 1 3 2 2 1 0 5 2 4 6 0 0 1 1 2 1 1 1 2 3 2 4 3 1 0 2 4 2 2]
h=
Columns 1 through 18
2

Columns 19 through 30
1

>> media=mean(h)
media =
2
>> mediana=median(h)
mediana =
2
>> moda=mode(h)
moda =
2
>> destandar=std(h)
destandar =
1.4856
>> varianza=var(h)
varianza =
2.2069
Por lo tanto diremos que:
Media=2
Mediana=2
Moda=2
Desviacin estndar=1,4856
Varianza=2,2069

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

3.4. Hallar las races de una ecuacin de grado n de la forma:

anxn+an-1xn-1+an-2xn-2++ao=0
Como ejemplo hallaremos las races de la ecuacin:

X2 + 3x 10 = 0
Solucin en MATLAB.
>> c=[1,3,-10]
c=
1

3 -10

>> x=roots(c)
x=
-5
2
Entonces podemos concluir que:
x1 = -5 y x2=2.
Otro ejemplo sera para hallar las races de la ecuacin:

2x5 5x4 + 3x3 x + 10=0


Solucin en MATLAB.
>> c=[2 -5 3 0 -1 10]
c=
2

-5

>> x=roots(c)
x=
1.7206 + 0.6507i
1.7206 - 0.6507i
0.0421 + 1.1997i
0.0421 - 1.1997i
-1.0253 + 0.0000i

-1

10

85

86

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Entonces podemos concluir que:


x1 = 1.7206 + 0.6507i
x2 = 1.7206 - 0.6507i
x3 = 0.0421 + 1.1997i
x4 = 0.0421 - 1.1997i
x5 = -1.0253
3.5. Hallar la determinante de la matriz que se muestra en la siguiente figura.

Solucin en MATLAB.
>> A=[1 3 5 2;0 -1 3 4;2 1 9 6;3 2 4 8]
A=
1
0
2
3

3
-1
1
2

5
3
9
4

2
4
6
8

>> d=det(A)
d=
160
La determinante de la matriz A es 160.

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

87

3.6. Hallar la transpuesta de la matriz.

Como ejemplo hallaremos las transpuestas de las matrices A1, A2 y A3 que se muestran en la
siguiente figura:

Solucin en MATLAB.
>> A1=[3 -1;-2 4]
A1 =
3 -1
-2 4
>> A2=[2 4 3;5 -1 2;-2 6 -3]
A2 =
2 4
5 -1
-2 6

3
2
-3

>> A3=[2 0 1;-1 3 4;-3 5 7;-5 -4 -2;8 6 9]


A3 =
2 0
-1 3
-3 5
-5 -4
8 6

1
4
7
-2
9

88

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> A1t=transpose(A1)
A1t =
3 -2
-1 4
>> A2t=transpose(A2)
A2t =
2 5 -2
4 -1 6
3 2 -3
>> A3t=transpose(A3)
A3t =
2 -1
0 3
1 4

-3 -5
5 -4
7 -2

8
6
9

Por lo tanto podemos decir que las transpuestas de las matrices A1, A2 y A3.

3.7. Hallar la inversa de la matriz A que se muestra en la siguiente figura.

CAPTULO III: ARREGLOS VECTORES Y MATRICES CON MATLAB

Solucin en MATLAB.
>> A=[1 -1 3 0;2 1 0 2;0 -1 1 0;0 1 1 -1]
A=
1
2
0
0

-1
1
-1
1

3
0
1
1

0
2
0
-1

>> A_1=inv(A)
A_1 =
5.0000 -2.0000 -11.0000 -4.0000
-2.0000 1.0000 4.0000 2.0000
-2.0000 1.0000 5.0000 2.0000
-4.0000 2.0000 9.0000 3.0000
Por lo tanto podemos decir que la inversa de la matriz A.

89

90

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

BIBLIOGRAFA

91

92

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

CAPTULO IV: PROGRAMACIN EN MATLAB

93

CAPTULO IV
PROGRAMACIN EN MATLAB
Antes de ingresar a la programacin en MATLAB, es necesario sugerir que el lector tenga alguna
experiencia de programacin en otros lenguajes tales como C++, Visual Basic, Visual FoxPro, etc.
MATLAB puede utilizarse como un lenguaje de programacin que tiene la gran ventaja de poder
incorporar a los programas propios del usuario todas las aplicaciones que ya tiene implementadas, lo
cual facilita y simplifica en muchos casos la programacin. Tambin ser de gran utilidad tener en
cuenta la estructura vectorial y matricial del programa. Todos los programas en MATLAB se escriben
en archivos (*.m) llamados M-fichero, el cual se explicar con mayor detalle durante el presente
captulo.
4.1 CREACIN DE ARCHIVOS M-FICHEROS EN MATLAB.
Para crear un archivo M-Fichero y poder disear un programa, en la versin R2015a del
MATLAB, existe bsicamente tres maneras:
1) Presionar Ctrl+N.
2) Hacer clic en el botn New Script que se muestra en la Figura 4.1
3) Hacer clic en el botn New que se muestra en la Figura 4.1 y seleccionar la opcin Script.

Figura 4.1. Pantalla principal del MATLAB que muestra los botones para crear archivos M -Ficheros.

Con cualquiera de las tres formas mencionadas, inmediatamente se visualizar la ventana Editor
en el cual se puede disear los programas correspondientes, tal como se muestra en la Figura 4.2.

94

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 4.2. Pantalla principal del MATLAB en el que se muestra la ventana de editor de programas.

Luego de terminar el diseo del programa se debe grabar o guardar el archivo, para ello se debe
hacer clic en el botn Save que se muestra en la Figura 4.2 y saldr la ventana que se muestra
en la Figura 4.3, en el cual se debe ingresar el nombre del archivo y hacer clic en el botn
Guardar y el programa estar listo para su ejecucin.

Figura 4.3. Ventana de grabacin de archivos.

CAPTULO IV: PROGRAMACIN EN MATLAB

95

Para ejecutar un programa grabado se debe hacer clic en el botn Run que se muestra en la
Figura 4.2 o simplemente presionar la tecla de funcin F5, luego el programa se ejecuta en la
ventana Command Windows que se muestra en la Figura 4.2.
4.2 OPERACIONES DE ENTREDA Y SALIDA DE DATOS EN MATLAB.
Todo lenguaje de programacin, para que sea prctico debe tener procedimientos para entrada
y salida de datos. En este caso en MATLAB existen varios procedimientos para entrada y salida
de datos los cuales, desarrollaremos a continuacin.
a) Entrada de datos (lectura de datos).
Para ingresar datos a un programa en MATLAB se utiliza la funcin input de la siguiente
manera:
>>X=input( );

%Pide un valor numrico sin comentario alguno y dicho valor se


almacena en la variable X.

>>Y=input(Ingrese dato: );

% Pide un valor numrico con el comentario Ingrese


dato: y dicho valor se almacena en la variable Y.

>>C=input('Ingrese cadena: ','s'); % Pide un valor tipo cadena y se almacena en la


variable C.
b) Salida de datos.
Para la salida de datos se utilizan las funciones disp y fprintf de la siguiente manera:
>>disp(A);

%muestra en pantalla el valor almacenado en la variable A.

>>disp(El resultado es: ); %muestra el mensaje El resultado es: en la pantalla.


Para el caso del fprintf tiene una variedad de formas, en el presente texto solo explicaremos
los que ms se usan, para el resto sugerimos al lector ver la ayuda del MATLAB presionando
>>help fprintf. En los siguientes ejemplos podemos observar el uso del fprintf.
>> a=5;
>> b=5.4;
>> suma=a+b;
>> fprintf('La suma de %10i ms %8.2f es %10.2f\n',a,b,suma)
La suma de
5 ms 5.40 es
10.40
En la sentencia fprintf, la primera parte solo es un comentario La suma es de, luego viene
la expresin %10i lo que significa que en un espacio de 10 caracteres se imprimir el valor
de la variable a que es del tipo entero (letra i de integer tambin se puede usar la letra d de

96

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

decimal, la letra o para visualizar el resultado en base octal o la letra x para ver el resultado en
base exadecimal), luego viene otro comentario ms seguido de %8.2f lo que significa que
en un espacio de 8 caracteres y con 2 decimales se imprimir el valor de la variable b que es
del tipo real (letra f de float tambin se puede usar las letras e y E que expresan en formato
exponencial y de ingeniera) y luego viene el comentario es seguido de %10.2f\n lo que
significa que en un espacio de 10 caracteres y con 2 decimales se imprimir el valor de la
variable suma, adems \n significa que para el siguiente fprintf se har un salto de lnea,
por ltimo se visualiza a,b,suma que es el orden de impresin del fprintf, es decir cada
smbolo porcentaje (%) que se encuentra dentro del fptinf corresponde a una variable que se
imprimir; en el ejemplo anterior la expresin 10i corresponde a la variable a, %8.2f
corresponde a la variable b y finalmente %10.2f\n corresponde a la variable suma seguido
del salto de lnea.
En el resultado que muestra el fprintf anterior se observan espacios en blanco, eso es debido
a que se ha impreso con anchos de 8 y 10 espacios para las variables b y suma, entonces
para evitar que salgan espacios innecesarios es mejor asigna un espacio de 1 y el MATLAB
se encarga de autoespaciarlos, entonces el ejemplo anterior quedara as:
>> a=5;
>> b=5.4;
>> suma=a+b;
>> fprintf('La suma de %1i ms %1.2f es %1.2f\n',a,b,suma)
La suma de 5 ms 5.40 es 10.40
%Ya no se muestran espacios.
A continuacin presentamos algunos ejemplos adicionales del fprintf con nmeros enteros.
>> N=3675;
>> fprintf('N=%1d\n',N) %N en base 10
N=3675
>> fprintf('N=%1o\n',N) %N en base 8 (octal)
N=7133
>> fprintf('N=%1x\n',N) %N en base 16 (exadecimal)
N=e5b
%en este caso e=14 y b=11, es decir N=3675=(14)5(11) 16.
A continuacin presentamos algunos ejemplos adicionales del fprintf con nmeros reales.
>> N=5678.893;
>> fprintf('N=%1.4f\n',N)
N=5678.8930
>> fprintf('N=%1.4e\n',N)
N=5.6789e+03
>> fprintf('N=%1.7E\n',N)
N=5.6788930E+03

%se muestra en formato normal con 4 decimales.


%se muestra en formato cientfico con 4 decimales.
%se muestra en formato cientfico con 7 decimales.

Sin ms prembulo a continuacin iniciaremos con la programacin, recordando al lector que


para programar tiene que ingresar a la ventana editor (ver tem 4.1).

CAPTULO IV: PROGRAMACIN EN MATLAB

97

4.3 ESTRUCTURAS SECUENCIALES.


Se llaman estructuras secuenciales debido a que una accin o instruccin sigue a otra en forma
secuencial uno tras otro hasta el final, no dependiendo de alguna condicin que haga variar su
secuencia.
Se debe entender que una estructura secuencial puede tener una sola instruccin o puede tener
un grupo de instrucciones. En la Figura 4.4 se muestra el diagrama de flujo de una estructura
secuencial, el cual significa que primero se ejecuta la instruccin 1, luego la instruccin 2 y as
sucesivamente hasta ejecutar la instruccin N.

Figura 4.4. Estructura secuencial.


En el siguiente programa se muestra las instrucciones secuenciales para calcular el volumen de
una esfera cuyo radio se debe ingresar desde el teclado, la frmula para hallar el volumen de una
esfera es el siguiente:

4 3
=
3
Para disear el programa presione ctrl+N para abrir la ventana de edicin de programas y luego
digite el siguiente programa secuencial.

clc;
r=input('Ingrese radio: ');
v=4*pi*r^3/3;
fprintf('volumen=%1.2f\n',v);
Luego grbelo con el nombre volesfera.m haciendo clic en el botn Save (ver Figura 4.2), y se
debe observar tal como se muestra en la Figura 4.5.

98

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 4.5. Ventana de editor de programas del MATLAB.


Luego para ejecutar el programa haga clic en el botn Run (ver Figura 4.2) o presionar la tecla de
funcin F5 luego en la ventana de comandos debe salir lo siguiente:
Ingrese radio: 4
volumen=268.08
Lo que significa que el volumen de una esfera de radio=4 es de 268,08; sin embargo algo
importante en los programas son las unidades respectivas por eso el programa anterior sera
mucho mejor si escribimos lo siguiente:

clc;
r=input('Ingrese radio (cm): ');
v=4*pi*r^3/3;
fprintf('volumen=%1.2f m3\n',v);
El resultado que se muestra sera:
Ingrese radio (cm): 4
volumen=268.08 m3
Lo que significa que el volumen de una esfera de radio=4 cm es de 268,08 cm 3.
4.4. ESTRUCTURAS CONDICIONALES.
En la mayor parte de los problemas - por no decir todos - que se presentan en la vida cotidiana y
que se pueden solucionar mediante un programa computacional, siempre presentan algunas
condiciones que harn cambiar una estructura secuencial.

CAPTULO IV: PROGRAMACIN EN MATLAB

99

Las estructuras condicionales se utilizan para tomar decisiones lgicas, por eso muchas veces,
se les llaman estructuras selectivas, porque se tienen que seleccionar una determinada accin
de acuerdo al valor de la condicin planteada.
Las condiciones se especifican usando los operadores de relacin (menor, mayor, igual, etc.) y
los operadores lgicos (y, o, negacin), adems se debe tener en cuenta que las condiciones
pueden ser simples o complejas pero siempre tendr un nico valor que puede ser VERDADERO
(V) o FALSO (F).
a) Operadores de relacin en MATLAB.
Los operadores de relacin, se utilizan para expresar condiciones simples y describe una
relacin entre dos valores; a travs de los operadores de relacin se construyen condiciones
que sern evaluadas como VERDADERO (1) o FALSO (0).
En un programa se puede hacer comparaciones tanto con datos numricos (enteros y reales)
como con datos de tipo carcter o del tipo cadena. En el Cuadro 4.1 se observa los operadores
de relacin que se usan en MATLAB.
Cuadro 4.1. Operadores de relacin en MATLAB.
Operador de
Equivalente
relacin en
Significado
matemtico
MATLAB
>
Mayor que
>
<
Menor que
<
>=
Mayor o igual que

<=
Menor o igual que

==
Igual que
=
~=
Diferente que (No igual que)

b) Operadores lgicos en MATLAB.


Los operadores lgicos, se utilizan para expresar condiciones complejas, esto se logra
combinando con los operadores de relacin; en una condicin compleja, tambin el resultado
ser VERDADERO (1) o FALSO (0). En el Cuadro 4.2 se muestra los operadores lgicos que
existen en MATLAB.
Cuadro 4.2. Operadores lgicos en MATLAB.
Operador Lgico en
Significado
MATLAB
&
Y (conjuncin)
|
O (disyuncin)
~
No (Negacin)

100

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

En el Cuadro 4.3 se muestra los valores que devuelve despus de trabajar con los operadores
lgicos.
Variables del tipo lgico
A
B
V
V
V
F
F
V
F
F

Resultados de los operadores de relacin


(A & B)
(A | B)
~A
V
V
F
F
V
F
F
V
V
F
F
V

c) Estructura condicional simple (if end).


Para explicar el funcionamiento de una estructura condicional simple, utilizaremos la
Figura 4.6, en el cual cuando la condicin es verdadera (V) se ejecuta las instrucciones 1, 2,
3, , N; en cambio si la condicin es falsa (F) no se ejecuta ninguna instruccin y simplemente
salta a la siguiente instruccin que tiene el programa.

Figura 4.6. Estructura condicional simple.


Una estructura condicional simple en MATLAB tiene la siguiente estructura:
if (condicin)
Instruccin
Instruccin
Instruccin

Instruccin
end

1;
2;
3;
N;

Antes de continuar es necesario aclarar que a diferencia del C++, en MATLAB la condicin no
necesariamente tiene que estar entre parntesis, sin embargo se recomienda que la condicin
est entre parntesis.

CAPTULO IV: PROGRAMACIN EN MATLAB

101

A continuacin desarrollaremos un programa para calcular el factorial de un nmero que se


ingresa desde el teclado, tener en cuenta que el nmero debe ser mayor o igual que cero (no
se olvide de presionar ctrl+N para abrir la ventana de edicin de programas ), entonces el
programa sera:
clc;
n=input('Ingrese un nmero: ');
if (n>=0)
f=factorial(n);
fprintf('factorial de %1d es %1d\n',n,f);
end
Cuando se ejecuta sale lo siguiente:
Ingrese un nmero: 5
factorial de 5 es 120
Pero para mejorar el programa cambiamos la sentencia fprintf de la siguiente manera:
clc;
n=input('Ingrese un nmero: ');
if (n>=0)
f=factorial(n);
fprintf('%1d! = %1d\n',n,f);
end
Cuando se ejecuta sale lo siguiente:
Ingrese un nmero: 5
5! = 120
Pero si ejecutamos para un valor negativo simplemente no sale nada.
d) Estructura condicional doble (if else end).
Para explicar el funcionamiento de una estructura condicional doble, utilizaremos la
Figura 4.7, en el cual cuando la condicin es verdadera (V) se ejecuta las instrucciones 1, 2,
3, , N; en cambio si la condicin es falsa (F) se ejecuta las instrucciones a, b, c, , z; aqu
es necesario aclarar que solo se ejecuta una de los dos grupos de instrucciones, pero nunca
los dos.

102

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 4.7. Estructura condicional doble.


Una estructura condicional doble en MATLAB tiene la siguiente estructura:
if (condicin)
Instruccin
Instruccin
Instruccin

Instruccin
else
Instruccin
Instruccin
Instruccin

Instruccin
end

1;
2;
3;
N;
a;
b;
c;
z;

A continuacin desarrollaremos un programa para calcular el factorial de un nmero que se


ingresa desde el teclado, tener en cuenta que el nmero debe ser mayor o igual que cero, en
caso contrario debe salir un mensaje indicando que el nmero debe ser mayor que cero,
entonces el programa sera:
clc;
n=input('Ingrese un nmero: ');
if (n>=0)
f=factorial(n);
fprintf('%1d! = %1d\n',n,f);
else
disp('En nmero debe ser mayor o igual que cero');
end
Cuando se ejecuta y se ingresa el nmero 6, sale lo siguiente:

CAPTULO IV: PROGRAMACIN EN MATLAB

103

Ingrese un nmero: 6
6! = 720
Cuando se ejecuta y se ingresa el nmero -6, sale lo siguiente:
Ingrese un nmero: -6
En nmero ingresado debe ser mayor o igual que cero
e) Estructura condicional mltiple (if elseif elseif else ... end)
Este es un caso muy especial, pero muy utilizado en la prctica ya que muchas veces es
necesario evaluar ms de dos condiciones a la vez tal como se muestra en la Figura 4.8.

Figura 4.8. Estructura condicional mltiple.


Tal como se puede apreciar en la Figura 4.8, esta estructura funciona de la siguiente manera:
primero evala la condicin 1, si es verdadera ejecuta el grupo de instrucciones 1 y salta a
la siguiente sentencia del programa y si dicha condicin es falsa evala la condicin 2, si es
verdadera ejecuta el grupo de instrucciones 2 y salta a la siguiente sentencia del programa
y si dicha condicin es falsa evala la condicin 3 y as sucesivamente hasta que si todas

104

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

las condiciones son falsas llega a evaluar la condicin N, si es verdadera ejecuta el grupo
de instrucciones N y salta a la siguiente sentencia del programa y si dicha condicin es falsa
ejecuta el grupo de instrucciones otro y contina el programa.
Una estructura condicional mltiple en MATLAB tiene la siguiente estructura:
if (condicin 1)
Grupo de instrucciones 1;
elseif (condicin 2)
Grupo de instrucciones 2;
elseif (condicin 3)
Grupo de instrucciones 3;

elseif (condicin N)
Grupo de instrucciones N;
else
Grupo de instrucciones otro;
end
A continuacin desarrollaremos una aplicacin de una estructura condicional mltiple, para
ello se pide elaborar un programa que ingrese desde el teclado el valor de x y luego debe
calcular el valor de y de acuerdo al siguiente detalle:

( )
= {
2 + ln( )

< 0
0 <1
1

Aplicando la estructura de condicin mltiple, el programa sera.


clc
x=input('Ingrese el valor de x: ');
if (x<0)
y=sin(x);
elseif (x<1)
y=x;
else
y=x^2+log(x);
end
fprintf('y=%1.5f\n',y);
Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente:
ingrese el valor de x: -5
y=0.95892
Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente:

CAPTULO IV: PROGRAMACIN EN MATLAB

105

Ingrese el valor de x: 0.4


y=0.40000
Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente:
Ingrese el valor de x: 2
y=4.69315
f) Estructura de decisin mltiple (switch case1 case2 otherwise ... end)
Este tambin es un caso muy especial y tambin muy utilizado en la prctica, sobre todo
cuando se disea sistemas de mens en el cual es necesario seleccionar ms de dos
opciones posibles, la estructura de decisin mltiple evaluarn una expresin que podr
tomar N valores distintos (Valor 1; Valor 2; Valor 3; ; Valor N). Tal como se muestra en la
Figura 4.9, segn se elija uno de estos valores en la condicin se realizar una de las
acciones correspondientes.

Figura 4.9. Estructura de decisin mltiple.

106

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Una estructura de decisin mltiple en MATLAB tiene la siguiente estructura:


switch (expresion)
case Valor 1
Grupo de instrucciones 1;
case Valor 2
Grupo de instrucciones 2;
case Valor 3
Grupo de instrucciones 3;
case Valor N
Grupo de instrucciones N;
otherwise
disp('Opcin equivocada');
end
A continuacin desarrollaremos una aplicacin de una estructura de decisin mltiple, para
ello se pide elaborar un programa que ingrese un nmero del 1 al 12 desde el teclado y luego
el programa debe devolver el mes que corresponde al nmero ingresado, el programa sera:
clc;
n=input('Ingrese nmero (1-12): ');
switch (n)
case 1
disp('Enero');
case 2
disp('Febrero');
case 3
disp('Marzo');
case 4
disp('Abril');
case 5
disp('Mayo');
case 6
disp('Junio');
case 7
disp('Julio');
case 8
disp('Agosto');
case 9
disp('Setiembre');
case 10
disp('Octubre');
case 11
disp('Noviembre');
case 12
disp('Diciembre');
otherwise
disp('Opcin equivocada');
end

107

CAPTULO IV: PROGRAMACIN EN MATLAB

Cuando se ejecuta y se ingresa el valor para n=5, sale lo siguiente:


Ingrese nmero (1-12): 5
Mayo
Cuando se ejecuta y se ingresa el valor para n=2, sale lo siguiente:
Ingrese nmero (1-12): 5
Febrero
Cuando se ejecuta y se ingresa el valor para n=15, sale lo siguiente:
Ingrese nmero (1-12): 15
Opcin equivocada
Para comprender mejor una estructura de decisin mltiple, a continuacin desarrollaremos
un ejemplo de aplicacin matemtica, para ello se pide elaborar un programa que ingrese
desde el teclado el valor de x y luego debe calcular el valor de y de acuerdo al siguiente
detalle:

5 3
= {2 2 + 6
+

= 1
= 2, 3, 4

Aplicando la estructura de decisin mltiple, el programa sera.


clc
x=input('Ingrese valor de x: ');
switch x
case 1
y=5-3*x;
case {2,3,4}
y=2*x^2+6;
otherwise
y=exp(x)+x;
end
fprintf('y=%1.4f\n',y);
Cuando se ejecuta y se ingresa el valor para x=3, sale lo siguiente:
Ingrese valor de x: 3
y=24.0000
Cuando se ejecuta y se ingresa el valor para x=1, sale lo siguiente:
Ingrese valor de x: 1
y=2.0000

108

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Cuando se ejecuta y se ingresa el valor para x=1.78, sale lo siguiente:


Ingrese valor de x: 1.78
y=7.7099
4.5. ESTRUCTURAS DE CONTROL REPETITIVOS.
En todos los lenguajes de programacin modernos como el MATLAB, necesariamente tienen que
considerar las estructuras de control repetitivos o de iteraciones tambin llamado bucles. Los
bucles son segmentos de programa cuyas instrucciones se repitan varias veces mientras cumpla
una condicin, para utilizar adecuadamente las estructuras de control repetitivos es necesario
definir los conceptos de contador y acumulador.
a) Contador.
Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se
necesitan contar los sucesos o acciones internas del bucle. Un contador es una variable cuyo
valor se incrementa o decrementa de uno en uno. Las siguientes sentencias son ejemplos de
acumuladores en MATLAB.
i=i+1;
x=x+1;
y=y-1;

% el valor de i se incrementa de uno en uno.


% el valor de x se incrementa de uno en uno.
% el valor de y se decrementa de uno en uno.

b) Acumulador.
Un acumulador es una variable cuya misin es almacenar cantidades variables de valores en
la misma variables. Este tipo de variable es muy comn utilizar para totalizar por ejemplo en
sumas, promedios, etc.. Las siguientes sentencias son ejemplos de acumuladores en
MATLAB.
suma=10;
suma=suma+5;
suma=suma+25;

% el valor de suma se inicia en 10.


% el valor de suma se incrementa en 5 por tanto suma=15.
% el valor de suma se incrementa en 25 por tanto suma=40

c) Estructura repetitiva mientras (while --- end).


La estructura repetitiva mientras es aquella en la que el nmero de iteraciones no se conoce
por anticipado y es que el cuerpo del bucle se repite mientras la condicin sea verdadera. En
la Figura 4.10 se puede observar el diagrama de fijo de la estructura repetitiva mientras.
Tal como se observa en la Figura 4.10, es una estructura que depende de la condicin,
mientras que la condicin sea verdadera se ejecutar la instruccin 1, la instruccin 2, as
sucesivamente hasta la instruccin N.

CAPTULO IV: PROGRAMACIN EN MATLAB

109

Figura 4.10. Estructura repetitiva mientras.


En el caso de la estructura repetitiva mientras, se debe tener en cuenta los siguientes
aspectos:
1) Si a la primera evaluacin la condicin es falsa (F), el grupo de instrucciones no se ejecutar
ni una sola vez, es decir saltar directamente a la siguiente instruccin del bucle mientras.
2) Si la condicin en ningn momento se vuelve falso (F), el bucle se hace infinito, es decir,
cuando se utiliza el bucle mientras se debe tener cuidado en que de alguna forma la
condicin se haga falsa (F).
La estructura repetitiva mientras en MATLAB tiene la siguiente estructura:
while (condicin)
Instruccin 1;
Instruccin 2;
Instruccin 3;

Instruccin N;
end
A continuacin desarrollaremos una aplicacin de la estructura repetitiva mientras, en este
caso desarrollaremos un programa para determinar la suma de N nmeros enteros que se
ingresan desde el teclado.

110

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

clc
N=input('Ingrese nmero de datos: ');
i=1;
suma=0;
while (i<=N)
dato=input('Ingrese nmero: ');
suma=suma+dato;
i=i+1;
end
fprintf('Suma=%1d\n',suma);
Cuando se ejecuta para un valor de N=5 e ingresamos los datos 12, 17, 8, 30 y 18; sale lo
siguiente:
Ingrese nmero de datos: 5
Ingrese nmero: 12
Ingrese nmero: 17
Ingrese nmero: 8
Ingrese nmero: 30
Ingrese nmero: 18
Suma=85
d) Estructura repetitiva para (for --- end).
La estructura repetitiva para se inicia con un contador que tiene un valor inicial (Vi) y un
valor final (Vf) y que en cada iteracin se incremente generalmente de uno en uno; pero en
MATLAB se puede incrementar de dos en dos o de tres en tres, etc.; entonces la cantidad de
veces que se ejecuta el bucle ser mientras que el valor actual del contador sea menor o
igual al valor final (Vf). En la estructura repetitiva para el incremento en cada iteracin es
automtico. El diagrama de flujo de esta estructura es similar al de la estructura repetitiva
mientras (ver Figura 4.10).
La estructura repetitiva para en MATLAB tiene la siguiente estructura:
for (contador=Vi:Vf)
Instruccin 1;
Instruccin 2;
Instruccin 3;

Instruccin N;
end
En el caso mostrado el contador se incremente de uno en uno desde el valor inicial (Vi) hasta
llegar al valor final (Vf), si se quiere que el incremento sea de n en n la estructura sera:

CAPTULO IV: PROGRAMACIN EN MATLAB

111

for (contador=Vi:n:Vf)
Instruccin 1;
Instruccin 2;
Instruccin 3;

Instruccin N;
end
En el caso que Vi sea mayor que Vf el valor de n debe ser negativo, y en este caso diremos
que el valor del contador se decrementa de n en n.
Para poder mostrar la diferencia, a continuacin desarrollaremos la misma aplicacin de la
estructura repetitiva mientras, en este caso desarrollaremos un programa para determinar
la suma de N nmeros enteros que se ingresan desde el teclado pero utilizando la estructura
repetitiva para.
clc
N=input('Ingrese nmero de datos: ');
suma=0;
for (i=1:N)
dato=input('Ingrese nmero entero: ');
suma=suma+dato;
end
fprintf('Suma=%1d\n',suma);
Cuando se ejecuta para un valor de N=5 e ingresamos los datos 24, 8, 12, 5 y 12; sale lo
siguiente:
Ingrese nmero de datos: 5
Ingrese nmero entero: 24
Ingrese nmero entero: 8
Ingrese nmero entero: 12
Ingrese nmero entero: 5
Ingrese nmero entero: 12
Suma=61
Un caso especial del uso de la estructura repetitiva para, que ningn lenguaje de
programacin lo tiene, es que MATLAB puede utilizar de la siguiente manera:
for (i=k)
Instruccin
Instruccin
Instruccin

Instruccin
end

1;
2;
3;
N;

112

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Donde k es un array unidimensional (vector) con n elementos. Por ejemplo si definimos el


array x=[2,3,7,4,5,-1] y deseamos ingresar individualmente a cada valor, el programa sera el
siguiente:
clc;
k=[2,3,7,4,5 -1];
for i=k
disp(i);
end
Despus de ejecutar el programa se muestra los siguientes resultados:
2
3
7
4
5
-1
El cual significa que el valor del contador i no se incrementa en forma secuencial, sino que
en cada iteracin el valor de i va tomando valores del vector k.
4.6. FUNCIONES DEFINADAS POR EL USUARIO.
Todo lenguaje de programacin tiene sus propias funciones internas, en este caso el MATLAB no
es la excepcin, en el captulo II hemos tratado las principales funciones internas (sin, cos, ceil,
sqrt, sum, etc.) del MATLAB.
El MATLAB tiene ms funciones internas desarrollados que otros lenguajes de programacin, sin
embargo hay algunas funciones especiales que no existen en MATLAB, por ejemplo para calcular
el logaritmo de nmero en cualquier base; por lo tanto es necesario que el lector aprenda a disear
sus propias funciones.
Una funcin es una secuencia de instrucciones que se realizan con la finalidad de retornar un
valor, aunque en MATLAB se puede disear funciones que devuelvan dos valores, tres valores,
etc., incluso se pueden disear funciones que devuelvan varios valores almacenados en un vector
(array unidimensional) o en una matriz (array bidimensional). Las funciones definidas por el
usuario se almacenan como archivos-M y MATLAB accede a ellos cuando estn almacenados en
el directorio de trabajo del MATLAB.

CAPTULO IV: PROGRAMACIN EN MATLAB

113

a) Estructura de una funcin definida por el usuario.


La estructura de una funcin en MATLAB es la siguiente:
function [variables_retorno]=nombre_funcion(lista_parametros)
Instruccin 1;
Instruccin 2;
Instruccin 3;

Instruccin N;
variables_retorno;
end
Donde:
[variables_retorno]

Puede ser una, dos o ms variables (todos separados por comas);


cada variable puede ser escalar, vector o matriz. Tambin es
necesario indicar que todas las variables de retorno, deben ser
indicados dentro del desarrollo de la funcin, es decir, la funcin
devolver el ltimo valor de cada variable almacenado dentro de la
funcin.

nombre_funcion

Representa el nombre de la funcin el cual debe cumplir los mismos


requisitos del nombre de una variable (ver captulo I). Lo que se
recomienda es que no se debe utilizar como nombre de la funcin
aquellas que corresponden a las funciones internas del MATLAB.

(lista_parametros)

La lista de parmetros pueden ser una, dos o ms variables (todos


separados por comas), cada variable puede ser escalar, vector o
matriz. La lista de parmetros son los datos de entrada a la funcin,
del cual dependern los resultados que devuelve la funcin.

Como ejemplo de aplicacin disearemos una funcin que calcule el logaritmo en base b de
cualquier nmero N a esta funcin lo llamaremos logbN, para ello utilizaremos la siguiente
frmula:

=
Entonces el cdigo de programacin sera:
function [y]=logbN(N,b)
y=log10(N)/log10(b);
end

log ()
log()

114

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Nota: Las funciones se disean en la misma ventana donde se desarrollan los programas, es
decir, para empezar a disear una funcin se presionar ctrl+N (ver tme 4.1) y para usar una
funcin en MATLAB se debe grabar con el mismo nombre de la funcin respetando minsculas
y maysculas (ver Figura 4.3), entonces en este caso debemos grabar con el nombre
logbN.m, luego para probar el funcionamiento se debe ingresar los siguiente:
>> x=logbN(8,2) %calcula el logaritmo de 8 en base 2.
x=
3
>> y=logbN(20,4) %calcula el logaritmo de 20 en base 4.
y=
2.1610
b) Funciones sin entrada o salida.
Normalmente, las funciones necesitan por lo menos una variable como parmetro de entrada
y retornan al menos un valor de salida, sin embargo en algunas situaciones no se necesitan
ningn valor de entrada, y en algunos otros no se necesitan ningn valor de salida, este ltimo
caso se conoce como procedimiento en otros lenguajes de programacin, la estructura de
una funcin con estas caractersticas sera. Generalmente este caso se usa para definir
constantes como el valor de pi (3,141592).
function [ ]=nombre_funcion( )
Instruccin 1;
Instruccin 2;
Instruccin 3;

Instruccin N;
end
Por ejemplo si deseamos crear una funcin que devuelva el valor de la velocidad de la luz,
sera:
function [y]=velocluz()
y=3e8;
end
Cuando se llama a la funcin el resultado que se muestra sera:
>> velocluz
ans =
300000000

CAPTULO IV: PROGRAMACIN EN MATLAB

115

Otra aplicacin de un procedimiento que es una funcin que no devuelve ningn valor sera
para graficar una parbola de la forma ax2+bx+c, entonces el cdigo sera:
function []=parabola(a,b,c,puntos)
x=linspace(-5,5,puntos);
y=a*x.^2+b*x-c;
plot(x,y);
grid on
end
Entonces para graficar una parabola de la forma y=x2+4 con 8 puntos sera:
>> parabola(1,0,4,8)
En este caso el resultado que se obtendra sera el que se muestra en la Figura 4.11.

Figura 4.11. Ventana que muestra la parbola con 8 puntos.


Si ejecutamos con 100 puntos sera el que se muestra en la Figura 4.12.
>> parabola(1,0,4,100)

116

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 4.12. Ventana que muestra la parbola con 100 puntos.

CAPTULO IV: PROGRAMACIN EN MATLAB

117

APLICACIONES DEL CAPTULO IV.


4.1. Elaborar un programa para determinar las races de una ecuacin cuadrtica de la forma
Ax2+Bx+C=0 para el cual se utiliza las siguientes frmulas:

1 =

+ 2 4
2

2 4
2 =
2
El programa en MATLAB sera:
% races de una ecuacin de la forma Ax2+Bx+C=0
clc;
A=input('Ingrese A: ');
B=input('Ingrese B: ');
C=input('Ingrese C: ');
x1=(-B+sqrt(B^2-4*A*C))/(2*A);
x2=(-B-sqrt(B^2-4*A*C))/(2*A);
fprintf('x1 =');disp(x1);
fprintf('x2 =');disp(x2);
Cuando se ejecuta el programa para valores de A=1, B=5 y C=-20 se obtiene lo siguiente:
Ingrese A: 1
Ingrese B: 5
Ingrese C: -20
x1 = 2.6235
x2 = -7.6235
4.2. Elaborar un programa para determinar el rea del tringulo cuyos lados se deben ingresar desde
el teclado; tener en cuenta que si los lados ingresados no corresponden a un tringulo debe salir
el mensaje Los lados no corresponden a un tringulo.

118

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

% programa para calcular el rea de un tringulo.


clc
a=input('Ingresa lado a: ');
b=input('Ingresa lado b: ');
c=input('Ingresa lado c: ');
if (a+b>c & a+c>b & b+c>a)
p=(a+b+c)/2;
area=sqrt(p*(p-a)*(p-b)*(p-c));
fprintf('rea=%1.2f\n',area);
else
fprintf('Los lados no corresponden a un tringulo');
end
Cuando se ejecuta el programa para valores de a=3, b=4 y c=5 se obtiene lo siguiente:
Ingresa lado a: 3
Ingresa lado b: 4
Ingresa lado c: 5
rea=6.00
Cuando se ejecuta el programa para valores de a=2, b=2 y c=100 se obtiene lo siguiente:
Ingresa lado a: 2
Ingresa lado b: 2
Ingresa lado c: 100
Los lados no corresponden a un tringulo>>

BIBLIOGRAFA

119

120

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

CAPTULO V: GRFICOS EN MATLAB

121

CAPTULO V
GRFICOS EN MATLAB
La representacin grfica de cualquier serie de datos es uno de los aspectos muy importantes que
tiene el MATLAB. Dispone de funciones para representar series de puntos, lneas, superficies, curvas
de nivel, permite agrupar y superponer grficos, realizar grficos estadsticos, etc.; prcticamente
cualquier cosa puede representarse grficamente en MATLAB, ya que permite crear complejos
grficos bidimensionales y tridimensionales.
Para hacer grficos se utiliza una ventana especial para la creacin de los grficos que se llama
ventana grfica o de dibujo (ver Figura 5.1) en dicha ventana existen una barra de mens y la barra
de herramientas con conos que sirven para editar y mejorar los grficos. Un cono muy importante es
para guardar los grficos en ficheros de extensin .fig y con el cono de abrir archivos se puede
recuperar los grficos guardados, adems existe otro cono para imprimir grficos. Para poder copiar
un grfico y llevarlo al Word o Excel simplemente se debe ingresar al men Edit/Copy Figure y pegarlo
en la aplicacin correspondiente utilizando ctrl-V.

Figura 5.1. Ventana grfica del MATLAB.


5.1 GRFICAS BIDIMENSIONALES 2D.
Las grficas ms tiles para los ingenieros son los grficos bidimensionales. Por las
caractersticas propias del programa, los grficos bidimensionales, estn orientados a la
representacin grfica de vectores.

122

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Para hacer grficos bidimensionales en MATLAB se utiliza la funcin plot(x,y); donde x e y son
vectores que tienen el mismo nmero de elementos, de tal manera que cada elemento de x
corresponde al mismo elemento de y, por lo que se van formando pares ordenados de la forma
(xi;yi) donde i represente el ndice del vector correspondiente y la funcin plot va juntando los
puntos a travs de una lnea en el sistema de coordenadas x,y, por ejemplo
>> x=[-2,-1,2,4];
>> y=[-3,2,4,-1];
>>plot(x,y);
% une los puntos (-2;-3), (-1;2), (2;4) y (4;-1)
Luego sale el grfico que se muestra en la Figura 5.2.

Figura 5.2. Grafico que muestra la unin de los puntos (3;1), (5;3), (2;-1) y (4;3).
a) Grficas de funciones de la forma y = f(x).
- Grfica de una recta de la forma y=ax+b.
Para graficar una recta slo es necesario conocer dos puntos en el plano cartesiano como
se muestra en la Figura 5.3, para graficar esta recta que pasa por los puntos (0;-3) y (2;1)
en MATLAB se procede de la siguiente manera:
>> x=[0 2];
>> y=[-3 1];
>> plot(x,y)
El resultado de esta operacin se muestra en la Figura 5.4.

CAPTULO V: GRFICOS EN MATLAB

123

Figura 5.3. Grfica de una recta conociendo dos puntos.

Figura 5.4. Grfica de la recta de la Figura 5.3 en MATLAB.


Observando las Figuras 5.3 y 5.4 podemos indicar que las escalas de los ejes x e y en la
Figura 5.4 no son iguales, este problema se soluciona utilizando la sentencia axis equal el
que significa que los ejes son iguales; entonces las nuevas sentencias seran:
>> x=[0 2];
>> y=[-3 1];

124

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> plot(x,y)
>> axis equal

Figura 5.4. Grfica de la recta de la Figura 5.3 en MATLAB con ejes iguales.
Otra observacin es que el MATLAB auto ajusta sus escalas al tamao necesario, pero
muchas veces, este detalle hace que los grficos no sean tan explcitos por ello MATLAB
tiene la sentencia axis([x1 x2 y1 y2]) que define el rea de la zona grfica desde el punto
(x1;y1) hasta el punto (x2;y2), es decir, la extensin del eje x es desde x1 hasta x2 y del eje
y es desde y1 hasta y2. Entonces las nuevas sentencias seran:
>> x=[0 2];
>> y=[-3 1];
>> plot(x,y)
>> axis equal
>> axis([-5 6 -5 4])

%define el eje x desde -5 hasta 6 y el eje y desde -5 hasta 4.

El resultado de esta aplicacin se muestra en la Figura 5.5.


Para retornar el rea del grfico a su estado por defecto se utiliza la sentencia axis normal.
Por ltimo, si queremos mejorar el grfico se debe aadir las rejillas, el cual en MATLAB se
activa con la sentencia grid on con el cual el grfico se observara tal como se muestra en
la Figura 5.6; para desactivar la rejilla se utiliza la sentencia grid off.

CAPTULO V: GRFICOS EN MATLAB

125

Figura 5.5. Grfica de la recta de la Figura 5.3 en MATLAB con rea definida.
>> x=[0 2];
>> y=[-3 1];
>> plot(x,y)
>> axis equal
>> axis([-5 6 -5 4])
>>grid on;

%define el eje x desde -5 hasta 6 y el eje y desde -5 hasta 4.

Figura 5.6. Grfica de la recta de la Figura 5.3 en MATLAB con rejilla.

126

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Despus de este pequeo prembulo muy necesario para comprender mejor los grficos que
genera MATLAB, desarrollaremos las sentencias necesarias para graficar una recta de la
forma y=ax+b, donde los literales a y b representan a cualquier nmero real, entonces
como se dijo anteriormente se debe generar dos vectores para x e y, por ello las sentencias
graficar una recta sera la siguiente:
>>x=linspace(-5,5,11); %genera 11 puntos desde el -5 al 5
>>y=2.*x-3;
%genera 11 puntos para y=2x-3
>>plot(x,y);
>>axis equal;
>>axis([-6 6 -15 10]);
>>grid on;
Entonces se obtiene el grfico que se muestra en la Figura 5.7.

Figura 5.7. Grfico que representa a la recta y=2x-3.


En algunas ocasiones las cuadrculas son muy grandes, entonces para hacer las cuadrculas
ms pequeas se utiliza la sentencia grid minor y se obtendra la grfica que se muestra
en la Figura 5.8.
>>grid minor;

CAPTULO V: GRFICOS EN MATLAB

127

Figura 5.8. Grfico que representa a la recta y=2x-3 con rejillas ms pequeas.
- Grfica de una funcin cuadrtica de la forma y=ax2+bx+c (parbola).
La ecuacin de segundo grado, tambin llamada ecuacin cuadrtica, se puede escribir de
la forma y=ax2+bx+c, en donde las literales a, b y c representan a cualquier nmero real. El
grfico de este tipo le corresponde a una parbola.
Si el coeficiente del trmino cuadrtico es positivo, o sea a>0, la parbola se abre hacia
arriba; si el coeficiente del trmino cuadrtico es negativo, o sea a<0, la parbola se abre
hacia abajo.
A continuacin desarrollaremos las sentencias necesarias para graficar una parbola de la
forma y=2x2-4x+5.
>> x=linspace(-4,6,100);
>> y=2*x.^2-4*x+5;
>> plot(x,y)
>> axis([-5 7 0 60])
>> grid on
>> grid minor

128

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Entonces se obtiene el grfico que se muestra en la Figura 5.9.

Figura 5.9. Grfico que representa a la parbola y=2x2-4x+5.


- Grfica de una funcin cbica de la forma y=ax3+bx2+cx+d.
La ecuacin de tercer grado, tambin llamada ecuacin cbica, se puede escribir de la forma
y=ax3+bx2+cx+d, en donde las literales a, b, c y d representan a cualquier nmero real.
A continuacin desarrollaremos las sentencias necesarias para graficar una funcin cbica
de la forma y=x3-6x2+2x-3.
>> x=linspace(-1.5,6,100);
>> y=x.^3-6*x.^2+2*x-3;
>> plot(x,y)
>> axis([-2 6.5 -30 12])
>> grid on
>> grid minor
Entonces se obtiene el grfico que se muestra en la Figura 5.10.

129

CAPTULO V: GRFICOS EN MATLAB

Figura 5.10. Grfico que representa a la funcin cbica y=x3-6x2+2x-3.


- Grfica de funciones polinmicas de la forma y=anxn+an-1xn-1+an-2xn-2++ao.
En los dos tems anteriores se estudiaron las grficas de las funciones polinomiales de
segundo grado (funcin cuadrtica) y tercer grado (funcin cbica). De igual forma, se podra
hacer para las de cuarto grado, las de quinto grado, etc.. Los grficos de las funciones de
tercer grado en adelante se pueden hacer de manera generalizada, pues se cumplen en
todas algunos aspectos bsicos. Cuando se tiene una grfica como la mostrada en la
Figura 5.11, los puntos que dan la apariencia de ser como el ms elevado de un cerro se
llaman puntos mximos; en cambio, los puntos que dan la apariencia de ser la parte ms baja
como de un pozo se llaman puntos mnimos.

Figura 5.11.

130

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

En la Figura 5.11 hay dos puntos mximos (puntos A y C) y dos puntos mnimos (puntos B y
D), por lo tanto, en total hay cuatro puntos entre mximos y mnimos. En un polinomio de
tercer grado hay dos mximos y mnimos (ver Figura 5.10); en un polinomio de cuarto grado
existen tres mximos y mnimos, en un polinomio de quinto grado hay cuatro mximos y
mnimos, etc.. Es decir, la grfica de un polinomio de grado n debe tener n-1 mximos y
mnimos.
Otra caracterstica de una grfica polinomial es saber para dnde apuntan sus extremos. Si
el polinomio es de grado par sus dos extremos se abren hacia el mismo lado; ambos hacia
arriba si el coeficiente del primer trmino del polinomio es positivo (ver Figura 5.11) o ambos
hacia abajo si dicho coeficiente es negativo.
A continuacin desarrollaremos las sentencias necesarias para graficar una funcin de cuarto
grado de la forma y=x4+x3-5x2-3.
>> x=linspace(-2.5,2,100);
>> y=x.^4+x.^3-5*x.^2-3;
>> plot(x,y)
>> axis([-3 2.5 -16 2])
>> grid on
>> grid minor
Entonces se obtiene el grfico que se muestra en la Figura 5.11.

Figura 5.11. Grfico que representa a la funcin de la forma y=x4+x3-5x2-3.

CAPTULO V: GRFICOS EN MATLAB

131

- Grfica de una funcin racional de la forma y=1/p(x).


En esta parte, solo estudiaremos las funciones racionales de la forma y=1/p(x), donde el
denominador p(x) representa a cualquier polinomio tal que p(x)0, en este tipo de funciones
aparecen los conceptos de asntota, el cual es una recta a la cual una curva se acerca ms
y ms sin llegar nunca a tocarla (ver Figura 5.12).

Figura 5.12. Grficas de funciones racionales de la forma y=1/p(x).


A continuacin desarrollaremos las sentencias necesarias para graficar una funcin de cuarto
grado de la forma y=1/(2-x).
>> x=linspace(-2,6,100);
>> y=1./(2-x);
>> plot(x,y)
>> axis([-3 7 -25 25]);
>> grid on
>> grid minor
Entonces se obtiene el grfico que se muestra en la Figura 5.13.
A continuacin desarrollaremos las sentencias necesarias para graficar una funcin de cuarto
grado de la forma y=1/(x2+x-12).
>> x=linspace(-7,6,100);
>> y=1./(x.^2+x-12);
>> plot(x,y)
>> plot(x,y)

132

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> axis([-8 7 -8 2]);


>> grid on
>> grid minor
Entonces se obtiene el grfico que se muestra en la Figura 5.14.

Figura 5.13. Grfico que representa a la funcin de la forma y=1/(2-x).

Figura 5.14. Grfico que representa a la funcin de la forma y=1/(x2+x-12).

CAPTULO V: GRFICOS EN MATLAB

133

- Grfica de una funcin sinusoidal de la forma y=a+b.sen(cx+).


Este tipo de funciones tiene bastante aplicacin dentro del campo de la ingeniera,
especialmente en la ingeniera elctrica, electrnica y mecatrnica.
El sinusoide es la grfica que corresponde a y=sen(x), donde x es un ngulo, y como los
ngulos se miden en grados sexagesimales o en radianes, x puede en cualquiera de ambas
unidades, para ello se debe tener en cuenta que en una circunferencia caben 360 grados
sexagesimales y tambin 2 radianes, por tanto 360=2 radianes, la grfica tradicional de
la funcin y=sen(x) se muestra se muestra en la Figura 5.15. A la forma que se muestra en
la Figura 5.15 se le llama onda sinusoidal y se observan las caractersticas de una funcin
sinusoidal.

Figura 5.15. Grfica tradicional de la funcin y=sen(x).


A las caractersticas elementales que tiene la funcin y=sen(x), se puede aadir datos
adicionales que modifican la onda sinusoidal tradicional, los cuales desarrollaremos a
continuacin en MATLAB.
A continuacin graficaremos en MATLAB la funcin y=sen(x), cuyas sentencias son las
siguientes.
>> x=linspace(0,360,100);
>> y=sind(x);
>> plot(x,y)
>> axis([0 370 -1.25 1.25]);
>> grid on
>> grid minor

134

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

En la Figura 5.16 se muestra la grfica de la funcin y=sen(x) en MATLAB.

Figura 5.16. Grfico que representa a la funcin de la forma y=sind(x).


Para lograr un desplazamiento en el eje Y se aade un trmino independiente a la funcin
original, por ejemplo y=2+sen(x) cuya grfica en MATLAB se muestra en la Figura 5.17, en
el cual se aprecia el desplazamiento de 2 unidades en el eje Y hacia arriba.
>> x=linspace(0,360,100);
>> y=2+sind(x);
>> plot(x,y);
>> axis([0 370 -1.25 3.25]);
>> grid on;
>> grid minor;

Figura 5.17. Grfico que representa a la funcin de la forma y=2+sind(x).

CAPTULO V: GRFICOS EN MATLAB

135

Para lograr un desplazamiento en el eje X se aade un ngulo independiente que sume o


reste directamente a la variable x, por ejemplo y=sen(x+90) cuya grfica en MATLAB se
muestra en la Figura 5.18, en el cual se aprecia el desplazamiento de 90 hacia la derecha
del eje X.
>> x=linspace(90,450,100);
>> y=sind(x+90);
>> plot(x,y)
>> axis([0 460 -1.25 1.25]);
>> grid on
>> grid minor

Figura 5.18. Grfico que representa a la funcin de la forma y=sind(x+90).


La amplitud de la onda normal de la funcin y=sen(x) es desde -1 hasta 1 en el eje Y, sin
embargo, se puede variar esta amplitud agregando un coeficiente al trmino sen(x). Por
ejemplo y=3sen(x) cuya grfica en MATLAB se muestra en la Figura 5.19, en el cual se
aprecia que la amplitud de la onda es desde -3 hasta 3 en el eje Y.
>> x=linspace(0,360,100);
>> y=3*sind(x);
>> plot(x,y)
>> axis([0 370 -3.25 3.25]);
>> grid on
>> grid minor

136

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 5.19. Grfico que representa a la funcin de la forma y=3sind(x).


La frecuencia normal de una onda sinusoidal tienen una sola onda en el intervalo de 0 a
360 (de 0 a 2 rad), sin embargo, tambin se puede modificar la frecuencia aumentado un
coeficiente directamente a la variable x. Por ejemplo y=sen(3x) cuya grfica en MATLAB se
muestra en la Figura 5.20, en el cual se aprecia que la frecuencia es de 3 ondas en el intervalo
de 0 a 360.
>> x=linspace(0,360,100);
>> y=sind(3*x);
>> plot(x,y)
>> axis([0 370 -1.25 1.25]);
>> grid on
>> grid minor

Figura 5.20. Grfico que representa a la funcin de la forma y=sind(3x).

137

CAPTULO V: GRFICOS EN MATLAB

En resumen podemos hacer una aplicacin en MATLAB tomando en cuenta todo lo tratado
con respecto a la funcin sinusoidal de la forma y=a+b.sen(cx+). Por ejemplo
y=2+3sen(3x+90) cuya grfica en MATLAB se muestra en la Figura 5.21, en el intervalo de
0 a 360.
>> x=linspace(0,360,100);
>> y=2+3*sind(3*x+90);
>> plot(x,y)
>> axis([0 370 -1.50 5.50]);
>> grid on
>> grid minor

Figura 5.21. Grfico de la funcin sinusoidal de la forma y= y=2+3sind(3x+90).


- Grfica de una funcin por partes.
Para hacer grficas de funciones por partes, se necesita utilizar las condiciones
adecuadamente, adems algo importante es que en este caso se tiene que hacer
necesariamente un programa, que se tiene que utilizar la sentencia if; en el siguiente ejemplo
se har un programa (para ello presionar crtl+N) para graficar la siguiente funcin siendo los
valore de x desde -2 hasta 10.

2
= { ()
7

< 0
0<1
1

El programa para hacer la grfica correspondiente sera la siguiente:

138

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

clc
clear x y
x=linspace(-2,10,100);
n=length(x);
for (i=1:n)
if (x(i)<0)
y(i)=x(i)^2;
elseif (x(i)<7)
y(i)=sin(x(i));
else
y(i)=x(i)-7;
end
end
plot(x,y);
axis([-3,11,-2,5]);
grid on
grid minor
Cuando se ejecuta el programa sale la grfica que se muestra en la Figura 5.22.

Figura 5.22. Grfico una funcin por partes .

CAPTULO V: GRFICOS EN MATLAB

139

b) Caractersticas especiales de la funcin plot.


En este punto es necesario desarrollar algunos aspectos sobre la funcin plot ya que MATLAB
permite realizar grficas con el comando plot; esta funcin utiliza diferentes caracteres para
mejorar la apariencia de una grfica tales como color de lnea, grosor de lnea, etc., en el
Cuadro 5.1 se muestra los caracteres especiales que permite utilizar la funcin plot.
Cuadro 5.1. Caractersticas especiales de la funcin plot.
Tipo de lnea
Tipo de punto
Color
linestyle
Caracter
marker
Caracter
color
Caracter
Slido (defecto)
Crculo
o
Azul
b
Rayada
-Marca x
x
Verde
g
Punteada
:
Marca +
+
Rojo
r
Raya - punto
-.
Estrella
*
Cian (celeste)
c
Punto
.
Magenta
m
Cuadrado
s
Amarillo
y
Diamante
d
Negro
k
Tringulo izquierda
<
Tringulo derecha
>
Pentagrama
p
Hexagrama
h
Adicionalmente a estas sentencias y caracteres que tiene la funcin plot, tambin existe la
sentencia linewidth (ancho de lnea) cuyos valores pueden ser 0.5, 1, 1.5, 2, 2.5, .
Como ejemplo podramos graficar la funcin seno con lneas punteadas, con una marca x en
los puntos, de color rojo y con un ancho de lnea de 2.5, entonces el formato general de la
opcin plot sera:
>> x=[1,1,3,5,5,1];
>> y=[1,3,5,3,1,1];
>> plot(x,y,'linestyle','--','marker','x','color','r','linewidth',2.5)
>> axis([0,6,0,6])
>> grid on
Pero la funcin plot generara lo mismo si se usara de la siguiente manera:
>> plot(x,y,'--xr','linewidth',2.5) %la sentencia linewidth es obligatorio.
El grfico sera el que se muestra en la Figura 5.23. Aqu es necesario aclarar que las
sentencias linestyle, marker, color y linewidth es opcional, se puede usar indistintamente,
cada una de las opciones, por ejemplo podemos usarla funcin plot as:
>> plot(x,y,'-o') %color de lnea y ancho de lnea salen por defecto.
>> axis([0,6,0,6])
>> grid on

140

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

El grfico sera el que se muestra en la Figura 5.24.

Figura 5.23. Usos de la funcin plot(x,y,'linestyle','--','marker','x','color','r','linewidth',2.5).

Figura 5.24. Usos de la funcin plot(x,y,'-o').

CAPTULO V: GRFICOS EN MATLAB

141

c) Grfica de mltiples curvas con la funcin plot.


En MATLAB es posible graficar mltiples curvas en la misma ventana de edicin de la
siguiente manera:
>> x=linspace(0,2*pi,100);
>> y1=sin(x);
>> y2=sin(x-0.5);
>> y3=sin(x-1);
>> plot(x,y1,x,y2,x,y3);
>> axis([0,7,-1.2,1.2])
>> grid on
El resultado se muestra en la Figura 5.25, en el cual se distingue las curvas solo por los coleres.

Figura 5.25. Grfico de mltiples curvas.


Pero tambin es posible utilizar estilos, colores y grosor de lnea, tal como se muestra a
continuacin.
>> x=linspace(0,2*pi,100);
>> y1=sin(x);
>> y2=sin(x-0.5);
>> y3=sin(x-1);

142

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> plot(x,y1,x,y2,':r',x,y3,'--g','linewidth',1.5);
>> axis([0,7,-1.2,1.2])
>> grid on
>> grid minor
El resultado se muestra en la Figura 5.26, en el cual se distingue las curvas por el estilo de
lnea y color de lnea.

Figura 5.26. Grfico de mltiples curvas con caractersticas de cada curva.


Despus de haber graficado una o ms curvas, se puede aadir ms curvas en el mismo eje,
utilizando el comando hold on. A continuacin al grfico de la Figura 5.26 aadiremos dos
grficos que corresponden a la funcin coseno y valor absoluto, de la siguiente manera:
>> hold on
>> y4=cos(x);
>> plot(x,y4,'k');
>> y5=abs(x-2);
>> plot(x,y5,':k','linewidth',2)
El resultado se muestra en la Figura 5.27, en el cual se observa que se han incrementado dos
curvas de color negro.

CAPTULO V: GRFICOS EN MATLAB

143

Figura 5.27. Grfico de mltiples curvas utilizando la sentencia hold on.


Otras caractersticas importantes que tiene el MATLAB para hacer grficas son las sentencias
xlabel (permite poner nombre al eje X), ylabel (permite poner nombre al eje Y), title (permite
poner ttulo al grfico), text (permite poner texto en una posicin x,y) y legend (permite poner
leyenda al grfico).
Para poder explicar y observar el funcionamiento de las sentencias mencionadas graficaremos
el comportamiento de dos mviles A y B en un tiempo de 20 segundos que parten del reposo
y cuyas aceleraciones son de 3 m/s 2 y 5 m/s 2 respectivamente. Para ello utilizaremos la frmula
de cinemtica:

Vf=Vo+a.t
Entonces digitaremos lo siguiente:
>> t=0:20;
%tiempo de 0 a 20 segundos
>> vfA=0+3*t;
%Velocidad final del mvil A.
>> vfB=0+5*t;
%Velicidad final del mvil B.
>> plot(t,vfA,'-xr','linewidth',2)
>> hold on
>> plot(t,vfB,'-ok','linewidth',2)
>> grid on
>> title('Cinemtica - MRUV');

144

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> xlabel('Tiempo (s)');


>> ylabel('Velocidad final (m/s)');
>> legend('mvil A','mvil B','location','northwest'); %tambin puede usar north,
south, east, west,
northeast, southeast o
southwest.
>> text(16,24,'Leyenda');
El resultado de las sentencias anteriores se muestra en la Figura 5.28.

Figura 5.28. Grfico utilizando todas las caractersticas de los grficos en MATLAB.
d) Grfica en mltiples ventanas (subgrficas).
MATLAB permite graficar mltiples curvas en diferentes ventanas, pero en una sola pantalla,
utilizando el comando subplot(m,n,k) que permite subdividir la ventana de graficacin en m
filas y n columnas; el parmetro k identifica el nmero de ventana donde se graficar la
curva. Por ejemplo:
>> x1=linspace(0,2*pi,100);
>> y1=sin(x);
>> y2=cos(x);
>> x2=linspace(-5,5,100);
>> y3=x2.^2-4;
>> y4=x2.^3-4*x2-10;
>> y5=-x2.^2+1;

CAPTULO V: GRFICOS EN MATLAB

145

>> y6=abs(x2);
>> subplot(3,2,1),plot(x1,y1),title('Funcin seno'),grid on
>> subplot(3,2,2),plot(x1,y2),title('Funcin coseno'),grid minor
>> subplot(3,2,3),plot(x2,y3),title('Funcin parbola'),grid minor
>> subplot(3,2,4),plot(x2,y4),title('Funcin cbica'),grid minor
>> subplot(3,2,5),plot(x2,y5,'-.r'),title('Funcin parbola')
>> subplot(3,2,6),plot(x2,y6),title('Funcin valor absoluto')
El resultado se muestra en la Figura 5.29 donde se observan 6 grficos ya que con la sentencia
subplot se ha indicado de 3x2 figuras.

Figura 5.29. Grfica en mltiples ventanas en MATLAB.


e) Curvas en polares.
Un concepto importante para dibujar curvas polares es conocer el plano polar que est divido
de 0 a 2 rad o 360 (ver Figura 5.30) y se puede graficar crculos concntricos desde 0 hasta
el infinito (en la Figura 5.30 solo se muestra hasta 8).
La grfica de una curva en coordenadas polares es de la forma r=f() donde [ ]. Un punto
de la curva en polares (r, es la distancia r del origen de coordenadas con un ngulo de
con respecto al eje polar, por ejemplo en la Figura 5.31 se representa el punto P(4,70) en el
plano polar.

146

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 5.30. Representacin del plano polar.

Figura 5.31. Representacin del punto P(4,70) en el plano polar.


Para graficar el punto P(r,theta) en MATLAB se usa la funcin polar(theta,r) donde el primer
parmetro theta debe estar expresado en radianes y el segundo parmetro r es la distancia
del origen, para ello se debe crear dos vectores con el mismo nmero de elementos, por
ejemplo si quisiramos graficar los puntos (2.5,30), (6,45) y (4,70) se hara de la siguiente
manera la siguiente manera:
>> theta=[30*pi/180,45*pi/180,70*pi/180]; %se convierte grados a radianes.
>> r=[2.5,6,4];
>> polar(theta,r)
El resultado se muestra en la Figura 5.32.

CAPTULO V: GRFICOS EN MATLAB

147

Figura 5.32. Representacin de los puntos (2.5,30), (6,45) y (4,70) en el plano polar.
En forma similar a la sentencia plot, la sentencia polar tambin tiene las mismas
caractersticas especiales que se muestran en el Cuadro 5.1. Para aplicar estas
caractersticas, graficaremos la funcin polar r=e0.25t con color rojo con lneas punteadas y
con una marca x.
>> t=linspace(0,2*pi,100);
>> r=exp(0.25*t);
>> polar(t,r,'--r')
%con lneas punteadas y lnea de color rojo.
El resultado de estas caractersticas especiales se muestra en la Figura 5.33.
Otro ejemplo sera para determinar la curva de la funcin r=sen(0.8t) cuyas sentencias seran:
>> t=linspace(0,10*pi,1000);
>> r=sin(0.8*t);
>> polar(t,r,'-b'); %grafica con lneas continuas de color azul.
El resultado de estas caractersticas especiales se muestra en la Figura 5.34.

148

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 5.33. Utilizacin de las caractersticas especiales de la funcin polar.

Figura 5.34. Utilizacin de las caractersticas especiales de la funcin polar.

CAPTULO V: GRFICOS EN MATLAB

149

f) Funciones logartmicas.
Normalmente cuando se grafican funciones, los ejes x e y se dividen en intervalos igualmente
espaciados, sin embargo muchas veces en aplicaciones de ingeniera, se utiliza escalas
logartmicas en uno o en ambos ejes, estos ejes fundamentalmente se utilizan para representar
datos que varan exponencialmente; para ello MATLAB dispone de las funciones:
semilogx(x,y). Genera una grfica de valores x e y, con una escala logartmica para x y una
escala lineal para y.
semilogy(x,y). Genera una grfica de valores x e y, con una escala logartmica para y y una
escala lineal para x.
loglog(x,y).
Genera una grfica de valores x e y, con una escala logartmica para x e y.
Para ver la diferencia entre cada una de las funciones mencionadas graficaremos la funcin
y=3.5x2 con 100 puntos para x desde 0 hasta 50.
>> x=linspace(0,50,100);
>> y=3.5*x.^2;
>> subplot(2,2,1);plot(x,y);grid minor;title('funcin plot');
>> subplot(2,2,2);semilogx(x,y);grid minor;title('funcin semilogx');
>> subplot(2,2,3);semilogy(x,y);grid minor;title('funcin semilogy');
>> subplot(2,2,4);loglog(x,y);grid minor;title('funcin loglog');
El resultado del uso de las funciones logartmicas se muestra en la Figura 5.35.

Figura 5.35. Utilizacin de las funciones logartmicas en MATLAB.

150

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

g) Funciones de grficos especiales.


En MATLAB existen muchas funciones especiales que grafican en el plano, ahora tocaremos
algunos de ellos.
La funcin compass(x,y) sirve para graficar un conjunto de vectores con origen en (0,0) y cuya
magnitud y direccin corresponden a un nmero imaginario de la forma z=x+yi. Por ejemplo
para graficar los vectores A, B y C que se muestran en la Figura 5.36 utilizaremos la funcin
compass(x,y).

Figura 5.36. Vectores en el plano cartesiano.


Para graficar los vectores que se muestra en la Figura 5.36 en MATLAB se procede de la
siguiente manera:
>> x=[-5,6,4.5]; %Parte real de los vectores A, B y C
>> y=[3,5,-3.5]; %Parte imaginaria de los vectores A, B y C
>> compass(x,y);
El resultado se muestra en la Figura 5.37.

151

CAPTULO V: GRFICOS EN MATLAB

Figura 5.37. Uso de la funcin compass.


La funcin fill(x,y,c) grafica una funcin y rellena la grfica con un color que se indica con el
parmetro c (los colores son los mismos de la funcin plot ver Cuadro 5.1). Por ejemplo para
graficar la funcin y=sen(x) utilizaremos la funcin fill(x,y,c).
>> x=linspace(0,2*pi,100);
>> y=sin(x);
>> subplot(2,1,1);
>> plot(x,y,'r');
>> grid on
>> grid minor
>> subplot(2,1,2);
>> fill(x,y,'r');
%rellena con color rojo.
>> grid on
>> grid minor
El resultado se muestra en la Figura 5.38. Aqu es necesario explicar que el parmetro c de la
funcin fill tambin puede tener combinaciones de colores de la siguiente manera:
>> fill(x,y,[0
>> fill(x,y,[1
>> fill(x,y,[0
>> fill(x,y,[0

0 0]);
0 0]);
1 0]);
0 1]);

%rellena
%rellena
%rellena
%rellena

con color negro.


con color rojo.
con color verde.
con color azul.

152

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> fill(x,y,[1 1 1]);

%rellena con color blanco.

Entonces variando los tres nmeros desde 0 hasta 1 se puede combinar los colores rojo, verde
y azul para obtener nuevos colores, por ejemplo:
>> fill(x,y,[0.9 0.9 0.9];

%rellenara con color plomo bajo.

Figura 5.38. Comparacin de las sentencias plot y fill.


5.2 GRFICAS TRIDIMENSIONAL - 3D.
MATLAB tiene una gran variedad de funciones para hacer grficas tridimensionales, algunas de
las cuales desarrollaremos a continuacin, se recomienda al lector que pueda explorar con ms
profundidad las numerosas posibilidades de representacin grfica que ofrece MATLAB.
a) Curvas en el espacio.
Las curvas en el espacio se generan de forma similar a las curvas en el plano, por ejemplo
existe la funcin plot3(x,y,z) que sirve para hacer lneas en 3D, por ejemplo graficaremos la
recta que une los puntos (2;0;0) y (4;3;5) que se muestra en la Figura 5.39.

CAPTULO V: GRFICOS EN MATLAB

153

Figura 5.39. Puntos de una lnea en 3D.


Para graficar la lnea que se muestra en la Figura 5.39 en MATLAB se procede de la siguiente
manera:
>> x=[2,4];
>> y=[0,3];
>> z=[0,5];
>> plot3(x,y,z)
>> grid on
>> xlabel('Eje x')
>> ylabel('Eje y')
>> zlabel('Eje z')
El resultado se muestra en la Figura 5.40.

Figura 5.40. Grfico de una lnea en 3D con la funcin plot3.

154

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Otro ejemplo es para graficar un resorte, para ello se utiliza las siguientes sentencias:
>> x=linspace(0,10*pi,2000);
>> y=sin(x);
>> z=cos(x);
>> plot3(x,y,z);
>> grid on
>> grid minor
>> xlabel('Eje x')
>> ylabel('Funcin sen(x)')
>> zlabel('Funcin cos(x)')
El resultado se muestra en la Figura 5.41.

Figura 5.41. Grfico de un resorte en 3D con la funcin plot3.


Similar al plot en 2D, tambin en plot3 se puede utilizar las mismas caractersticas especiales
como son tipo de lnea (linestyle), tipo de punto (marker), color de lnea (color) tal como se

155

CAPTULO V: GRFICOS EN MATLAB

muestra en el Cuadro 5.1, adicionalmente se puede utilizar la sentencia linewidth para el


ancho de la lnea. En el siguiente ejemplo se puede observar dichas caractersticas.
>> x=linspace(0,10*pi,2000);
>> y=sin(x);
>> z=cos(x);
>> plot3(x,y,z,'-r','linewidth',4)

%Dibuja un espiral con lneas continuas de color


rojo con un ancho de 4.

>> grid on
>> grid minor
El resultado se muestra en la Figura 5.42.

Figura 5.42. Uso de la funcin plot3 con sus caractersticas especiales.


b) Grficas de funciones de la forma z = f(x;y).
Para graficar funciones de la forma z=f(x;y), al igual que para funciones de una variable (se
debe generar un vector para x), para dos variables debemos generar dos matrices, uno para

156

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

x y otro para y, y con dichas matrices se genera un mallado sobre un rectngulo del plano XY
con la funcin meshgrid. Por ejemplo para graficar la siguiente funcin:
2
2
= ( + ) En la regin del plano D={(x,y)/ -2 x 2, -2 y 2)
Se debe realizar los siguientes pasos.
>> [x,y]=meshgrid(-2:0.5:2);
Con la funcin meshgrid internamente se han generado dos matrices x e y cuyos valores se
muestran a continuacin.

Luego para cada valor de las matrices x e y se calculan los valores de z.


>> z=exp(-(x.^2+y.^2));

CAPTULO V: GRFICOS EN MATLAB

157

Ahora como ya tenemos los valores de x, y y z; utilizaremos las funciones plot3, mesh y surf
en una misma grfica utilizando la funcin subplot, tal como se muestra a continuacin.
>> subplot(2,2,1);plot3(x,y,z);grid minor
>> subplot(2,2,2);mesh(x,y,z);grid minor
>> subplot(2,2,3);surf(x,y,z);grid minor
>> subplot(2,2,4);surf(x,y,z),shading flat;grid minor
El resultado se muestra en la Figura 5.43.

Figura 5.43. Uso de las funciones plot3, mesh y surf.


En la Figura 5.43 se observa los grficos pero no tan acabados, debido a que se considerado
solo matrices de 9x9 (-2:0.5:2), entonces si queremos hacer grficos con acabados ms finos
se deben hacer mallas con ms puntos como a continuacin desarrollaremos con matrices de
50x50.
>> [x,y]=meshgrid(linspace(-2,2,50));
>> z=exp(-(x.^2+y.^2));

158

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

>> mesh(x,y,z);
>> grid minor
>> xlabel('Eje x');
>> ylabel('Eje y');
>> zlabel('Eje z');
El resultado se muestra en la Figura 5.44.

Figura 5.44. Uso de la funcin mesh con un mejor acabado.


Ahora aplicaremos para la funcin surf, cuyas sentencias seran:
>> [x,y]=meshgrid(linspace(-2,2,50));
>> z=exp(-(x.^2+y.^2));
>> surf(x,y,z);
>> xlabel('Eje x');
>> ylabel('Eje y');
>> zlabel('Eje z');
>> grid minor

CAPTULO V: GRFICOS EN MATLAB

159

El resultado se muestra en la Figura 5.45.

Figura 5.45. Uso de la funcin surf con un mejor acabado.


Ahora aplicaremos para la funcin surf con sombra (shading flat) que le da mejor acabado,
cuyas sentencias seran:
>> [x,y]=meshgrid(linspace(-2,2,50));
>> z=exp(-(x.^2+y.^2));
>> surf(x,y,z),shading flat;
>> grid minor
>> xlabel('Eje x');
>> ylabel('Eje y');
>> zlabel('Eje z');
El resultado se muestra en la Figura 5.46.

160

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 5.46. Uso de la funcin surf con shading flat con un mejor acabado.
Una funcin importante es la funcin contour y contour3 que sirve para hacer curvas de nivel.
A continuacin desarrollaremos una aplicacin de cada uno.
>> [x,y]=meshgrid(linspace(-2,2,50));
>> z=exp(-(x.^2+y.^2));
>> contour(x,y,z,25); %Genera 25 curvas de nivel en el plano xy.
>> axis equal
Y para la funcin contour3 sera:
>> [x,y]=meshgrid(linspace(-2,2,50));
>> z=exp(-(x.^2+y.^2));
>> contour3(x,y,z,25);
Los resultados de las funciones contour y contour3, se muestran en las Figuras 5.47 y 5.48
respectivamente.

CAPTULO V: GRFICOS EN MATLAB

Figura 5.47. Uso de la funcin contour con 25 curvas de nivel.

Figura 5.48. Uso de la funcin contour3 con 25 curvas de nivel.

161

162

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

c) Algunas superficies conocidas en el espacio.


Un grfico importante es el grfico de una esfera, para ello MATLAB tiene la funcin sphere(n),
donde n es el nmero de puntos en los que queda dividido el ecuador de la esfera, este valor
por defecto es 20; para graficar una esfera se procede de la siguiente manera:
>> sphere;
>> axis equal;
>> grid minor;
El resultado se muestra en la Figura 5.49.

Figura 5.49. Uso de la funcin sphere con n=20 (por defecto).


Si probamos con n=10 se obtiene lo siguiente:
>> sphere(10);
>> axis equal;
>> grid minor;

CAPTULO V: GRFICOS EN MATLAB

163

El resultado se muestra en la Figura 5.50.

Figura 5.50. Uso de la funcin sphere con n=10.


Otro grfico importante es el grfico de un cilindro, para ello MATLAB tiene la funcin
cylinder(r,n), donde r es el radio del cilindro y n es el nmero caras del cilindro, este valor por
defecto es 20 y la altura del cilindro siempre ser 1; para graficar un cilindro se procede de la
siguiente manera:
>> cylinder;
>> axis equal;
>> grid minor;
El resultado se muestra en la Figura 5.51.

164

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Figura 5.51. Uso de la funcin cylinder con r=1 y n=20 (por defecto).
Si probamos con r=5 y n=10 se obtiene lo siguiente:
>> cylinder(5,10);
>> grid minor;
El resultado se muestra en la Figura 5.52.

Figura 5.52. Uso de la funcin cylinder con r=5 y n=10.

CAPTULO V: GRFICOS EN MATLAB

165

5.4 GRFICAS EN MOVIMEINTO (MOVIES).


Una caracterstica importante que tiene el MATLAB es generar grficas en movimiento, esto lo
hace fotograma a fotograma (frames) dando la sensacin de movimiento, para ello MATLAB
dispone de las funciones moviein, getframe y movie;
La funcin moviein(n) reserva memoria para almacenar n fotogramas (frames); la funcin
getframe no tiene parmetros y devuelve una matriz columna con la informacin necesaria para
reproducir la imagen de la ventana grfica activa y la funcin movie(M,n,fps) donde M es la
cantidad de memoria reservada con la funcin moviein, que reproduce la pelcula n veces y fps
(frames per second) representa la velocidad de fotogramas por segundo (por defecto es de 12).
Para comprender mejor la generacin de movimientos en MATLAB desarrollaremos una funcin
llamada movimiento (recuerde abrir el editor de programas ctrl+N), ver Figura 5.53.
function []=movimiento(n)
% n espacio de memoria-recomendable n>20
M=moviein(n);
x=linspace(0,2*pi,1000);
for (i=1:n)
y=i*sin(x*i/3);
plot(x,y);
axis([0,7,-n,n]);
M(:,i)=getframe;
end
movie(M,2,5);
end

Figura 5.53. Resultado final despus de ejecutar la funcin movimiento.

166

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

APLICACIONES DEL CAPTULO V.


5.1. Elaborar un programa para graficar una recta cuyas coordenadas (x1;y1) y (x2;y2) se deben
ingresar desde el teclado (no olvide que para hacer un programa tiene que abrir el editor de
programas presione ctrl+N).
El programa sera.
clc;
x1=input('Ingrese x1: ');
y1=input('Ingrese y1: ');
x2=input('Ingrese x2: ');
y2=input('Ingrese y2: ');
x=[x1,x2];
y=[y1,y2];
plot(x,y);
axis([min(x)-1,max(x)+1,min(y)-1,max(y)+1]);
grid on;
grid minor;
Cuando se ejecuta el programa para graficar una recta desde (2;5) a (10;-2), el resultado es el
siguiente.
Ingrese
Ingrese
Ingrese
Ingrese

x1: 2
y1: 5
x2: 10
y2: -2

5.2. Disear una funcin para graficar una recta cuyas coordenadas (x1;y1) y (x2;y2) se deben
ingresar como parmetros de la funcin.
La funcin sera.
function []=recta(x1,y1,x2,y2)
x=[x1,x2];
y=[y1,y2];
plot(x,y);
end

CAPTULO V: GRFICOS EN MATLAB

167

Cuando se ejecuta la funcin para graficar una recta desde (2;5) a (10;-2), sera:
>> recta(2,5,10,-2)

Nota. A diferencia de un programa, en una funcin normalmente no se debe utilizar sentencias


axis, grid, text, etc.; si esas sentencias son necesarias se debe hacer desde le prompt (>>) tal
como se muestra a continuacin.
>> recta(2,5,10,-2) %ejecucin de la funcin.
>> grid on;
>> grid minor;
>> axis([1,11,-3,6]);
>> text(2.5,5,'(2;5)');
>> text(10,-2,'(10;-2)');
>> title('Grfico de una recta');

168

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

5.3. Elaborar un programa para graficar una parbola con vrtice en el punto (h;k) y el foco est
ubicado a una distancia p del vrtice (ver siguiente figura); los valores de h, k y p se deben
ingresar desde el teclado.

El programa sera.
clc;
clear x y;
h=input('Ingrese la abscisa del vrtice (h): ');
k=input('Ingrese la ordenada del vrtice (k): ');
p=input('Ingrese distancia del vrtice al foco (p): ');
x=linspace(h-5,h+5,100);
y=(x-h).^2/(4*p)+k;
%se despeja y de la forma general
plot(x,y);
grid on;
grid minor;
axis([min(x)-1,max(x)+1,min(y)-1,max(y)+1]);
Cuando se ejecuta el programa para graficar una parbola con vrtice en el punto (3;-1) y el foco
ubicado a una distancia 3 del vrtice, el resultado sera:
Ingrese la abscisa del vrtice (h): 3
Ingrese la ordenada del vrtice (k): -1
Ingrese distancia del vrtice al foco (p): 3

CAPTULO V: GRFICOS EN MATLAB

169

5.4. Disear una funcin para graficar una parbola del ejemplo anterior con vrtice en el punto (h;k)
y el foco est ubicado a una distancia p del vrtice; los datos h, k y p deben ser .
La funcin sera.
function []=parabola(h,k,p)
x=linspace(h-5,h+5,100);
y=(x-h).^2/(4*p)+k;
plot(x,y);
end
Cuando se ejecuta la funcin parbola con vrtice(3;-1) y foco igual a 3, sera:
>> parabola(3,-1,3)

170

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

5.5. Elaborar un programa para graficar una circunferencia de color rojo con centro en el origen de
coordenadas, cuyo radio se debe ingresar desde el teclado.
El programa sera.
clc;
radio=input('Ingrese radio: ');
x=linspace(-radio,radio,100);
y=sqrt(radio.^2-x.^2);
plot(x,y,x,-y,'color','r')
axis equal;
axis([-radio-1,radio+1,-radio-1,radio+1]);
grid on;
grid minor;
Cuando se ejecuta el programa con radio=10, el resultado es el siguiente.
Ingrese radio: 10

Otra forma de programar una circunferencia sera el siguiente:


clc;
radio=input('Ingrese radio: ');
t=linspace(0,2*pi,100);
x=radio*cos(t);
y=radio*sin(t);
plot(x,y,'-r')
axis equal

CAPTULO V: GRFICOS EN MATLAB

171

axis([-radio-1,radio+1,-radio-1,radio+1]);
grid on
grid minor
5.6. Disear una funcin para graficar una circunferencia del ejemplo anterior con centro en el punto
(0;0) cuyo radio y color se debe ingresar como parmetros de la funcin. (Nota: el color se debe
ingresar con los mismos caracteres de la funcin plot que se muestra en el Cuadro 5.1).
La funcin sera.
function []=circunferencia(radio,color)
t=linspace(0,2*pi,100);
x=radio*cos(t);
y=radio*sin(t);
plot(x,y,color);
axis equal;
end

5.7. Disear una funcin para graficar una circunferencia del ejemplo anterior pero con centro en el
punto (xc;yc) cuyos valores de xc, yc, radio y color se debe ingresar como parmetros de la
funcin. (Nota: el color se debe ingresar con los mismos carac teres de la funcin plot que se
muestra en el Cuadro 5.1).
La funcin sera.
function []=circunferenciaxy(xc,yc,radio,color)
t=linspace(0,2*pi,100);
x=xc+radio*cos(t);
y=yc+radio*sin(t);
plot(x,y,color);
end

172

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

Cuando se ejecuta la funcin con centro en (3;1), radio=10 y color rojo, sera:
>> circunferenciaxy(3,1,10,'r')
>> axis equal
>> grid on
>> grid minor

5.8. Disear una funcin para graficar un crculo con centro en el punto (xc;yc) cuyos valores de xc,
yc, radio y color se debe ingresar como parmetros de la funcin. (Nota: un crculo es una
circunferencia rellenada y se usa la funcin fill).
La funcin sera.
function []=circuloxy(xc,yc,radio,color)
t=linspace(0,2*pi,100);
x=xc+radio*cos(t);
y=yc+radio*sin(t);
fill(x,y,color);
end
Cuando se ejecuta la funcin con centro en (3;1), radio=10 y color rojo, sera:
>> circuloxy(3,1,10,'r')
>> axis equal
>> grid on
>> grid minor

CAPTULO V: GRFICOS EN MATLAB

173

5.9. Disear una funcin para graficar una elipse con relleno con centro en el punto (xc;yc) cuyos
valores de xc, yc, radio horizontal y radio vertical y color se debe ingresar como parmetros de la
funcin.
La funcin sera.
function []=elipsexy(xc,yc,radiox,radioy,color)
t=linspace(0,2*pi,100);
x=xc+radiox*cos(t);
y=yc+radioy*sin(t);
fill(x,y,color);
axis equal;
end
Cuando se ejecuta la funcin con centro en (3;3), radiox=10, radioy=5 y color amarillo, sera:
>> elipsexy(3,3,10,5,'y');
>> grid on;
>> grid minor;

174

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

5.10. Disear una funcin para graficar n hojas en un plano polar.


La funcin sera.
function []=hojas(n)
t=linspace(0,2*pi,1000);
r=sqrt(cos(n*t));
polar(t,r);
end
Cuando se ejecuta la funcin con 4 hojas sera:

Cuando se ejecuta la funcin con 8 hojas sera:

5.11. Disear una funcin para graficar una rosa con n ptalos en un plano polar.
La funcin sera.

CAPTULO V: GRFICOS EN MATLAB

function []=rosa(n)
t=linspace(0,2*pi,1000);
r=2+cos(n*t);
polar(t,r);
end
Cuando se ejecuta la funcin con 5 ptalos sera:

5.12. Disear una funcin para simular la grfica de cerros con n cerros.
La funcin sera.
function []=cerros(n)
t=linspace(-n,n,100);
[x,y]=meshgrid(t);
z=n.*sin(x).*sin(y);
surf(x,y,z);
xlabel('Eje x');
ylabel('Eje y');
zlabel('Eje z');
grid minor
end
Cuando se ejecuta la funcin con 4 cerros sera:

175

176

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

5.13. Disear una funcin para graficar un paraboloide con radio en la base (rmenor) y radio en la
salida (rmayor) dichos valores se deben ingresar como parmetros de la funcin.
La funcin sera.
function []=paraboloide(rmenor,rmayor)
t=linspace(rmenor,rmayor,20);
r=sqrt(t);
cylinder(r);
end
Cuando se ejecuta la funcin con radio menor=0 y radio mayor=5 sera:
>> paraboloide(0,5);

Cuando se ejecuta la funcin con radio menor igual=1 y radio mayor=10 sera:
>> paraboloide(1,10);

CAPTULO V: GRFICOS EN MATLAB

177

5.14. Disear una funcin que devuelva el tiempo y la altura del cual se debe lanzar un objeto, adems
la funcin debe graficar el movimiento de una partcula que se lanza con una velocidad inicial
(vo), el ngulo (ang) y a una distancia (dx) cuyos datos deben ser los parmetros de la funcin.
La funcin sera.
function [tiempo,h]=lanzamientoproyectil(vo,ang,xd)
g=9.81;
%gravedad
tiempo=xd/(vo*cosd(ang));
t=linspace(0,tiempo,100);
x=vo*cosd(ang)*t;
y=vo*sind(ang)*t-g*t.^2/2;
h=y(end);
for (i=1:100)
plot(x,y,x(i),y(i),'or');
pause(0.025);
end
end
Cuando se ejecuta la funcin con vo=25 m/s, ang=75 y xd=30 m sera:
>> [t,h]=lanzamientoproyectil(25,75,30)
t=
4.6364
h=
6.5206
Y el grfico se muestra en la siguiente figura.

178

FIEE UNCP

Rubn Galeas Juan Arellano Hernn Juan de Dios

BIBLIOGRAFA

179

BIBLIOGRAFA.
1. Schilling, R. y Harris, S. (2012). Fundamentals of digital signal processing using MATLAB. USA.
Editorial RPK.
2. Moore, H. (2007). MATLAB para ingenieros. Mxico. Editorial Pearson.
3. Arboleda, D. y lvarez, R. (2006). Matlab, aplicaciones a las matemticas bsicas. Medelln.
Editorial Universidad de Medelln-Colombia.
4. Escalante, R. (2006). Curso introductorio de MATLAB. Venezuela. Editorial Equinoccio.
5. Gilat, A. (2005). Matlab, una introduccin con ejemplos prcticos. Barcelona. Editorial Revert S.A.
6. Hunt, B. y Lipsman, R. y Rosenberg, J. (2002). A Guide to MATLAB for beginners and experienced
users. USA. Editorial Cambridge.
7. Quintela, P. (2000). Matemticas en Ingeniera con MATLAB. USA. Editorial de la Universidad de
Santiago de Compostela.
PGINAS WEB.
http://www.sc.ehu.es/sbweb/energias-renovables/MATLAB/basico/portada/portada.html
http://arantxa.ii.uam.es/~iama/graficos.pdf
file:///C:/Users/Admin/Downloads/tema_2_graficos_en_matlab-5150.pdf
http://www.fic.umich.mx/~lcastro/4%20graficas.pdf
http://minisconmatlab.blogspot.pe/2010/10/como-dibujar-circulos-y-poligonos.html

Potrebbero piacerti anche