Sei sulla pagina 1di 95

Matlab

Cristian Amador Loli Prudencio


cristian.loli@upnorte.edu.pe cristianhz@hotmail.com

CONTENIDO
CAP 1. ENTORNO DE MATLAB
CAP 2. MANEJO DE ARREGLOS
CAP 3. LGEBRA MATRICIAL
CAP 4. POLINOMIOS. RACES DE FUNCIONES
CAP 5. GRFICOS BIDIMENSIONALES (2-D)
CAP 6. GRFICOS TRIDIMENSIONALES (3-D)
CAP 7. PROGRAMACIN EN MATLAB

1
Matlab

CAP 1. ENTORNO DE MATLAB

1. ENTRAR EN MATLAB
Si aparece el icono de MATLAB como acceso directo en la pantalla inicial (escritorio)

es suficiente pulsar DOBLE CLICK sobre el ratn. En otro caso, ser necesario buscarlo
a partir del men de inicio.

Una vez iniciado MATLAB, nos encontramos con la pantalla de la figura, donde se
observan los diferentes mens y ventanas. El trabajo inicial se realiza en la ventana de
comandos Command Window.

2. AMBIENTE MATLAB
EL REA DE TRABAJO de MatLab esta bsicamente constituida por:

[Command Window]: Ventana de Comandos


rea en la cual son digitadas las instrucciones para el MatLab y exhibidos sus
resultados.
Indicador del sistema o prompt >> indica estado de espera de entrada de datos.
Las teclas y repiten los comandos digitados anteriormente.
[Workspace]: Espacio de trabajo

2
Matlab

rea de memoria de trabajo del Matlab, en la cual se hallan almacenadas todas las
variables definidas interactivamente.
Las variables se visualizan en esta ventana y si desea visualizar su contenido basta
pulsar doble click sobre la variable deseada.

[Current Directory]: Directorio actual


rea en la cual es exhibida la lista de los archivos y directorios contenidos en el
directorio actual.

[Command History]: Historia de Comandos


rea en la cual se hallan almacenadas todas las instrucciones ejecutadas en el
MatLab.

EL ESCRITORIO del Matlab tambin contiene:

LA BARRA DEL MEN PRINCIPAL

Esta barra interacta segn se encuentre en una ventana o en otra, por ejemplo si
actualmente esta en la ventana [Workspace], la barra del men principal se vera as

LA BARRA DE HERRAMIENTAS

Esta barra contiene

o [New M-file] Crea nuevo M-file.


o [Open] Abre archivo.
o [Cut] Recorta datos.
o [Copy] Copia datos.
o [Paste] Pega datos.
o [Undo] Deshace operacin.
o [Redo] Rehace operacin.
o [Simulink] Abre modelo de simulacin.
o [Guide] Abre editor de interfaz grfica.
o [Help] Abre el navegador de ayuda.

3
Matlab

4
Matlab

o Browse de Current Directory

EL BOTON DE INICIO DEL MATLAB


El botn Inicio del Matlab provee facil acceso a las herramientas, demos y
documentacin para todos los productos de MathWorks. Usando el atajo Alt+S puedes
tambin acceder al botn de Inicio.

5
Matlab

3. MENS POP-UP EN EL MATLAB


Men [File]: Manipulacin de archivos. Men [Edit]: Edicin.

Men [Debug]: Depuracin

Men [View]: Configuracin de la visualizacin


Configura la visualizacin de las ventanas de [Workspace] y [Current Directory]
Si actualmente est en [Workspace] Si actualmente est en [Current Directory]
el men [View] se vera as: el men [View] se vera as:

6
Matlab

Men [Desktop]: Configuracin del escritorio

Para volver al escritorio por defecto se debe pulsar la opcin


[Desktop] [Desktop Layout] [Default]

Men [Window]: Ventanas. Men [Help]: Ayuda.

7
Matlab

EJERCICIOS DESARROLLADOS

ENTORNO DE MATLAB
1. Listar los archivos del directorio actual.
>> dir
. fb555.m jose.zip
.. fbef.asv mefloli.asv
L1.M fbef.m mefloli.m
L2.M fbef22222.asv meflolimejor.m
LOLI fbef22222.m metnum
LOLI.asv fbefmejor.m metnum2
MATLAB fbf.m monografias3.doc
Ondaseno.mdl integ2.m sbef111.m
algo.m integ3.m timestwo.asv
e.m integ4.m timestwo.m
fb.m integc2.m vsfunc.m
fb333.m integc3.m
fb444.m integc4.m

2. Listar el path actual.


>> cd
C:\MATLAB7\work

3. Listar los directorios de bsqueda.


>> path
MATLABPATH
C:\MATLAB7\toolbox\matlab\general
C:\MATLAB7\toolbox\matlab\ops
C:\MATLAB7\toolbox\matlab\lang
C:\MATLAB7\toolbox\matlab\elmat
C:\MATLAB7\toolbox\matlab\elfun
C:\MATLAB7\toolbox\matlab\specfun
C:\MATLAB7\toolbox\matlab\matfun

4. Crear en la carpeta C:\MATLAB7 la subcarpeta GATO.


Como estamos por defecto en C:\MATLAB7\WORK, retrocedemos un nivel, con:
>> cd ..
Ahora estamos en C:\MATLAB7, y creamos la subcarpeta GATO
>> mkdir gato

5. Cambiar el path de trabajo a GATO.


>> cd c:\matlab7\gato

6. Copiar los archivos de extensin txt de C:\MATLAB7 a la carpeta GATO.


>> copyfile('C:\Matlab7\*.txt')

8
Matlab

>> dir
. .. license.txt
7. Copiar el archivo license.txt asignando el nombre borrar.txt
>> copyfile('license.txt', 'borrar.txt')

8. Borrar todos los archivos que comiencen con b y tengan extensin txt.
>> delete b*.txt

EJERCICIOS PROPUESTOS

1. Qu muestra la ventana ?.

2. Listar (sin cambiar de path) el directorio raz de la unidad C.

3. Crear en la carpeta C:\, la subcarpeta COLOR.

4. Cambiar el path de trabajo a COLOR.

5. Copiar todos los archivos de C:\MATLAB7\TOOLBOX\MATLAB\ELFUN\JA, a la


carpeta COLOR.

6. Duplicar los archivos de la carpeta COLOR que comiencen con m y tengan extensin
m asignando a los duplicados la letra inicial p y la extensin p.

7. Borrar todos los archivos que comiencen con m y tengan extensin m.

9
Matlab

CAP 2. MANEJO DE ARREGLOS

1. TIPOS DE DATOS EN MATLAB


MATLAB trabaja habitualmente con valores matriciales, de ah que su definicin y
manejo sean fundamentales. En MATLAB existen una serie de tipos de datos los cuales
estn basados en la estructura de matrices.

DATOS NMERICOS

COMPLEJOS DE DOBLE PRECISIN


El ms comn tipo de datos en MATLAB es los complejos de doble precisin, los cuales
contienen la parte real y la parte imaginaria. Su uso es completamente natural en en
Matlab. En estos datos la unidad imaginaria es manejada como i o j, la que es
transformada por el Matlab a la notacin i.

EJEMPLO
Digitar en la ventana de comandos:
>> u=2+3i >> v=2-3j
u= v=
2.0000 + 3.0000i 2.0000 - 3.0000i

OTROS TIPOS DE DATOS NUMRICOS


MATLAB tambin soporta otros tipos numricos de datos. Estos son: DATOS DE
SIMPLE PRECISIN DE PUNTO FLOTANTE, ENTEROS DE 8-, 16- y 32- BIT con
SIGNO o SIN SIGNO, estos tipos de datos tambin son manejados como nmeros
complejos.

DATOS LGICOS
Los datos tipo lgico representado por Verdadero y Falso son manejados con los
nmeros 1 y 0 respectivamente.

EJEMPLO
Digitar en la ventana de comandos:
>> 7 * 10 > 40 >> P = (5 * 7 ~= 35)
ans = P=
1 0

DATOS TIPO CARCTER Y CADENAS


Las cadenas son arreglos de datos tipo carcter. A diferencia del C, Matlab no necesita el
carcter nulo para terminar una cadena.

EJEMPLO

10
Matlab

Digitar en la ventana de comandos:


>> mg='El minino es de color blanco' >> m='Debes estudiar matemtica'
mg = m=
El minino es de color blanco Debes estudiar matemtica

NOTA
Matlab no requiere ningn tipo de comando para declarar variables. Sencillamente crea
la variable mediante asignacin directa de su valor. As si asigna a la variable un nmero
ser variable numrica, si le asigna una cadena ser variable alfanumrica.

DATOS TIPO FECHAS Y DE TIEMPO


Datos tipo cadena y numricos reconocidos con formatos de fechas y horas de acuerdo a
los formatos establecidos.

DATOS TIPO ESTRUCTURAS


Parecidos a los de C, contiene los nombres de los campos que son de nombre dinmico.

DATOS TIPO ARREGLO DE CELLS


Contiene diferente tipo de datos y controles permite conversin automtica.

DATOS TIPO FUNCIONES HANDLES


Permite acceso a datos y funciones complementa el trabajo de programacin arientada a
objetos con gran facilidad.

DATOS TIPO MATLAB CLASES


Permite la creacin de tu propio tipo de datos proveyndoles clases y trabajo orientado a
objetos.

DATOS TIPO JAVA CLASES


Datos tipo Java classes que permite la interfaz de programacin Java y que es aceptado
por Matlab.

2. VECTORES Y MATRICES EN MATLAB


Los vectores se pueden introducir separando sus componentes por espacios en blanco o
por comas. Para definir una matriz en MATLAB, basta con introducir entre corchetes
todos sus vectores fila separados por punto y coma.

VECTORES
Su sintaxis es la siguiente:
vector=[a, b, c, d, . . . m] Define un vector fila, cuyos elementos son los
valores a, b, c, d, m.
vector=[a; b; c; d; . . . m] Define un vector columna, cuyos elementos son los
valores a, b, c, d, m.
En resumen, las comas separan elementos de un vector (en vez de comas tambin se
pueden usar espacios en blanco), mientras que el punto y coma separa las filas.

11
Matlab

Veamos algunos ejemplos:


>> a=[1, 2, 3, 4] % vector fila >> v=0:2:10
a= v=
1 2 3 4 0 2 4 6 8 10

>> a=[1 2 3 4]; >> d=u+v % suma de vectores


d=
>> b=[4; 2; -3; 4] % vector columna 0 3 6 9 12 15
b=
4 >> c=a+1 % caso especial
2 c=
-3 2 3 4 5
4

>> u=0:5 >> m=7*a % escalar por un vector


u= m=
0 1 2 3 4 5 7 14 21 28

EL MANEJO A TRAVS DEL OPERADOR :


variable=primer_elemento:ltimo_elemento Define el vector cuyos primer y
ltimo elemento son los especificados, y los elementos intermedios se diferencian en una
unidad.
variable=primer_elemento:incremento:ltimo_elemento Define el vector
cuyos primer y ltimo elemento son los especificados, y los elementos intermedios se
diferencian en la cantidad especificada por el incremento.

GENERACIN DE VECTORES POR linspace y logspace


variable=linspace(primer_elemento,ltimo_elemento,n) Define el vector
cuyos primer y ltimo elemento son los especificados, y que tiene en total n elementos
uniformemente espaciados.
>> v=linspace(0,4,11)
v=
0 0.4000 0.8000 1.2000 1.6000 2.0000 2.4000 2.8000 3.2000 3.6000 4.0000
variable=logspace(primer_elemento,ltimo_elemento,n) Define el vector
cuyos primer y ltimo elemento son los especificados, y que tiene en total n elementos en
escala logartmica uniformemente espaciados entre s.
>> v=logspace(0,4,5)
v=
1 10 100 1000 10000

ORDENAMIENTO

: Permite la generacin de sucesiones de nmeros tipo progresiones aritmticas y por


ende genera datos ordenados en forma decreciente o creciente.
>> u=4:2:20
u=
4 6 8 10 12 14 16 18 20

sort. Permite el ordenamiento de datos.


12
Matlab

>> V=[6 7 2 8 9]
V=
6 7 2 8 9
>> W=sort(V)
W=
2 6 7 8 9

MXIMO Y MNIMO DE UN CONJUNTO DE DATOS


>> max(V)
ans =
9

>> min(V)
ans =
2

MATRICES

Para generar matrices tenemos que introducir vectores fila de la misma cantidad de
componentes, fila por fila. Se usa punto y coma para separar las filas. MATLAB indica
un error cuando las filas tienen diferente nmero de elementos.

Generemos las siguientes matrices de 3 filas y 4 columnas

1 2 3 4 0 2 1 4
A 5 6 7 8 , B 5 0 1 0

9 10 11 12 2 0 3 7

Introducimos en la ventana de comandos


>> A=[1 2 3 4;5 6 7 8;9 10 11 12] >> B=[0 2 1 4
A= 5 0 1 0
1 2 3 4 2 0 3 7]
5 6 7 8 B=
9 10 11 12 0 2 1 4
5 0 1 0
2 0 3 7

Operaciones de suma de matrices y producto de una matriz por un escalar


>> S=A+B % suma de matrices >>% prod. de un escalar por una matriz
S= >> EP=2*B
1 4 4 8 EP =
10 6 8 8 0 4 2 8
11 10 14 19 10 0 2 0
4 0 6 14
>> CE=10+B % caso especial
CE =
10 12 11 14
15 10 11 10
12 10 13 17

13
Matlab

Ms operaciones clsicas:
>> C=A' % matriz traspuesta >> E=[1 2;3 4]
C= E=
1 5 9 1 2
2 6 10 3 4
3 7 11
4 8 12 >> E^3 %potencia matricial=E*E*E
ans =
>> %producto de matrices 37 54
>> P=A*C 81 118
P=
30 70 110
70 174 278
110 278 446

3. OPERACIONES A ELEMENTO
Existen en MATLAB dos tipos de operaciones aritmticas: Las operaciones aritmticas
matriciales, que se rigen por las reglas del lgebra lineal, y las operaciones aritmticas a
elemento, que se realizan elemento a elemento.

Smbolo Operacin Smbolo Operacin


+ Suma de escalares, vectores o matrices - Resta de escalares, vectores o matrices
* Producto matricial .* Producto elemental
^ Potenciacin matricial .^ Potenciacin elemental A.^B ajk ^ bjk
/ Cociente matricial, B/A=B*inv(A) ./ Cociente elemental A./B ajk / bjk
\ Cociente matricial, A\B=inv(A)*B .\ Cociente elemental A.\B bjk / ajk

Veamos algunos ejemplos de operaciones a elemento:

>> E=[1 2;3 4], F=[2 4;8 16]


E=
1 2
3 4
F=
2 4
8 16

>>%operacin de potencia a elemento


>> P=E.^3
P=
1 8
27 64

14
Matlab

>> GP=E.*F %operacin de producto a elemento


GP =
2 8
24 64

>> GD=E./F %operacin de divisin a elemento


GD =
0.5000 0.5000
0.3750 0.2500

>> x=1:5; x.^x %operacin de potencia variable a elemento


ans =
1 4 27 256 3125

>> y=[1 2;3 2]; y.^y %operacin de potencia variable a elemento


ans =
1 4
27 4

4. VECTORES Y MATRICES BLOQUES


Tabla 1
SELECCIN DE LOS ELEMENTOS DE UN VECTOR V
Se hace de acuerdo a la siguiente sintaxis:
V(n) Devuelve el n-simo elemento del vector V.
V([n,m,p]) Devuelve los elementos del vector V situados en las posiciones n-sima, m-
sima y p-sima.
V(n:m) Devuelve los elementos del vector V situados entre el n-simo y el m-
simo, ambos inclusive.
V(n:p:m) Devuelve los elementos del vector V situados entre el n-simo y el m-
simo, ambos inclusive pero separados de p en p unidades.

Sea el vector
>> V=[6 7 2 8 9];

Para obtener su tercera componente Para obtener su 1ra, 4ta y ltima componente
>> V(3) >> V([1, 4, 5])
ans = ans =
2 6 8 9

Tabla 2
SELECCIN DE LOS ELEMENTOS DE UNA MATRIZ A
Se hace de acuerdo a la siguiente sintaxis:
A(m,n) Devuelve el elemento (m,n) de la matriz A (fila m y columna n).
A([m, n],[p, q]) Devuelve la submatriz de A formada por la interseccin de las filas n-
sima y m-sima y las columnas p-sima y q-sima.

15
Matlab

A(n,:) Devuelve la fila n-sima de la matriz A.


A(:,p) Devuelve la columna p-sima de la matriz A.
A(:) Devuelve un vector columna cuyos elementos son las columnas de A situadas
por orden.
A(:,:) Devuelve toda la matriz A.

Sea la matriz
>> A=[1:4; 5:8; 9:12]
A=
1 2 3 4
5 6 7 8
9 10 11 12

Para obtener el elemento de la 2da fila y Para obtener la matriz aumentada


la 3ra col. aadiendo a la matriz A su tercera columna
>> A(2,3) >> AD=[A A(:,3)]
ans = AD =
7 1 2 3 4 3
Para obtener la primera fila 5 6 7 8 7
>> A(1,:) 9 10 11 12 11
ans = Para obtener todos sus elementos de la
1 2 3 4 matriz A como un nico vector
Para obtener la tercera columna >> vect=A(:)
>> A(:,3) vect =
ans = 1
3 5
7 9
11 2
Para obtener la submatriz formada por la 6
1ra y 2da columna 10
>> A(:,1:2) 3
ans = 7
1 2 11
5 6 4
9 10 8
12

Extraer la submatriz indicada de la matriz B.


3 6 10 12
2 16 30 31
B= 4 -2 3 96
5 32 96 97
2 1 3 4

>> B=[3,6,10,12;2,16,30,31;4,-2,3,96;5,32,96,97;2,1,3,4];
>> M=B(2:4,2:3)
M=

16
Matlab

16 30
-2 3
32 96

5. MATRICES ESPECIALES
Tipos especiales de matrices
Funcin Operacin Funcin Operacin
tril(A) Parte triangular inferior de la triu(A) Parte triangular superior de la
matriz A matriz A
eye(n) Crea la matriz identidad de nxn eye(m,n) Idem orden mxn
zeros(n) Crea la matriz nula de nxn zeros(m,n) Idem de orden mxn
ones(n) Crea la matriz de unos de nxn ones(m,n) Idem de orden mxn
rand(n) Crea una matriz aleatoria rand(m,n) Idem de orden mxn
uniforme de nxn randn(m,n) Idem de orden mxn
randn(n) Crea una matriz aleatoria normal diag(v) Matriz diagonal con los
de nxn elementos de v
diag(A) Extraer la diagonal de la matriz A diag(v,k) Matriz diagonal con los
diag(A,k)Extraer la k-sima diagonal de la elementos de v en la k-sima
matriz A. diagonal
k = 0 es la diagonal principal,
k > 0 es encima de la diagonal
principal y k < 0 es debajo de la
diagonal principal.

EJEMPLOS
MATRIZ COMANDO SALIDA
NULA >> zeros(2)
>> zeros(2,3)
UNOS >> ones(2)
>> ones(2,3)
IDENTIDAD >> I=eye(3) I=
1 0 0
0 1 0
0 0 1
ALEATORIA >> rand(3) ans =
0.2028 0.2722 0.7468
0.1987 0.1988 0.4451
0.6038 0.0153 0.9318
DIAGONAL >> A=[1:4; 5:8; 9:12] D=
A= 1
1 2 3 4 6
5 6 7 8 11
9 10 11 12
>> D=diag(A)
DIAGONAL >> I=diag(2:4) I=

17
Matlab

2 0 0
0 3 0
0 0 4
LA MATRIZ >> I=diag(ones(3,1)) I=
IDENTIDAD 1 0 0
GENERADA CON LA 0 1 0
DIAGONAL 0 0 1

MS MATRICES ESPECIALES:

magic matriz Mgica.


M = magic(n) retorna una matriz de nxn construida con enteros del 1.. n2
con igual suma en las filas, columnas, diagonal principal y diagonal
secundaria.

>> magic(3) >> magic(4)


ans = ans =
8 1 6 16 2 3 13
3 5 7 5 11 10 8
4 9 2 9 7 6 12
4 14 15 1

pascal matriz de Pascal.


M=pascal(N) es la matriz de orden N, simtrica y definida positiva, con
elementos enteros, construidos como el tringulo de Pascal. Su matriz
inversa tiene elementos enteros.

>> pascal(2) >> pascal(3)


ans = ans =
1 1 1 1 1
1 2 1 2 3
1 3 6

vander matriz de Vandermonde.


A = vander(v) matriz cuyas columnas son potencias del vector v, dado por
A(i,j) = v(i)^(n-j) .

18
Matlab

>> vander([2 4 1]) >> vander([2 4 5 3 6])


ans =
4 2 1 ans =
16 4 1
1 1 1 16 8 4 2 1
>>%tambien 256 64 16 4 1
>> vander([2;4;1]) 625 125 25 5 1
ans = 81 27 9 3 1
4 2 1 1296 216 36 6 1
16 4 1
1 1 1

hilb matriz de Hilbert.


H = hilb(n) matriz de orden n. Es una matriz pobremente condicionada,
sus elementos son H(i,j)= 1 .
i j 1
invhilb matriz Inversa de Hilbert.

>> hilb(3) >> invhilb(4)


ans = ans =
16 -120 240 -140
1.0000 0.5000 0.3333
-120 1200 -2700 1680
0.5000 0.3333 0.2500
240 -2700 6480 -4200
0.3333 0.2500 0.2000
-140 1680 -4200 2800

MS OPERACIONES CON MATRICES

Funcin Operacin Funcin Operacin


A Matriz transpuesta de A transpose(A) Matriz transpuesta de A
inv(A) Matriz inversa de la matriz rank(A) Rango de la matriz A
cuadrada A
det(A) Determinante de la matriz length(v) Devuelve la longitud del vector v
cuadrada A
trace(A) Suma de los elementos de la size(A) Devuelve el orden (tamao) de la
diagonal de A matriz A, es decir el numero de
filas y numero de columnas.
sum(v) Suma de los elementos del sum(A) Suma de los elementos de la
vector v matriz A en cada columna.
sum(A,2) suma de los elementos
de la matriz A en cada fila.
prod(v) Producto de los elementos del prod(A) Producto de los elementos de la
vector v matriz A en cada columna.
prod(A,2) producto de los
19
Matlab

elementos de la matriz A en cada


fila.
cumsum(v) Suma acumulada de los cumsum(A) Suma acum. de los elementos de
elementos del vector v la matriz A en cada columna.
cumsum(A,2) suma acum. de los
elem. de la matriz A en cada fila.

20
Matlab

EJERCICIOS DESARROLLADOS
MANEJANDO MATRICES

1. Genere los vectores:


a) u vector ordenado de nmeros pares desde 4 a 20.
b) v vector ordenado de 12 mltiplos de 3 comenzando de 6.
c) w vector en orden inverso desde 12 hasta 4 usando la funcin linspace.
2 1 3
2. Ingrese las matrices A 4 6 y B = matriz aleatoria de 3x3. Construya C a

0.4 7.1 0
partir de A y B: C = [A A ; A.^3 B]
3. Qu dimensiones tiene C? Cul es la diferencia entre size y length?
4. Extraer los siguientes elementos de las matrices formadas:
a) ltima fila de A.
b) La submatriz formada por las dos columnas centrales de C.
c) La submatriz formada por las columnas 3ra, 5ta y 6ta de C.
d) Extraer una submatriz de 2x2 que comience del elemento C(2,2) de C.

5. Crear A = matriz mgica de 3x3 y el vector columna b = [-13;1;4.2].


a) Qu accin hace? >> b(1) = [ ] c) Qu accin hace? >> A(2)
b) Qu accin hace? >> A(:)' d) Qu accin hace? >> A(1) = [ ]
6. Luego de realizar los comandos, Qu informacin tiene E?
>> M = 'MATHTYPE'; N='QUESTION';
>> M = M(2:5);N = N(2:5);
>> E = [M' N']'
7. Extraer la diagonal y antidiagonal de la matriz A = [2,3,-7; 2,1,-1; 1,0.1,1].
8. Extraer los elementos de la parte triangular superior de A.
9. Crear la matriz mgica de M de 5x5 y usar la funcin del Matlab para hallar el valor
de la suma de los elementos de la diagonal.

21
Matlab

DESARROLLO

1. Genere los vectores:

d) u vector ordenado de nmeros pares desde 4 a 20.


e) v vector ordenado de 12 mltiplos de 3 comenzando de 6.
f) w vector en orden inverso desde 12 hasta 4 usando la funcin linspace.

a) u vector ordenado de nmeros pares desde 4 a 20.


>> u=[4:2:20]
u=
4 6 8 10 12 14 16 18 20
b) v vector ordenado de 12 mltiplos de 3 comenzando de 6.
>> v=(6:3:39)
v=
6 9 12 15 18 21 24 27 30 33 36 39
c) w vector en orden inverso desde 12 hasta 4 usando la funcin linspace.
>> w=linspace(12,4,9)
w=
12 11 10 9 8 7 6 5 4

2 1 3
2. Ingrese las matrices A 4 6 y B = matriz aleatoria de 3x3. Construya C a

0.4 7.1 0
partir de A y B: C = [A A ; A.^3 B]
>> A=[2 -1 3;4 pi 6;0.4 7.1 0]
A=
2.0000 -1.0000 3.0000
4.0000 3.1416 6.0000
0.4000 7.1000 0
>> B=rand(3)
B=
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> C=[A A;A.^3 B]
C=
2.0000 -1.0000 3.0000 2.0000 -1.0000 3.0000
4.0000 3.1416 6.0000 4.0000 3.1416 6.0000
0.4000 7.1000 0 0.4000 7.1000 0
8.0000 -1.0000 27.0000 0.9501 0.4860 0.4565
64.0000 31.0063 216.0000 0.2311 0.8913 0.0185
0.0640 357.9110 0 0.6068 0.7621 0.8214

3. Qu dimensiones tiene C? Cul es la diferencia entre size y length?


DIMENSIONES DE C!
22
Matlab

>> size(C)
ans =
6 6

DIFERENCIA ENTRE SIZE Y LENGTH


length devuelve la longitud del vector, y en caso de matrices length devuelve el mayor
valor de la dimensin (es decir el mayor valor entre #filas y #columnas) de la matriz.
>> length(C)
ans =
6
Y size devuelve la dimensin o tamao de la matriz, es decir el nmero de filas y
columnas. C tiene 6 columnas y 6 filas.
>> size(C)
ans =
6 6
4. Extraer los siguientes elementos de las matrices formadas:
a) ltima fila de A.
b) La submatriz formada por las dos columnas centrales de C.
c) La submatriz formada por las columnas 3ra, 5ta y 6ta de C.
d) Extraer una submatriz de 2x2 que comience del elemento C(2,2) de C.
a) ltima fila de A.
>> A(3,:)
ans =
0.4000 7.1000 0
b) La submatriz formada por las dos columnas centrales de C.
>> C(:,3:4)
ans =
3.0000 2.0000
6.0000 4.0000
0 0.4000
27.0000 0.9501
216.0000 0.2311
0 0.6068
c) La submatriz formada por las columnas 3ra, 5ta y 6ta de C.
>> M=C(:,[3 5 6])
M=
3.0000 -1.0000 3.0000
6.0000 3.1416 6.0000
0 7.1000 0
27.0000 0.4860 0.4565
216.0000 0.8913 0.0185
0 0.7621 0.8214
d) Extraer una submatriz de 2x2 que comience del elemento C(2,2) de C.
>> L=C(2:3,2:3)
L=
3.1416 6.0000
7.1000 0

23
Matlab

5. Crear A = matriz mgica de 3x3 y el vector columna b = [-13;1;4.2].


a) Qu accin hace? >> b(1) = [ ] c) Qu accin hace? >> A(2)
b) Qu accin hace? >> A(:)' d) Qu accin hace? >> A(1) = [ ]

>> A=magic(3) >> b = [-13;1;4.2]


A= b=
8 1 6 -13.0000
3 5 7 1.0000
4 9 2 4.2000
a) Qu accin hace? >> b(1) = [ ]
Elimina el primer elemento de la matriz B.

>> b(1) = [ ]
B=
1.0000
4.2000
b) Qu accin hace? >> A(:)'
Me devuelve todos los elementos de la matriz A como una sola fila, por orden
consecutiva de cada columna.

>> A(:)'
ans =
8 3 4 1 5 9 6 7 2
c) Qu accin hace? >> A(2) Me devuelve el segundo componente de la Matriz A.
>> A(2)
ans =
3
d) Qu accin hace? >> A(1) = [ ] Elimina el primer elemento de la matriz A.
>> A(1) = [ ]
A=
3 4 1 5 9 6 7 2
6. Luego de realizar los comandos, Qu informacin tiene E?
>> M = 'MATHTYPE'; N='QUESTION';
>> M = M(2:5);N = N(2:5);
>> E = [M' N']'
>> M = 'MATHTYPE'; N='QUESTION';
>> M = M(2:5);N = N(2:5);
>> E = [M' N']'
E=
ATHT
UEST
Explicacin: Cuando hago esto >> M = M(2:5);N = N(2:5); estoy definiendo tanto en
M como en N. Luego tomo solo los elementos de la posicin 2 hasta la 5 en M e igual
en N. Luego Defino E para que me devuelva a M y N como columna, tomando solo los
elementos ya definidos M = 'MATHTYPE'; N='QUESTION'

7. Extraer la diagonal y antidiagonal de la matriz A = [2,3,-7; 2,1,-1; 1,0.1,1].


>> A = [2,3,-7; 2,1,-1; 1,0.1,1]
24
Matlab

A=
2.0000 3.0000 -7.0000
2.0000 1.0000 -1.0000
1.0000 0.1000 1.0000
>> diag(A)
ans =
2
1
1
>>% la antidiagonal
>> diag(fliplr(A))
ans =
-7
1
1
8. Extraer los elementos de la parte triangular superior de A.
>> triu(A)
ans =
2 3 -7
0 1 -1
0 0 1
9. Crear la matriz mgica de M de 5x5 y usar la funcin del Matlab para hallar el valor
de la suma de los elementos de la diagonal.
>> M=magic(5) >>%suma de elementos de la diagonal
M= >> trace(M)
17 24 1 8 15 ans =
23 5 7 14 16 65
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9

25
Matlab

EJERCICIOS PROPUESTOS

1. Hallar las dimensiones, la traza, el determinante, el rango y la inversa de la matriz


A. A=[2,3, 7;2,1, 1;1, 2,3] .

2. Crear una matriz de dos columnas con la diagonal y antidiagonal de la matriz


A=[2,3, 7;2,1, 1;1, 2,3] .

3. Crear una matriz M de 3 columnas:


Primera columna con la diagonal de A traspuesta de [1:11;2 :12;...;11: 21] .
Segunda columna con la primera diagonal inferior de B magic(12) .
Tercera columna con la primera diagonal superior de C pascal (12) .

4. Generar la matriz A con la orden diag.


5 -4 1 0 0 0 0
-4 6 -4 1 0 0 0
1 -4 6 -4 1 0 0
0 1 -4 6 -4 1 0
A= 0 0 1 -4 6 -4 1
0 0 0 1 -4 6 -4
0 0 0 0 1 -4 5

5. Generar la matriz A con las rdenes diag y fliplr.


0 0 0 0 3 -4 2
0 0 0 3 -4 2 -4
0 0 3 -4 2 -4 0
0 3 -4 2 -4 0 0
A= 3 -4 2 -4 0 0 0
-4 2 -4 0 0 0 0
2 -4 0 0 0 0 0

26
Matlab

CAP 3. LGEBRA MATRICIAL

1. SISTEMA LINEAL DE ECUACIONES

OPERACIONES DE LA MATRIZ

Hemos visto ya el operador ' (traspuesto) para hallar la traspuesta de una matriz
traspuesta de un vector, tambin las operaciones con matrices.
1 2 3 1 1 1
Pero ntese que si C= , D= y x 1 1 1 entonces:
4 5 6 2 2 2
1 1 2
1 2 3 1 2 3
a) Estn bien definidos C*x'= 1 , C*D' = 1 2 .
4 5 6 1 4 5 6 1 2

1
b) Estn bien definidos x*x' = 1 1 1 1 (producto interno que es equivalente a la
1
1
operacin a elemento x.*x) y el x'*x = 1 1 1 1 (producto externo).
1
c) Sin embargo C*x y C*D no estn bien definidos.

SOLUCIN DE SISTEMAS LINEALES

Para resolver los sistemas lineales A*x = B por ejemplo


2 3 4 x1 3
1 1 1 x 0.5
2
4 7 14 x3 2
Recuerde las siguientes operaciones:
Smbolo Operacin
/ Cociente matricial, B/A=B*inv(A)
\ Cociente matricial, A\B=inv(A)*B

Si A es una matriz no singular cuadrada entonces A\B y B/A corresponden formalmente


a la multiplicacin izquierda y derecha de B por A-1 (inversa de A). Estas expresiones se
utilizan para solucionar los tipos siguientes de sistemas de ecuaciones:

Divisin izquierda:
x = A\B y tambin x=linsolve(A, B) soluciona A * x = B

Divisin derecha:
x = B/A soluciona x * A = B

27
Matlab

EJEMPLO
2x1 3x 2 4x 3 3
Resolver x x 2 x3 0.5
1
4x 7x 14x 3
1 2 2

Las acciones en MATLAB sern:


>> A=[2,3,-4;1,-1,1;4,-7,14] >> b=[3;-0.5;2] >> x=A\b %solucin >> linsolve(A,b) %con linsolve
A= b= x= ans =
2 3 -4 3.0000 0.5000 [ 1/2]
1 -1 1 -0.5000 2.0000 [ 2]
4 -7 14 2.0000 1.0000 [ 1]

2. OPERACIONES ELEMENTALES FILA Y COLUMNA

OPERACIONES FILA
1ra) Escalamiento
2da) Intercambio
3ra) Reemplazo

Sea A la siguiente matriz


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

1ra) Escalamiento: Multiplicacin de una fila por un escalar


>> A(3,:) = 0.5*A(3,:) %Accion 0.5xFila3 Fila3
A=
0 2.0000 1.0000 4.0000
5.0000 0 1.0000 0
1.0000 0 1.5000 3.5000
2da) Intercambio: Intercambio de filas
>> aux=A(1,:);A(1,:)=A(3,:);A(3,:)=aux %Accion Fila1 Fila3
A=
1.0000 0 1.5000 3.5000
5.0000 0 1.0000 0
0 2.0000 1.0000 4.0000
3ra) Reemplazo: Adicionar a una fila otra fila por un escalar
>> A(2,:)=A(2,:)-5*A(1,:) %Accion Fila2 5xFila1 Fila2
A=
1.0000 0 1.5000 3.5000
0 0 -6.5000 -17.5000
0 2.0000 1.0000 4.0000

28
Matlab

OPERACIONES COLUMNA
Sea B la siguiente matriz
>> B=[0 2 1 4; 5 0 1 0; 2 0 8 6]
B=
0 2 1 4
5 0 1 0
2 0 8 6
1ra) Multiplicacin de una columna por un escalar
>> B(:,2)=0.5*B(:,2) %0.5xColumna2 Columna2
B=
0 1 1 4
5 0 1 0
2 0 8 6
2da) Intercambio de columnas
>> aux = B(:,1); B(:,1)=B(:,2); B(:,2)=aux %Columna1 Columna2
B=
1 0 1 4
0 5 1 0
0 2 8 6
3ra) Adicionar a una columna otra columna por un escalar
>> B(:,4)=B(:,4)-4*B(:,1) %Columna4 4xColumna1 Columna4
B=
1 0 1 0
0 5 1 0
0 2 8 6

ELIMINACIN GAUSSIANA CON SUSTITUCIN HACIA ATRS

El sistema Ax = b, puede ser almacenado en un arreglo de n x (n + 1); donde los


coeficientes del vector b se almacenan en la columna (n + 1) del arreglo. Esta nueva
matriz, es conocida como matriz aumentada y se la denota como [A, b]:
a11 a12 ... a1n b1

a 21 a 22 ... a 2 n b2
. . . .
A,b
. . . .
. . . .

a bn
n1 a n 2 ... a nn

Ilustraremos el mtodo de Eliminacin Gaussiana aplicando el procedimiento a un


sistema de cuatro ecuaciones con cuatro incgnitas:

29
Matlab

Primer paso: Eliminar x1 de todas las ecuaciones, excepto de la ecuacin pivotal.

pivote 6 2 2 412
m21 2 12 8
12
6 10 34
6
m31 63 12 3 13 9 3 27

m41 66 1 6 4 1 18 38

El sistema en estos momentos tiene el siguiente aspecto:

F2 2F1 F2
F3 1 F1 F3
2
F4 F1 F4

Segundo paso: Se elimina la segunda incgnita x2 a partir de todas las ecuaciones


debajo de x2.

6 2 2 4 12
pivote 0 4 2 2 10

m32 124 3 0 12 8 1 21

m42 24 12 0 2 3 14 26

1
Los multiplicadores son en esta ocasin 3 y y el sistema de ecuaciones se reduce a:
2

F3 3F2 F3
F4 1 F2 F4
2

4
Tercer paso: El ltimo paso consiste en multiplicar la tercera ecuacin por 2y
2
restarla a la cuarta. El sistema resultante resulta ser:

30
Matlab

F4 2F3 F4

El sistema resultante es triangular superior y equivalente al sistema original (las


soluciones de ambos sistemas coinciden). Sin embargo, este sistema es fcilmente
resoluble aplicando el algoritmo de sustitucin regresiva (hacia atrs). La solucin del
sistema de ecuaciones resulta ser:

PROGRAMA DE ELIMINACIN GAUSSIANA CON SUSTITUCIN HACIA


TRAS
Programa: gatras.m
function X= gatras(A,b)
% X= gatras(A,b,info)
% Resolucin de un sistema de ecuaciones por el mtodo de
% Eliminacin Gaussiana con Sustitucin hacia tras
% sin pivote
if nargin<2;error('Numero de parmetros insuficientes');end
[n,nc]=size(A);if n~=nc;error('la matriz no es cuadrada');end
[p,nc]=size(b);if nc~=1 | p~=n;error('el sistema no cuadra');end
A=[A,b];clear nc;
%
%Triangulacin del sistema
for i=1:n %Eliminacin gaussiana
if A(i,i)==0; error('sistema indeterminado o incompatible');end
for j=i+1:n
m=-A(j,i)/A(i,i);A(j,:)=A(j,:)+m*A(i,:)
end
end
%
% Resolucin del sistema triangular: Sustitucin hacia tras
A(n,n+1)=A(n,n+1)/A(n,n);
for i=n-1:-1:1
A(i,n+1)=(A(i,n+1)-A(i,i+1:n)*A(i+1:n,n+1))/A(i,i);
end
X=A(:,n+1);

31
Matlab

3. FACTORIZACIN LOWER UPPER


FORMA DE GAUSS - DOOLITTLE
Otra tcnica para resolver Ax = b es descomponer en factores A por Eliminacin
Gaussiana y despus solucionar dos sistemas triangulares para computar x. Es decir
descomponer A de la forma Lower Upper, que en su forma ms general ser:
P*A=L*U
Siendo L = matriz triangular inferior unitaria, U = matriz triangular superior, P = matriz
de permutacin.

FORMA DE CHOLESKI
Si A es definida positiva y simtrica entonces la factorizacin Lower Upper tambin se
puede realizar de la forma de Choleski que ser:
A = R * R
Siendo R = matriz triangular superior.

OPERACIONES DE FACTORIZACIN EN MATLAB


[L,U]=lu(A) Descompone la matriz A en el producto A =L*U, siendo U una matriz
triangular superior y L una matriz pseudotriangular inferior unitaria
(triangularizable mediante permutacin).
[L,U,P]=lu(A) Devuelve una matriz triangular inferior unitaria L, una matriz triangular
superior U, y una matriz de permutacin P tales que PA = LU.
R=chol(A) Devuelve la matriz triangular superior R tal que R * R = A
(descomposicin de Cholesky de A), en caso de que A sea definida
positiva y simtrica. Si A no es definida positiva devuelve un error.

EJEMPLO
Factorizar:
2 3 4
A 1 1 1 por Gauss Doolittle, y
4 7 14

B = matriz de pascal de 3x3 por Choleski.


Las acciones en MATLAB sern:
>> A=[2,3,-4;1,-1,1;4,-7,14] >> [L,U,P]=lu(A) >> % Por Choleski
A= L= >> B=pascal(3)
2 3 -4 1.0000 0 0 B=
1 -1 1 0.5000 1.0000 0
4 -7 14 0.2500 0.1154 1.0000 1 1 1
1 2 3
>> [L,U]=lu(A) U= 1 3 6
L= 4.0000 -7.0000 14.0000
0.5000 1.0000 0 0 6.5000 -11.0000 >> R=chol(B)
0.2500 0.1154 1.0000 0 0 -1.2308 R=
1.0000 0 0 1 1 1

32
Matlab

U= P= 0 1 2
4.0000 -7.0000 14.0000 0 0 1 0 0 1
0 6.5000 -11.0000 1 0 0
0 0 -1.2308 0 1 0

Ntese que la matriz de pascal B es una matriz simtrica y definida positiva, por lo cual
la factorizacin de la forma de Choleski se ha llevado con xito.

4. FACTORIZACIN ORTOGONAL
Cuando A es rectangular, los factores de A se pueden hallar por ortogonalizacin.
[Q,R] = qr(A) produce una matriz triangular superior R de la misma dimensin de A y
una matriz ortogonal Q tal que A = Q*R.
[Q,R,P] = qr(A) produce una matriz de permutacin P, una matriz triangular superior R de
la misma dimensin de A y una matriz ortogonal Q tal que A*P = Q*R.

EJEMPLO
Factorizar ortogonalmente:

2 3 4 1 2 3 1
A 1 1 1 y B = 2 1 2 4 .

4 7 14 0 2 3 1

Las acciones en MATLAB sern:


>> A=[2,3,-4;1,-1,1;4,-7,14] >> B=[1,2,3,1;-2,1,2,4;0,2,3,1]
A= B=
2 3 -4 1 2 3 1
1 -1 1 -2 1 2 4
4 -7 14 0 2 3 1

>> [Q,R]=qr(A) >> [Q,R]=qr(B)


Q= Q=
-0.4364 0.8927 0.1126 -0.4472 -0.6667 -0.5963
-0.2182 0.0164 -0.9758 0.8944 -0.3333 -0.2981
-0.8729 -0.4504 0.1876 0 -0.6667 0.7454
R= R=
-4.5826 5.0190 -10.6927 -2.2361 0.0000 0.4472 3.1305
0 5.8146 -9.8602 0 -3.0000 -4.6667 -2.6667
0 0 1.2009 0 0 -0.1491 -1.0435
>>Q*R %verificando >> Q*R %verificando
ans = ans =
2.0000 3.0000 -4.0000 1.0000 2.0000 3.0000 1.0000
1.0000 -1.0000 1.0000 -2.0000 1.0000 2.0000 4.0000
4.0000 -7.0000 14.0000 0 2.0000 3.0000 1.0000

33
Matlab

5. NORMAS MATRICIALES

norm(A) Norma 2 de la matriz A (norma euclideana).


norm(A,1) Norma 1 de la matriz A
norm(A,Inf) Norma infinito de la matriz A (norma del mximo).
norm(A,'fro') Norma de Frobenius de la matriz
cond(A) Nmero de condicin de la matriz A segn la norma 2.

EJEMPLO
Extraer la norma 1, norma euclideana y norma del mximo de la matriz A.
>> A=[2,3,-4;1,-1,1;4,-7,14] >> norm(A,2) >> norm(A,1) >> norm(A,inf)
A= ans = ans = ans =
2 3 -4 16.8014 19 25
1 -1 1
4 -7 14

34
Matlab

6. ARREGLOS MULTIDIMENSIONALES

Para introducir vectores y matrices no hubo problemas, ahora es tiempo de


introducir arreglos multidimensionales. Por ejemplo voy a introducir el arreglo A de
3x3x4 cuyos elementos esquematizo a continuacin:

>> A(:,:,1)=pascal(3); A(:,:,2)=magic(3); A(:,:,3)=ones(3); A(:,:,4)=vander([2,4,5]) ;


>>% Veamos el arreglo A
>> A
A(:,:,1) =
1 1 1
1 2 3
1 3 6
A(:,:,2) =
8 1 6
3 5 7
4 9 2
A(:,:,3) =
1 1 1
1 1 1
1 1 1
A(:,:,4) =
4 2 1
16 4 1
25 5 1

35
Matlab

EJERCICIOS DESARROLLADOS

LGEBRA MATRICIAL
1. Hallar la norma euclideana, la norma del mximo, la norma L1, de v=[2,3, 1, 2,1,3] .
>> v=[2,3,-1,2,1,3] v=
2 3 -1 2 1 3
>> norm(v) ans =

5.2915
>> norm(v,inf) ans =

3
>> norm(v,1) ans =

12

2. Hallar la norma euclideana, la norma del mximo, la norma de Frobenious, el nmero de


condicin, de A=[2,3, 7;2,1, 1;1, 2,3] .
>> A=[2,3,-7;2,1,-1;1,2,3] A=
2 3 -7
2 1 -1
1 2 3
>> norm(A) ans =

8.2563
>> norm(A,inf) ans =
12
>> norm(A,'fro') ans =

9.0554
>> cond(A) ans =

7.5751

3. Resuelva el Sistema lineal Ax = b, siendo A=[2,3, 7;2,1, 1;1, 2,3] , b=[1: 3]' .
>> A=[2,3,-7;2,1,-1;1,2,3] A=
2 3 -7
2 1 -1
1 2 3
>> b=[1:3]' b=
1
2
3
>> x=A\b x=
0.9063
0.5313
0.3438

4. Factorice por Gauss Doolitle y tambin ortogonalmente la matriz A.

>> [L,U,P]=lu(A) L=

36
Matlab

1.0000 0 0
1.0000 1.0000 0
0.5000 -0.2500 1.0000
U=
2 3 -7
0 -2 6
0 0 8
P=
1 0 0
0 1 0
0 0 1
>> [Q,U]=qr(A) Q=
-0.6667 0.4576 -0.5883
-0.6667 -0.7191 0.1961
-0.3333 0.5230 0.7845
U=
-3.0000 -3.3333 4.3333
0 1.6997 -0.9152
0 0 6.2757

37
Matlab

EJERCICIOS PROPUESTOS

2x1 3x 2 4x 3 3
1. Resolver el sistema lineal x 2x 2 x3 0
1
x 7x 2 14x 3 2
1
x 1 x 2 3x 4 4
2x x x x 1
1 2 3 4
2. Resolver el sistema lineal
13x x 2 x 3 2 x 4 3
x 1 2x 2 3x 3 x 4 4
3. Resolver los sistemas A x = b y B x = b utilizando:
1 2 0 1 1 3 2 1/ 2

2 4 1 1 2 6 1 0
A B
1 5 0 0 0 6 2 1

1 1 5 3 0 2
5 2
1 1 1

0 2 0
Siendo b ==> b 1 b2 b3
1 3 2

0 4 3

1
1 1 1 1
1 3 5 3 7

4. Factorice A 1 3 6 1 1 por Gauss Doolitle y tambin ortogonalmente.

1 4 1 2 3
0 2 3 4 5

5. Haga operaciones elementales filas a la matriz A con tal de convertir toda la 1ra
columna y debajo del primer elemento de A en ceros.

38
Matlab

CAP 4. POLINOMIOS. RACES DE FUNCIONES

1. POLINOMIOS

Un polinomio a1 xn a2 x n1 ... an x an1 en Matlab se introduce a travs de sus


coeficientes pero considerando el polinomio completo y ordenado decrecientemente.

EJEMPLO
El polinomio p( x) x 3 4 x 2 10 en Matlab ser
>> p=[1 4 0 -10]
p=
1 4 0 -10

EVALUACIN DE POLINOMIOS
polyval(p, x) evala el polinomio p (que es un vector de longitud n+1 cuyos elementos
son los coeficientes del polinomio) en x.

EJEMPLO
El polinomio p( x) x 3 4 x 2 10 lo evaluamos en distintos x.
>> y=polyval(p,1) >> x=1:0.25:2
y= x=
-5 1.0000 1.2500 1.5000 1.7500 2.0000

>> y=polyval(p,-2.1+3i) >> y=polyval(p,x)


y= y=
19.0790 -37.7100i -5.0000 -1.7969 2.3750 7.6094 14.0000

PRODUCTO DE POLINOMIOS
conv(p,d) Multiplicacin de los polinomios p y d

DIVISIN DE POLINOMIOS
[Q,R] = deconv(p,d) Divisin de polinomios p y d, obtenindose el cociente Q y
residuo R.

EJEMPLO
Sean los polinomios p( x) x 3 4 x 2 10 y d ( x) x 2 2 se tiene
>> p=[1,4,0,-10];d=[1,0,-2]; >> [Q,R]=deconv(p,d) %division de p(x) por d(x)
>> m=conv(p,d) %producto de p(x) por d(x) Q=
m= 1 4
1 4 -2 -18 0 20 R=
0 0 2 -2

39
Matlab

FRACCIONES PARCIALES
A( x)
[R,P,Q] = residue(A,B) Descomposicin en fracciones parciales de , siendo
B( x)
A( x) R(1) R(2) R(n)
... Q( x)
B( x) x P(1) x P(2) x P ( n)

Si P( j ) ... P( j m -1) es un polo de orden m, entonces la expansin incluye


trminos de la forma
R( j ) R( j 1) R( j m 1)
...
x P( j ) x P( j ) 2
x P( j )
m

EJEMPLO
Descomponer en fracciones parciales
f ( x) = 4 x 2 x 3x2 2 =
3 2
a b c d

x ( x 1) x 1 x 1
2
x x2
Solucin:
A( x) 4 x3 x2 3x 2 , B( x) x2 ( x 1)2 x4 2 x3 x2 , luego en Matlab se tiene:
>> A=[4,-1,-3,- P=
2];B=[1,2,1,0,0]; -1 Entonces la expansin en fracciones parciales
>> [R,P,Q]=residue(A,B) -1 ser:
R= 0
3 0 4 x3 x 2 3x 2 3 4 1 2
-4 Q= 2
x ( x 1)
2 2
x 1 x 1 2
x x
1 []
-2

DERIVADAS DE POLINOMIOS
polyder(p) Es la derivada del polinomio p.

EJEMPLO

Sea el polinomio p(x) = 4x3 + 3x2 +x 1, su derivada y segunda derivada son:

>> p=[4 3 1 -1] p=


4 3 1 -1
>> dp=polyder(p) dp =
12 6 1
>> d2p=polyder(dp) d2p =
24 6

2. AUTOVALORES Y AUTOVECTORES

Funcin Operacin Funcin Operacin

40
Matlab

eig(A) Autovalores de la matriz A. [V,D]=eig(A) Matriz diagonal de


autovalores D y matriz V de autovectores
por columnas.

poly(A) Polinomio caracterstico de A. poly(V) Vector (polinomio) cuyas races


son los elementos del vector V.

jordan(A) Forma cannica de Jordan de [V,J]=jordan(A) Forma cannica de


la matriz A. Jordan J, de la matriz y la matriz de paso V
de autovectores por columnas.

EJEMPLO
2 3 4
Sea A 1 1 1

4 7 14

a) Calcular los autovalores de la matriz A.


b) Calcular los autovalores y autovectores de A.
>> A=[2,3,-4;1,-1,1;4,-7,14] >> % respuesta de (b)
A= >> [V,D]=eig(A)
2 3 -4 V=
1 -1 1 -0.3550 0.9525 0.2442
4 -7 14 0.0440 0.1499 -0.8485
>> % respuesta de (a) 0.9338 -0.2651 -0.4694
>> D=eig(A) D=
D= 12.1493 0 0
12.1493 0 3.5853 0
3.5853 0 0 -0.7346
-0.7346

3. RACES DE POLINOMIOS

roots Halla las races de polinomios.


roots(p) calcula las races del polinomio con coeficientes que son los elementos del
vector p.
EJEMPLO
Calcular las races del polinomio p( x) x 3 4 x 2 10
>> p=[1,4,0,-10];
>> roots(p)
ans =
-2.6826 + 0.3583i
-2.6826 - 0.3583i
1.3652

41
Matlab

4. RACES DE FUNCIONES

fzero Extrae las races de funciones lineales y no lineales, con el nico requisito de que
introduzca un valor inicial.
>> fzero('sin(x)-cos(x)',0)

ans =

0.7854

>> fzero('sin(2*x)-2*cos(x)+x^2-3*x-6',3)

ans =

3.9113

42
Matlab

EJERCICIOS DESARROLLADOS

5. Evaluar el polinomio en x = 1:0.3:4, p1 2 x3 x 7

>> p1=[2,0,-1,7] p1 =
2 0 -1 7

>> x = 1:0.3:4 x=
1 1.3 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4
>> polyval(p1,x) ans =
Columns 1 through 5
8.0000 10.0940 13.5920 18.8180 26.0960

Columns 6 through 10
35.7500 48.1040 63.4820 82.2080 104.6060

Column 11
131.0000

6. Hallar el producto de polinomios p1(x).p3(x) , siendo p3 x 4 7


>> p3=[1,0,0,0,7] >> conv(p1,p3)

7. Hallar el cociente y residuo de p3 entre p1


>>[q,r]=deconv(p3,p1)

p3
8. Hallar la descomposicin en fracciones parciales de
p1
>>[R,P,Q] = residue(p3,p1)

9. Calcular las races del polinomio p( x) x3 x 2 x 3i


>>p=[1,1,-1,-3i]
>> roots(p)
ans =
-1.8925 + 0.5281i
1.1483 + 0.6156i
-0.2557 - 1.1436i

43
Matlab

EJERCICIOS PROPUESTOS

6. Evaluar los polinomios en x = 1:0.3:7


i. p2 2 x5 3ix (6 2i)
ii. p3 x10 x 1


4
7. Hallar el desarrollo del trinomio p(x) = x3 - ix + 2 usando comandos del Matlab.

8. Calcular las races del polinomio:


p( x) x 3i xcis5 xcis7 [nota: cis cos i sin ]
3 4

9. Hallar el resto de la divisin de p(x) por d(x) = x3 - ix + 2 , siendo p(x) el polinomio


caracterstico de la matriz A.
1 1 1 1 1
1 3 5 3 7

A 1 3 6 1 1

1 4 1 2 3
0 2 3 4 5

10. Hallar la derivada del cociente de la divisin de p(x) x10 x 1 por


d(x) = x3 - ix + 2 .

11. Hallar las races de la funcin f(x) xsenx 2 cercanas a 6, 4, 4 y 6.

44
Matlab

CAP 5. GRFICOS BIDIMENSIONALES (2-D)

Matlab produce grficos de dos y tres dimensiones, as como contornos y grficos de


densidad.
Se pueden representar los grficos y listar los datos, permite el control de colores,
sombreados y otras caractersticas de los grficos, tambin soporta grficos
animados.
Los grficos producidos por Matlab son portables a otros programas.

1. GRFICOS EN COORDENADAS CARTESIANAS


Estos grficos se tratan como curvas que pasan por pares ordenados, pero finalmente
Matlab lo que hace es trazar una poligonal lineal que pasa por estos puntos o pares
ordenados.

ANATOMIA DE UN GRAFICO

Se pueden hacer los grficos de dos formas:

Modelo matemtico de la curva.


Datos discretos de la curva.

- Modelo matemtico de la curva. Para esto se tiene que tener la ley o modelo
matemtico que describe el fenmeno, es decir
Modelo
Por una ley o modelo matemtico

45
Matlab

- Datos discretos de la curva. Para esto se tiene que tener datos de los pares ordenados
(X,Y), es decir
Datos
X = Pre imgenes
Y= Imgenes

GRAFICANDO CON PLOT

plot(X) Representa los puntos (k, Xk). Si X es una matriz, hace lo mismo para cada
columna de la matriz. Si X es un vector complejo, representa Real(X) frente a
Imag(X).

EJEMPLO
>> x=[7,9,3,1,5,20,5]

x=

7 9 3 1 5 20 5

>> plot(x)

plot(X,Y) Representa el conjunto de puntos (X,Y). Si X o Y son matrices, representa por


filas o columnas los datos de X frente a los datos de Y, dependiendo si el otro
vector es fila o columna. Para valores complejos de X e Y, se ignoran las partes
imaginaria.
plot(X,Y,S) Grfica de plot(X,Y) con las opciones definidas en S. Usualmente, S se
compone de 3 caracteres entre tildas, el primero de los cuales fija el color de la
lnea del grfico, el segundo fija la etiqueta o marca en el nodo y el ltimo fija el
carcter a usar en el graficado.
plot(X1,Y1,S1,X2,Y2,S2,,Xn,Yn,Sn) Grfica de las n curvas superpuestas Y1 vs X1,
Y2 vs X2, , Yn vs Xn con las opciones definidas en S1, S2, , Sn
respectivamente.

Los caracteres son respectivamente, los siguientes:

Color Etiqueta Trazo


y amarillo . puntos - slido
m magenta o crculos : a puntos

46
Matlab

c cyan x x-marcas -. guiones y puntos


r rojo + signo ms -- semislidos
g verde * estrellas
b azul s cuadrados
w blanco d diamantes
k negro p estrella de 5 puntas
h estrella de 6 puntas
v tringulo
^ tringulo
< tringulo
> tringulo

EJEMPLO
Graficar f ( x) x 4 x 2 sen( x) en el intervalo [0, 5]

Solucin
>> x=0:0.2:5;
>> y=sqrt(x)+4*x.^2.*sin(x);
>> plot(x,y)

EJEMPLO
Graficar f ( x) e x xsen( x2 ) 2 en el intervalo [ - 3 , 3] con trazo de color rojo
etiquetas cuadradas y lnea punteada.
Solucin
>> x=-3:0.4:3;
>> y=exp(x)-x.*sin(x.^2)+2;
>> plot(x,y,'rs:')

47
Matlab

COLOCACIN DE TTULOS Y TEXTOS

title(texto) Aade el texto como ttulo del grfico en la parte superior del mismo en
grficos 2-D y 3-D
xlabel(texto) Sita el texto al lado del eje x en grfico 2-D y 3-D
ylabel(texto) Sita el texto al lado del eje y en grficos 2-D y 3-D
zlabel(texto) Sita el texto al lado de eje z en un grfico 3-D
text(x,y,texto) Sita el texto en el punto (x,y) dentro del grfico 2-D
text(x,y,z,texto) Sita el texto en el punto (x,y,z) en el grfico 3-D
gtext(texto) Permite situar el texto en un punto seleccionado con el ratn dentro de un
grfico 2-D

LEYENDAS

Colocacin
legend(string1,string2,string3, ...) Crea las leyendas de los grficos correspondientes.

Localizacin
legend(...,'location',loc) Adiciona las leyendas en una ubicacin especfica con respecto a
los ejes. Esta ubicacin loc es de 1x4 posiciones y
combinaciones de acuerdo a:
'North' Dentro del cuadro grafico y arriba.
'South' Dentro y abajo.
'East' Dentro y a la derecha.
'West' Dentro y a la izquierda.
'NorthEast' Dentro y arriba a la derecha (default)
'NorthWest Dentro y arriba a la izquierda
'SouthEast' Dentro y abajo a la derecha
'SouthWest' Dentro y abajo a la izquierda
'NorthOutside' Fuera del cuadro grafico y arriba
'SouthOutside' Fuera y abajo
'EastOutside' Fuera y a la derecha
'WestOutside' Fuera y a la izquierda
'NorthEastOutside' Fuera y arriba a la derecha
'NorthWestOutside' Fuera y arriba a la izquierda
'SouthEastOutside' Fuera y abajo a la derecha
'SouthWestOutside' Fuera y abajo a la izquierda
'Best' Espacio no usado dentro del cuadro grafico
'BestOutside' Espacio no usado fuera del cuadro grafico

EJEMPLO
Graficar en el intervalo [ - 3 , 3] y1 xsen( x 2 ) 2 , y 2 x 4sen( x) , y3=x+0.3[x]
colocando titulo, descripcin de ejes y leyendas.
Solucin:

48
Matlab

>> x=-3:0.4:3;
>> y1=-x.*sin(x.^2)+2;
>> y2=abs(x)+4*sin(x);
>> y3=x+0.3*floor(x);
>> plot(x,y1,x,y2,x,y3);
>> title('Grfico de tres funciones');
>> xlabel('eje x');ylabel('eje y');
>> legend('-x*sen(x)', '|x|+4*sen(x)',
'x+0.3[x]')

>> legend('-x*sen(x)', '|x|+4*sen(x)', 'x+0.3[x]','Location','North')

CONFIGURACIN DE EJES, DOMINIO, MALLADO Y SUPERPOSICIN

Estos comandos permiten manipular los ejes de un grfico, la colocacin del mismo
dentro de la pantalla, su apariencia, su presentacin desde distintos puntos de vista, etc.

axis([xmin xmax ymin ymax]) Sita los valores mximo y mnimo para los ejes X e Y en el
grfico corriente.
axis (auto) Sita los ejes en la escala automtica por defecto (la dada por xmin=min(x),
xmax=max(x) e y libre).
axis (axis) Congela el escalado de ejes en los lmites corrientes, de tal forma que al situar
otro grfico sobre los mismo ejes (con hold en on), la escala no cambie.
V=axis Da el vector V de 4 elementos, conteniendo la escala de grfico corriente.
axis(ij) Sita coordenadas con el origen en la parte superior izquierda del grfico.
axis(square) Convierte el rectngulo de graficado en un cuadrado, con lo que las
figuras se abomban.
axis(equal) Sita el mismo factor de escala para ambos ejes.
axis (normal) Elimina las opciones square y equal.
axis(off) Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el ttulo del
grfico y los textos situados en l con text y gtext.
axis(on) Coloca de nuevo las etiquetas, marcas y rejillas de los ejes.

49
Matlab

ginput(n) Permite recuperar las coordenadas de n puntos de un grafico mediante ratn o


teclado.
grid Sita rejillas en los ejes de un grfico 2-D o 3-D. La opcin grid on coloca las
rejillas y grid off las elimina. La opcin grid permuta entre on y off
hold Permite mantener el grfico existente con todas sus propiedades, de modo que el
siguiente grfico que se realice se site sobre los mismos ejes y se superponga al
existente. La opcin hold on activa la opcin y hold off la elimina. La opcin hold
permuta entre on y off. Vlido para 2-D y 3-D

EJEMPLO
Graficar f ( x) x x 2 sen( x) y g(x)=senx+[x2] en el intervalo [0, 5] dentro de una
region rectangular 2,7 30,30
Solucin
>> x=0:0.2:5;
>> y1=sqrt(x)+x.^2.*sin(x);
>> plot(x,y1)
>> hold on %superposicin
>> y2=sin(x)+floor(x.^2);
>> plot(x,y2)
>> axis([-2 7 -30 30])
>> grid %mallado

SELECCIN DE LA VENTANA O SUBVENTANA DE EXHIBICIN

figure(n) Crea la n-sima ventana de figura.


subplot(m,n,p) Divide la ventana grfica en mxn subventanas y coloca el grfico corriente
en la ventana p-sima.

EJEMPLO
Para crear 2x3 = 6 subventanas y colocar el puntero en la posicin 4, se procede en
Matlab como:

>>subplot(2,3,4)

50
Matlab

>> x=0:pi/40:2*pi;plot(x,sin(x))

FUNCIN FPLOT

fplot('fun',limits) Plotea 'fun' entre limites [xmin xmax] o limites [xmin xmax ymin
ymax]. 'fun' es el nombre de una funcin M-file o una cadena con
variable x tal como 'sin(x)', 'diric(x,10)' o '[sin(x),cos(x),exp(x)]'.
fplot('fun',limits,S) Plotea 'fun' con las opciones definidas en S.
fplot('fun',limits,tol) Plotea 'fun' con el error relativo con tolerancia tol (por defecto
es 2*10-3).
fplot('fun',limits,tol,S) Plotea 'fun' con tolerancia tol y con las opciones def. en S.
fplot('fun',limits,n) Con n 1. Plotea 'fun' con un mnimo n 1 de puntos. El mximo
tamao de paso esta restringido por xmax-xmin .
n
[X,Y] = fplot('fun',limits) Retorna las abscisas y ordenadas para 'fun' en X e Y. No
hace la grfica.

EJEMPLO
Graficar f ( x) xsen( x) 2 en el intervalo [0, 5].
>> fplot('-x.*sin(x)+2',[0 5])

EJEMPLO
Graficar f ( x) xsen( x), g ( x) cos x x, h( x) x 2 3x 2 en el intervalo [0, 5].

51
Matlab

>> fplot('[-x*sin(x)+2,cos(x)-x,x^2-3*x+2]',[0 5])

2. GRFICOS LOGARTMICOS Y SEMILOGARTMICOS


Los comandos que habilita Matlab para representar grfico con escalas logartmicas son
los siguientes:
loglog(X,Y) Realiza los mismos grficos que plot(X,Y), pero con escala logartmica en
los dos ejes. El comando loglog presenta las mismas variantes y admite las
mismas opciones que el comando plot.
semilogx(X,Y) Realiza los mismos grficos que plot(X,Y) , pero con escala logartmica
en el eje x, y escala normal en el eje y.
semilogy(X,Y) Realiza los mismos grficos que plot(X,Y), pero con escala logartmica
en el eje y, y escala normal en el eje x.

EJEMPLO
>> x=0:0.2:5;
>> semilogy(x,10.^x)

52
Matlab

3. GRFICOS EN COORDENADAS POLARES


Matlab habilita el comando especfico polar, que representa funciones en coordenadas
polares. Su sintaxis es la siguiente:
polar (,r) Representa la curva en coordenadas polares r = r()
polar (,r,S) Idem con el estilo de lnea dado por S (ver la instruccin plot)
EJEMPLO
Graficar el cardiode.
>> a=0:pi/40:2*pi;polar(a,1-sin(a))

EJEMPLO
Graficar
a) La rosa de 4 ptalos horizontal. b) La funcin polar r = 1 2*cos()
>> a=0:pi/40:2*pi; >> polar(a,1-2*cos(a))
>> polar(a,3*cos(2*a))

EJEMPLO
Graficar la rosa de 7 ptalos horizontal.
>> b=0:pi/100:2*pi;
>> polar(b,3*cos(7*b))

53
Matlab

. GRFICOS ESTADSTICOS
HISTOGRAMAS
bar(Y) Dibuja el grfico de barras relativo al vector Y
bar(X,Y) Dibuja el grfico de barrar relativo al vector Y cuyos elementos son
especificados a travs del vector X
EJEMPLO
>> y=[2 7 4 6 19 2];
>> bar(y)

EJEMPLO
>> x=[2 5 7 8 9 12];
>> y=[2 7 4 6 19 2];
>> bar(x,y)

stairs(Y) Dibuja el grfico escalonado relativo al vector Y


stairs(X,Y) Dibuja el grfico escalonado relativo al vector Y cuyos elementos son
especificados a travs del vector x.
hist(Y) Dibuja el histograma relativo al vector Y utilizando 10 rectngulos
verticales de igual base.
hist(Y,n) Dibuja el histograma relativo al vector Y utilizando n rectngulos
verticales de igual base.
hist(X,Y) Dibuja el histograma relativo al vector Y utilizando rectngulos verticales
cuyas bases miden lo especificado en los elementos del vector X

54
Matlab

EJEMPLO
>> y=[2 1 3 2 1 2 3 1 2 3 2 1 2 3 4 5 5 3];
>> hist(y)

errorbar(x,y,e) Realiza el grfico del vector x contra el vector y con los errores
especificados en el vector e. Pasando por cada punto (xi,yi)
stem(Y) Dibuja el grfico de racimo relativo al vector Y. Cada punto del vector Y
es unido al eje x por una lnea vertical
stem(X,Y) Dibuja el grfico de racimo relativo al vector Y cuyos elementos son
especificados a travs del vector X.
pie(X) Realiza el grfico de sectores relativo al vector de frecuencias X.
pie(X,Y) Realiza el grfico de sectores relativo al vector de frecuencias X
desplazando hacia fuera los sectores en los que Yi 0

EJEMPLO
>> x=[1,4,0.5,2.5,2]; pie(x)

5. GRFICOS DE RELACIONES
ezplot(f) Plotea f sobre el dominio por defecto -2 < x < 2 .
ezplot(f, [a,b]) Plotea f sobre a < x < b
ezplot(f, [xmin,xmax,ymin,ymax]) Plotea f sobre xmin< x <xmax, ymin< y <ymax.
ezplot(x,y) Plotea en coordenadas paramtricas la curva plana
x= x(t), y= y(t) sobre el dominio por defecto
-2 < x < 2 .
ezplot(x,y, [tmin,tmax]) Plotea x = x(t) , y = y(t) over tmin < t < tmax.
Donde f puede ser una funcin estandar f = f(x) una funcin implicita f = f(x,y) = 0.

55
Matlab

ezpolar(f) Plotea la curva polar r = f(theta) sobre el dominio por


defecto 0 < theta < 2 .
ezpolar(f,[a,b]) Plotea f sobre a < theta < b.

EJEMPLOS

>> %funciones estandar


>> ezplot('cos(x)')
>> ezplot('cos(x)', [0, pi])

>> %funciones implicitas


>> ezplot('1/y-log(y)+log(-1+y)+x - 1')
>> ezplot('x^2 + y^2 - 1',[-1.25,1.25]); axis equal
>> ezplot('x^3 + 2*x^2 - 3*x + 5 - y^2')

>> %En coordenadas paramtricas


>> ezplot('sin(t)','cos(t)')
>> ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])
>> ezplot('sin(3*t)','cos(t)',[0,2*pi])

56
Matlab

EJEMPLOS
Grficos con dominio por defecto
>>ezpolar('cos(5*t)') >>ezpolar('1 + 2*sin(t/2)') >>ezpolar('1 - 2*sin(3*t)')

Graficos con dominio indicado


>>ezpolar('sin(2*t)*cos(3*t)',[0,pi]) >>r = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))';
>>ezpolar(r,[-pi/2,3*pi/2])

57
Matlab

5. IMAGENES
F = imread(filename) asigna el contenido del archive imagen a la variable matricial F.
Soporta los archivos *.jpeg, *.tiff, *.gif, *.png, *.hdf, *.ico, *.bmp, etc
image(F) visualiza la matriz C como una imagen en una ventana de figura.
>>F=imread('pcblack.bmp');image(F);
>>axis off %desactiva los ejes

EJERCICIOS RESUELTOS
1. Graficar el polinomio p1 = 2x3 x 7 en el intervalo [10 , 10].
2. Graficar la funcin xsen(x2) en el intervalo [ - 2 , 2].
3. Graficar las funciones 3sen(x) y e-0.2 x sobre un mismo grfico, para
x=0:0.1:4. Usar zoom y gtext para nombrar uno de los puntos de
interseccin de dichas funciones.
Solucin:
1. Graficar el polinomio p1 = 2x3 x 7 en el intervalo [10 , 10].

>>p1=[2,0,-1,7]
>>x=-10:0.5:10;y=polyval(p1,x);
>>plot(x,y)

2. Graficar la funcin xsen(x2) en el intervalo [ - 2 , 2].

>> fplot('x*sin(x^2)',[-2*pi 2*pi])

58
Matlab

59
Matlab

3. Graficar las funciones 3sen(x) y e-0.2 x sobre un mismo grfico, para


x=0:0.1:4. Usar zoom y gtext para nombrar uno de los puntos de
interseccin de dichas funciones.

>>x=0:0.1:4;
>>plot(x,3*sin(pi*x))
>>hold on
>>plot(x,exp(-0.2*x))

EJERCICIOS PROPUESTOS
1. Crear el archivo tipo texto datos.txt con los datos
1.0 7.5
2.5 4.0
3.2 5.0
3.5 5.5
2.0 6.3
7.8 6.2
8.1 6.0
9.7 5.0
10.3 3.0
2. Graficar usando este archivo la 1ra columna versus la 2da columna a travs
de una poligonal lineal, use textread para leer los datos de este archivo.

3. Grafique:
a. x2 y2 3
b. x + y = 10

4. Grafique las funciones polares:


a) r1 2sen(3), 0 : / 20 : 2
b) r2 5, 0 : / 20 : 2
c) r3 2 sen(), 0 : / 20 : 2

5. Use subplot para dividir la ventana en 1x2 para luego graficar en ellas las
siguientes curvas paramtricas (R R2).
x1 sen(t) x sen(t)
,t [0,2] 1 ,t [0,2]
y1 sen(2t) y1 cos(t)

60
Matlab

CAP 6. GRFICOS TRIDIMENSIONALES (3-D)


El Matlab posee muchos recursos para visualizacin de datos en 3D, como trazado de
curvas, trazado de superficies, contornos y grficos de densidad, permite el control de
colores, sombreados y otras caractersticas de los grficos, tambin soporta grficos
animados.

1. CURVAS 3D
plot3(X,Y,Z) grfica la terna X, Y, Z dndonos as una curva en el espacio.
plot3(X,Y,Z,S) grfica la terna X, Y, Z dndonos as una curva en el espacio con
las caractersticas S igual que plot.
ezplot3(x,y,z) Grfica en coordenadas paramtricas x = x(t), y = y(t), z = z(t)
sobre el dominio por defecto 0 < t < 2 .
ezplot3(x,y,z ,[tmin,tmax]) Grfica x=x(t), y=y(t), z=z(t) sobre tmin < t < tmax.

EJEMPLO
>> x=0:0.8:8,y=x.^2,z=sqrt(x)
x=
0 0.8000 1.6000 2.4000 3.2000 4.0000 4.8000 5.6000 6.4000 7.2000 8.0000
y=
0 0.6400 2.5600 5.7600 10.2400 16.0000 23.0400 31.3600 40.9600 51.8400 64.0000
z=
0 0.8944 1.2649 1.5492 1.7889 2.0000 2.1909 2.3664 2.5298 2.6833 2.8284
>> plot3(x,y,z)
>> grid

EJEMPLO
>> ezplot3('cos(t)', 't * sin(t)', 'sqrt(t)', [0,6*pi])

61
Matlab

2. GENERACIN DE MALLADOS EN EL PLANO


meshgrid
Dados dos vectores xa e ya, conteniendo las coordenadas de los ejes x e y, retorna x e y,
conteniendo la Malla de coordenadas del mallado en el plano en una regin rectangular
correspondiente a x e y.
>>xa=1:3,ya=4:6 >>[x, y]=meshgrid(xa,ya)
xa = x=
1 2 3 1 2 3
ya = 1 2 3
4 5 6 1 2 3
y=
4 4 4
5 5 5
6 6 6

Explicacin:

Como xa = [1 2 3], se tiene en el eje


x 3 puntos y como ya =[4 5 6] en el
eje se tienen 3 puntos, lo que
mediante meshgrid genera un
mallado de nueve puntos los cuales se
encuentran en x e y generados por
meshgrid.

62
Matlab

EJEMPLO

Generar el mallado cuadrangular indicado, usando meshgrid.

Solucin:
>> xa=0:0.5:2,ya=0:0.4:2
xa =
0 0.5000 1.0000 1.5000 2.0000
ya =
0 0.4000 0.8000 1.2000 1.6000 2.0000
>> [x,y]=meshgrid(xa,ya)
x=
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
y=
0 0 0 0 0
0.4000 0.4000 0.4000 0.4000 0.4000
0.8000 0.8000 0.8000 0.8000 0.8000
1.2000 1.2000 1.2000 1.2000 1.2000
1.6000 1.6000 1.6000 1.6000 1.6000
2.0000 2.0000 2.0000 2.0000 2.0000

63
Matlab

3. SUPERFICIES
Un grfico de malla tridimensional viene definido por una funcin z = f(x,y), de tal
forma que los puntos de la superficie se representan sobre una rejilla, resultado de
levantar los valores de z dados por f(x,y) sobre los correspondientes puntos del plano
(x,y). El aspecto de un grfico de malla es como una red de pesca, con los puntos de la
superficie sobre los nudos de la red. Realmente, es un grfico de superficie cuyo grafo
tiene forma de red.

El primer paso para representar una funcin de dos variables z = f(x,y) mediante su
grfico de superficie, es utilizar el comando meshgrid, que bsicamente define la matriz
de puntos (X,Y) sobre los cuales se evala la funcin de dos variables para hacer su
presentacin grfica.
Para representar un grfico de malla, se utiliza el comando mesh y sus variantes, cuya
sintaxis es la siguiente:
mesh(X,Y,Z) Representa el grfico de malla de la funcin z=f(x,y), dibujando las lneas
de la rejilla que componen la malla.
meshz(X,Y,Z) Representa el grfico de malla de la funcin z=f(x,y) con una especie de
cortina o teln en la parte inferior
waterfall(X,Y,Z) Representa el grfico de cascada de la funcin z=f(x,y).
surf(X,Y,Z) Representa el grfico de superficie de la funcin z=f(x,y)
surfl(X,Y,Z) Representa el grfico de superficie de la funcin z=f(x,y).

Los grficos de contorno de curvas de nivel:


contour(Z) Dibuja el grfico de contorno (curvas de nivel) para la matriz Z. El nmero
de lneas de contorno a utilizar se elige automticamente
contour(Z,n) Dibuja el grfico de contorno (curvas de nivel) para la matriz Z usando n
lneas de contorno
contour(x,y,z,n) Dibuja el grfico de contorno (curvas de nivel) para la matriz Z usando en
los ejes X e Y el escalado definido por los vectores x e y (n lneas de
contorno)
contour3(Z), contour3(Z,n), contour3(x,y,z,n) Dibujan los grficos de contorno en 3
dimensiones
pcolor(X,Y,Z) Dibuja un grfico de contorno (curvas de nivel) para la matriz (X,Y,Z)
utilizando una representacin basada en densidades de colores. Suele
denominarse grfico de densidad.

Combinaciones del grfico de la superficie y las curvas de nivel:


meshc(X,Y,Z) Representa el grfico de malla de la funcin z=f(x,y) junto con el grfico
de contorno correspondiente (curvas de nivel proyectadas sobre el plano
XY)
surfc(X,Y,Z) Representa el grfico de superficie de la funcin z=f(x,y) junto sus curvas
de nivel.

EJEMPLO
Graficar el paraboloide z x 2 y 2 en el dominio [ -5, 5 ]x[ -5, 5 ]

64
Matlab

>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
>> z=x.^2+y.^2;
>> surf(x,y,z)

EJEMPLO
Graficar usando mesh, surf, contour y contour3 z x 2 y 2 en el dominio [-5, 5]x[-5, 5]
Solucin:
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
>> z=x.^2 y.^2;
>> subplot(2,2,1);
>> mesh(x,y,z)
>> subplot(2,2,2);
>> surf(x,y,z)
>> subplot(2,2,3);
>> contour(x,y,z);
>> subplot(2,2,4);
>> contour3(x,y,z);

SOMBREADO Y COMBINACIONES DE COLOR


shading Diversos estilos de sombreado para colormap Combinacin de colores para la
la superficie. superficie (mapeo de colores). Combinaciones
shading flat
shading interp
shading faceted (por defecto).

GRFICO DE LA FUNCIN PREDETERMINADA PEAKS

peaks es la funcin de 2 variables de presentacin del Matlab, para graficarla use mesh, surf,
pcolor, contour, etc.
z = peaks; [x,y,z] = peaks;
z = peaks(n); [x,y,z] = peaks(n);
z = peaks(v); [x,y,z] = peaks(v);
z = peaks(x,y);
EJEMPLO

65
Matlab

>> z=peaks(25); surf(z); colormap(pink)

EJEMPLO
>> z=peaks(20); mesh(z); shading flat; colormap(hot)

4. COORDENADAS CILNDRICAS
Graficar el paraboloide z x 2 y 2 en el dominio rectangular [ -5, 5 ]x[ -5, 5 ] es una
situacin donde no estn tan claras las propiedades geomtricas del paraboloide, en
realidad en este caso es ms recomendable graficar usando un dominio circular que por
ejemplo podra ser un circulo de radio 5 centrado en el origen de coordenadas. Surge la
pregunta natural, cmo hacemos un mallado en el dominio circular?, el cual nos servir
para levantar el paraboloide. La respuesta es sencilla: Solo hay que usar el cambio de
coordenadas cilndricas a cartesianas.

COORDENADAS CILNDRICAS

x r cos(u )

y rsen(u ) , u [, ], r [r1, r2 ]
z z

EJEMPLO
Graficar el paraboloide z x 2 y 2 en el dominio circular de radio 5 y centrado en el
origen de coordenadas.

66
Matlab

>> [r,u]=meshgrid(0:0.25:5,0:pi/20:2*pi);
>> x=r.*cos(u);
>> y=r.*sin(u);
>> z=x.^2+y.^2;
>> surf(x,y,z)

5. COORDENADAS ESFRICAS
COORDENADAS ESFRICAS

x rsen(v)cos(u )

y rsen(v) sen(u ), u [1 , 2 ], v 1 , 2
z r cos(v)

EJEMPLO
Graficar parte del hemisferio superior
indicado con radio = 5.

>> [u,v]=meshgrid(pi/3:pi/20:7*pi/4,0:pi/20: pi/2);


>> x=5*sin(v).*cos(u);
>> y=5*sin(v).*sin(u);
>> z=5*cos(v);
>> mesh(x,y,z)

67
Matlab

6. COORDENADAS PARAMTRICAS
COORDENADAS PARAMTRICAS EN SUPERFICIES

x x(u, v)

y y (u, v), u [u1 , u2 ], v v1 , v2
z z (u, v)

COORDENADAS PARAMTRICAS EN CURVAS 3D

x x(t )

y y (t ), t [t1 , t2 ]
z z (t )

7. CILINDROS, ESFERAS Y ELIPSOIDES

[x,y,z]= cylinder(R,N) retorna las coordenadas x, y, z necesarias para la


generacin de un cilindro con altura 1, radio R y
nmero de puntos en cada circunferencia de N (20
por default).
cylinder(R,N) idem pero traza solo la grafica.
[x,y,z]= sphere(N) retorna las coordenadas x, y, z necesarias para la
generacin de una esfera con radio 1. El nmero de
ternas es (N+1)x(N+1) (N=20 por default).
sphere(N) idem pero traza solo la grafica.
[x,y,z]= ellipsoid(xc,yc,zc,xr,yr,zr,N) retorna las coordenadas x, y, z necesarias
para la generacin de una elipsoide centrada en
(xc,yc,zc) con semiejes xr,yr,zr. El nmero de
ternas es (N+1)x(N+1) (N=20 por default).
ellipsoid(xc,yc,zc,xr,yr,zr,N) idem pero traza solo la grafica.

68
Matlab

EJEMPLO
>> cylinder(3,50) >> sphere >>ellipsoid(0,0,0,10,5,2)

EJERCICIOS DESARROLLADOS
1. Grafique usando mesh, surf, contour y contour3, z1 x 2 2 y 2

>> [x,y]=meshgrid(-3:0.2:3,-3:0.2:3);
>> mesh(x,y,x.^2-2*y.^2)
>> surf(x,y,x.^2-2*y.^2)
>> contour(x,y,x.^2-2*y.^2)
>> contour3(x,y,x.^2-2*y.^2)

69
Matlab

2. Grafique usando surf, z2 sen( x) cos( y)

>> [x,y]=meshgrid(-3:0.2:3,-3:0.2:3);
>> z=floor(sin(x))+cos(y);
>> surf(x,y,z)

70
Matlab

71
Matlab

EJERCICIOS PROPUESTOS
2xy
1. Grafique usando mesh, surf, contour y contour3 z3 . Para x = 0.25:0.25:5,
x y2
2

y= 0.25:0.25:5

2. Grafique x y z 2 sen(), 0 : / 20 : 2

3. Use subplot para dividir la ventana en 1x2 para luego graficar en cada una de ellas las
siguientes curvas paramtricas (R R3).

x sen(t )

i. y sen(2t ) , t [0, 2]
z 2t

x sen(t )

b) y cos(t ) , t [0, 2]
z cos(t )

3. Haga la grafica de la parte de la figura con radio = 5.

4. Grafique el Toroide
x cos(t )(4 cos(v))

y sen(t )(4 cos(v)), t [0, 2], v 0, 2
z sen(v)

72
Matlab

CAP 7. PROGRAMACIN EN MATLAB

1. OPERADORES LGICOS Y RELACIONALES

Las condiciones se construyen con operadores relacionales y lgicos, los cuales son:

Smbolo Operador Relacional Smbolo Operador Lgico


> mayor que ~A Negacin (NOT)
< menor que A&B Conjuncin (AND)
== igual que A|B Disyuncin (OR)
~= diferente que xor(A,B) Disyuncin exclusiva (XOR)
<= menor o igual que
>= mayor o igual que

Podemos imponer ms de una condicin, o condiciones complejas, utilizando los


operadores relacionales (condiciones cuyo resultado es cierto o falso) combinados con
operadores lgicos (sirven como nexo entre varios relacionales).

2. PROGRAMAR EN MATLAB
Al igual que en los lenguajes de alto nivel, MATLAB permite crear programas utilizando
programacin estructurada. Para ello cuenta con condicionales, bucles y funciones.
Asimismo utiliza muchos de los recursos de la programacin orientada a objetos.

ENTRAR EN EL ENTORNO DE EDICIN


MATLAB tiene integrado su propio editor, al que se accede desde el men File,
seleccionando New, si vamos a crear un nuevo archivo debemos elegir la opcin
m-file u Open si vamos a un archivo creado previamente.

Pero MATLAB slo puede ejecutar funciones (archivos- m) que estn en sus libreras
o en el directorio actual; por ello es necesario cambiar al directorio donde salvamos
nuestro archivo antes de poder ejecutarlo. Para ver en que directorio estamos se
emplea la orden pwd. Mientras que para cambiar de directorio de trabajo se usa
cd, por ejemplo para cambiar al directorio mio basta poner cd C:\mio. Tambin es

73
Matlab

posible realizar el cambio mediante la opcin Set Path del men File, pulsando
Browser.

SCRIPTS
Un script se define mediante un archivo- m, el cual esta formado por un conjunto de
sentencias pero no tiene la cualidad de ser una funcin como y = sin(x) que posee
argumentos de salida.

FUNCIONES
Una funcin se define mediante un archivo- m, cuyo nombre coincide con el de la
funcin. La primera lnea ejecutable debe tener la palabra function. Su sintaxis es
function argumentos_salida= nombre_funcin (argumentos_entrada)
seguida de las instrucciones necesarias. Cuando hay ms de un argumento de salida,
stos deben ir entre corchetes y separados por comas. Por ejemplo:

Comentarios y lneas no procesadas. Los comentarios y lneas que son solo


explicatorios y que no desea el usuario que se procese se inician con '%', y anulan la
lnea desde la posicin del '%' hasta el final de la lnea para que no se procese.
Comando return. La funcin puede finalizarse en cualquier punto utilizando la
instruccin return.
Variables locales. Las variables definidas en la funcin (salvo los argumentos) son
locales.
Variables globales (externas). Para que el valor de una variable sea compartido por
varias funciones de forma externa se emplea la instruccin global, cuya sintaxis es
global variable, y debe aparecer en todas las funciones que la compartan.

IMPLEMENTACIN DE UN PROGRAMA
Calcule el valor de la hipotenusa de un tringulo rectngulo a partir de sus dos catetos.
a) Cree un Script.
b) Cree una Funcin.
Solucin:
a) SCRIPT.
Crear el m-archivo
Desde el men File, seleccionamos New, y vamos a crear un nuevo archivo
eligiendo la opcin m-file, luego digitamos el programa como sigue:

74
Matlab

Con [Ctrl.]+[S] guardarlo como: hipot.m

Ejecucin en la ventana de comandos


>> hipot
cateto a=2
cateto b=4
hip =
4.4721

b) FUNCIN.
Crear el m-archivo

Con [Ctrl.]+[S] guardarlo como: hipotenusa.m

Ntese que este nombre del archivo es el mismo que de la funcin.


75
Matlab

Ejecucin en la ventana de comandos


>> h= hipotenusa(3,4)
h=
5

En resumen:
PROGRAMAS EN MATLAB

Archivos
nombre.m

Script Funcin

>> hipot Ejecucin en >> h= hipotenusa(3,4)


cateto a=2 h=
cateto b=4
la ventana de
5
hip = comandos
4.4721

IMPLEMENTACIN DEL HELP PARA EL PROGRAMA

Para implementar la ayuda en lnea se usan las primeras lneas del fichero para
comentarios (inicindolas con '%'), explicando cmo debe usarse la funcin y sus
argumentos (tanto de entrada como de salida). As, dicha definicin ser visible mediante
la instruccin help nomfuncion.

EJEMPLO
Construyo el programa que calcule el permetro del tringulo, implementando tambin
su ayuda.

76
Matlab

Muestro la ayuda en lnea de la funcin perimtri, digitando en la ventana de comandos:

Ejecuto la funcin perimtri cuando los lados son 2, 3 y 4.


>> perim = perimtri(2,3,4)
perim =
9

4. ESTRUCTURAS DE CONTROL CONDICIONADAS


SENTENCIA if
Permite seleccionar entre dos conjuntos alternativos de instrucciones dependiendo de que
se verifique una condicin lgica (cuyo resultado es cierto o falso). Su sintaxis es de la
forma:

if condicin
Instrucciones que deben ejecutarse si la condicin es
verdadera
else
Instrucciones a ejecutar si la condicin es falsa
end

77
Matlab

Cuando no hay instrucciones que ejecutar si la condicin


no se cumple, la sintaxis anterior se reduce a

if condicin
Instrucciones que deben ejecutarse
end

Al contrario, cuando se encadenan varios bloques alternativos, la sintaxis queda como:


if condicin_1
Instrucciones a ejecutar cuando se verifica la condicin 1
elseif condicin_2
Instrucciones a ejecutar cuando no se verifica la condicin 1 y s la condicin_2
elseif condicin_3
Instrucciones a ejecutar cuando no se verifica la condicin 1- condicin 2 y s la condicin_3

else
Instrucciones a ejecutar cuando no se verifican las condiciones anteriores
end

INSTRUCCIONES PARA ARGUMENTOS DE ENTRADA Y SALIDA


Una funcin utiliza las siguientes instrucciones para verificar el nmero de argumentos:
nargin nmero de argumentos de entrada que el usuario ha pasado a la funcin.
nargout nmero de argumentos de salida que el usuario desea recibir de la funcin

LA FUNCIN error.
Muestra mensajes de error.
error('message') Muestra un mensaje de error y finaliza el programa.
error('message',a1,a2, ...) Muestra un mensaje de error conteniendo formatos similar
al printf del c++ o al fprintf del Matlab y finaliza el programa.

EJEMPLO

>> error('Valores Inconsistentes')


??? Valores Inconsistentes

EJEMPLO

El siguiente programa calcula el permetro de un triangulo e indica error en la funcin


perimtri(a,b,c) cuando no hay 3 argumentos (lados).

78
Matlab

Solucin:

Creacin de la funcin.

Grabar como: perimtri.m


Ejecucin en la ventana de comandos
>> perim = perimtri(2,3,4) >> perim = perimtri(2,3)
perim = ??? Error using ==> perimtri
9 Nmero de argumentos incorrecto, debe introducir 3 argumentos

EJEMPLO
El siguiente programa analiza si son iguales o diferentes las matrices, vectores o
nmeros.
Ejecucin:
>> A=[1 2;3 4],B=[5 6;7 8]
A=
1 2
3 4
B=
5 6
7 8
>> compara(A,B)
ans =
distintas

Pero tambin se podra haber usado:


if A == B, 'iguales'
else, 'distintas'
end

EJEMPLO
El siguiente programa analiza el tipo de tringulo que se tiene, dados sus tres lados, de
acuerdo con el siguiente algoritmo
a
b

79
Matlab

Entrada: coeficientes a, b y c (lados del tringulo)


Salida: tipo de tringulo
Paso 1: Verificar el nmero y coherencia de los argumentos
Paso 2: Ordenar los lados para comprobar si pueden formar un tringulo
Paso 3: SI la suma de dos de ellos es igual al tercero: Tringulo llano
Paso 4: SI los tres son iguales: Tringulo Equiltero
Paso 5: SI los dos son iguales: Tringulo Issceles
Paso 6: SI los tres son distintos: Tringulo Escaleno
Paso 7: SI verifican el Teorema de Pitgoras: idem + rectngulo
Crear la funcin result=triangulo(a,b,c) en el Matlab que realice esta accin.
Solucin:

Creacin de la funcin.
Desde el men File, seleccionamos New, y vamos a crear un nuevo archivo
eligiendo la opcin m-file, luego digitamos el programa como sigue:
function r=triangulo(a,b,c);
if nargin ~= 3
error('Nmero de argumentos incorrecto, debe ser 3 datos');
end
x=sort([a b c]);
if ~isempty(find(x<0))
error('Valores inconsistentes de algn lado');
end
if (x(3)>x(1)+x(2))
error('No forman un triangulo');
elseif (x(3)==x(1)+x(2))
r='Triangulo Llano';
else
if (x(1)==x(2) & x(2)==x(3))
r='Triangulo Equilatero';
return;
elseif (x(1)==x(2) | x(2)==x(3))
r='Triangulo Isosceles';
else
r='Triangulo Escaleno';
end
if (hipotenusa(x(1),x(2))==x(3))
r=[r,' rectangulo'];
end
end

80
Matlab

Grabarla como: triangulo.m


Ejecucin en la ventana de comandos
>> result = triangulo(3,4,5) >> r=triangulo(sqrt(2), sqrt(2), 2)
result = r=
Triangulo Escaleno rectangulo Triangulo Isosceles rectangulo
>> x=10*rand(1),y=10*rand(1),z=10*rand(1) >> x=1.2105, y=4.5075, z=7.1588
x= x=
6.0684 1.2105
y= y=
4.8598 4.5075
z= z=
8.9130 7.1588
>> triangulo(x,y,z) >> r=triangulo(x, y, z)
ans = ??? Error using ==> triangulo
Triangulo Escaleno No forman un triangulo

Si queremos verificar la cantidad de argumentos de entrada y salida de la funcin


triangulo.m:
>> nargin('triangulo')
ans =
3
>> nargout('triangulo')
ans =
1

81
Matlab

SENTENCIA switch

Permite seleccionar entre mltiples posibilidades dependiendo de que la expresin se


encuentre dentro de los conjuntos definidos por case. Su sintaxis es de la forma:

switch expresion % (escalar o cadena)


case conjunto1
sentencias % se ejecutan si expresion conjunto1
case conjunto2
sentencias % se ejecutan si expresion conjunto2
:
otherwise
sentencias % se ejecutan si expresion no esta en ningn conjunto
end

Ntese que los conjuntos se delimitan con llaves y los elementos de este se separan por
comas tal como a, b, c,... , si el conjunto solo tiene un elemento no necesita colocrsele
llaves.
EJEMPLO

El siguiente programa determina la condicin y tipo de estudiante segn su promedio de


acuerdo a la siguiente tabla.
Promedio Condicin Tipo
0..11 Desaprobado Malo
12..13 Aprobado Regular
14..16 Aprobado Bueno
17..20 Aprobado Excelente

Creando la funcin

82
Matlab

Ejecucin en la ventana de comandos:


>> [cond,tipo]=reporte(14) >> [cond,tipo]=reporte(7) >> [cond,tipo]=reporte(10.7)
cond = cond = ??? Error using ==> reporte
Aprobado Desaprobado Incorrecto, debe ser un numero entero
tipo = tipo = >> [cond,tipo]=reporte(24)
Bueno Malo ??? Error using ==> reporte
Nota incorrecta, debe ser de 0 .. 20

NOTA
Una variante donde es posible entrar notas decimales y que el programa lo redondee y
por ejemplo si Ud. Introduce 10.5 dara de resultado Aprobado Regular, seria con el
siguiente cdigo:
function [cond,tipo] = reporte(n);
if nargin ~= 1, error('Numero de argumentos incorrecto') ,end
if (n<0 | n>20), error('Nota incorrecta, debe ser de 0 .. 20') ,end
cond='Aprobado';
tipo='Malo';
n=round(n); %cdigo que redondea la nota
switch n
case {0,1,2,3,4,5,6,7,8,9,10}
cond='Desaprobado';
case {11,12,13}
tipo='Regular';
case {14,15,16}
tipo='Bueno';
case {17,18,19,20}
tipo='Excelente';
end
As si se ejecuta en la ventana de comandos, se tendr:
>> [c,t]=reporte(10.5) >>[c,t]=reporte(13.7)
c= c=
Aprobado Aprobado
t= t=
Regular Bueno
83
Matlab

SENTENCIA try catch

La sentencia try catch end permite gestionar los errores que se producen en
tiempo de ejecucin. Su sintaxis es:

try
Instrucciones1
catch
Instrucciones2
end

En el caso de que durante la ejecucin del bloque Instrucciones1 se produzca un error, el


control de la ejecucin se transfiere al bloque Instrucciones2. Si la ejecucin del bloque
Instrucciones1 transcurriera normalmente, Instrucciones2 no se ejecutara.
La instruccin lasterr se utiliza para ver la causa del ltimo error, es decir lasterr
devuelve una cadena de caracteres con el mensaje correspondiente al ltimo error que se
ha producido.

EJEMPLO
Programa que adivina la edad.

Ejecucin en la ventana de comandos:


>> adivina >> adivina
Qu edad tengo? Qu edad tengo?
Primera oportunidad Primera oportunidad
edad=15 edad=14
Felicitaciones! ... Adivinaste en la primera Segunda oportunidad
edad=15
Felicitaciones! ... Adivinaste en la segunda
>> adivina >> lasterr
Qu edad tengo? ans =

84
Matlab

Primera oportunidad Error using ==> adivina


edad=14 je je
Segunda oportunidad
edad=16
No adivinaste ... fue tu ltima oportunidad
5. APROXIMACIONES Y PRECISIN EN LOS CLCULOS
Matlab representa los resultados con exactitud, pero aunque internamente siempre trabaja
con clculos exactos para no arrastrar errores de redondeo, pueden habilitarse diferentes
formatos de representacin aproximada, que en ocasiones facilitan la interpretacin de
los resultados. A continuacin se citan los comandos que permiten aproximaciones
numricas.

format long Ofrece los resultados con 16 cifras decimales.


format short Ofrece los resultados con 4 cifras decimales. Se trata del formato por defecto de Matlab.
format long e Ofrece los resultados con 16 decimales ms potencias de 10.
format short e Ofrece los resultados con 4 decimales ms potencias de 10.
format bank Ofrece los resultados con 2 cifras decimales.
format rat Ofrece los resultados en forma de nmero racional aproximado.
format + Ofrece el signo de los resultados (+, - o 0).
format hex Ofrece los resultados en el sistema hexadecimal.
vpa operaciones n Ofrece el resultado de las operaciones con n dgitos decimales exactos.
numeric(expr) Ofrece el valor de la expresin de forma numrica aproximada segn el formato actual
activo.
digits(n) Ofrece los resultados con n dgitos exactos.

SISTEMAS DE NUMERACIN
Matlab permite trabajar con sistemas de numeracin de base cualquiera, siempre y
cuando se disponga del Toolbox extendido de matemticas simblica. Adems, permite
expresar los nmeros en las diferentes bases. Las funciones de trabajo con sistemas de
numeracin en diferentes bases que implementa Matlab son las siguientes:
dec2bin Convierte en nmero decimal especificado a base 2 (binaria)
dec2hex Convierte el nmero decimal especificado a base 16 (hexadecimal)
dec2base Convierte el nmero decimal especificado a la base indicada
bin2dec Convierte el nmero binario especificado a base decimal
hex2dec Convierte el nmero hexadecimal especificado a base decimal
base2dec Convierte el nmero de la base especificada a base decimal

EJEMPLO
FORMATO REPRESENTACIN
"formato largo" de 3 sqrt(3);format long; ans
"formato racional" de 3 format rat; ans
"con 10 cifras decimales" de 3 vpa(ans,10)
"con 100 cifras decimales" de vpa 'pi' 100
"con 20 cifras decimales" de digits(20); vpa '173/13'
"Representacin binaria" de 1234 dec2bin(1234)
"Representacin en base 10" de un valor en base 16 base2dec(BF34A,16)

EJEMPLO

85
Matlab

Para ver el formato actual usar get(0,'format')


>> format bank;22/3
ans =
7.33
>> get(0,'format')
ans =
bank

VARIABLES ESPECIALES
En Matlab existen variables de uso comn, cuyo valor viene ya preasignado.
pi 3.1415926535897932385 NaN Indeterminacin (Not a Number, por ejemplo 0/0)
ij Unidad imaginaria ( 1 ) realmin El menor nmero real positivo utilizable
inf Infinito, por ejemplo 1/0 realmax El mayor nmero real positivo utilizable
eps Menor valor positivo que ans Variable creada automticamente para representar
sumado a la unidad tiene el ltimo resultado procesado que no se ha
representacin diferente a 1. asignado a ninguna variable.
Indica la distancia desde 1.0 al
siguiente nmero en coma
flotante.

De igual forma, se puede interrogar al sistema sobre sus caractersticas o las


caractersticas de las variables que estamos manejando
finite(x) Devuelve 1 si x es finito, y cero en otro isinf(x) Da 1 si x es infinito o infinito, y cero
caso en otro caso
isnan(x) Da 1 si x es indeterminado y cero en computer Devuelve el tipo de computador
otro caso why Devuelve un mensaje sucinto
version Devuelve la versin actual de Matlab whatsnew Informa acerca de caractersticas nueva
clock Devuelve una lista con los 6 elementos de Matlab
[ao mes dia hora minutos segundos] lasterr Devuelve el ltimo mensaje de error
date Devuelve la fecha del calendario actual demo Ejecuta demostraciones sobre Matlab
diary Guarda el texto de la sesin actual de pack Consolida el espacio de trabajo en
Matlab memoria
ver Da informacin sobre el programa y info Da informacin acerca de Matlab
sus Toolbox hostid Identifica el nmero del host servidor

6. BUCLES

BUCLES SIMPLES: SENTENCIA for

Permite repetir un nmero determinado de veces un conjunto de instrucciones. Su


sintaxis es la siguiente:

86
Matlab

for var = vector


Instrucciones que deben ejecutarse
end

El argumento vector puede ser efectivamente un vector, en cuyo caso la variable va


tomando los valores de las componentes del vector, o una estructura de la
forma inicio : incremento : fin , en cuyo caso la variable va tomando valores desde inicio
hasta fin con un determinado incremento. Si no se indica el valor del incremento, este se
toma como unidad. El nmero de veces que se repite el bucle viene dado por la
fin inicio
dimensin del vector o por la expresin n 1 .
incremento

EJEMPLO
Calcular con for la suma M = 1(4)(2) + 2(5)(4) + 3(6)(6) + . . .+ 20(23)(40).
Solucin:
20
Expresndolo a travs del smbolo de sumatoria M k (k 3)(2k )
k 1

Creando el script. Guardarlo como:suma1.m

Ejecucin en la ventana de comandos:


>> suma1
s=
105420

Tambin el for se puede usar con una matriz


for var = matriz
Instrucciones que deben ejecutarse
end
En este caso la variable va pasando columna por columna de la matriz.

EJEMPLO

87
Matlab

Hacer tres grficos en tres ventanas de grficos usando for.

Solucin:

Creando el script. Guardarlo como: ploteos.m

C:\matlab7\work\ploteos.m
x1=[0:0.1:5]'; % 51 elementos
x2=[-2.5:0.1:2.5]'; % 51 elementos
x3=[-pi:pi/25:pi]'; % 51 elementos
A=[x1 x2 x3];
f=1;
for k=A
figure(f);
plot(k,sin(k));
f=f+1;
end

Ejecucin en la ventana de comandos:

>> ploteos

88
Matlab

BUCLES CONDICIONALES: SENTENCIA while


Permite repetir un conjunto de instrucciones, en tanto se satisfaga una condicin lgica.
Su sintaxis es la siguiente:
while condicin
Instrucciones que deben ejecutarse mientras la
condicin sea cierta.
end

EJEMPLO
Implemente la funcin elevapol(p,n) la cual eleve el polinomio p al exponente n.

C:\matlab7\work\elevapol.m
function y=elevapol(p,n);
%funcin elevapol(p,n) la cual eleva el polinomio 'p' al exponente 'n'
pro=1;
i=1;
while i<=n
pro=conv(pro,p);
i=i+1;
end
y=pro;

Ejecucin:
Si queremos elevar x 1 al exponente 4, ejecutamos en la ventana de comandos
89
Matlab

>> p=[1 1] %definicin del polinomio


p=
1 1
>> elevapol(p,4)
ans =
1 4 6 4 1
Si queremos elevar x2 2 x i al exponente 3, ejecutamos en la ventana de comandos
>> q=[1,-2,-i] %definicin del polinomio
q=
1.0000 -2.0000 0 - 1.0000i
>> elevapol(q,3)
ans =
Columns 1 through 4
1.0000 -6.0000 12.0000 - 3.0000i -8.0000 +12.0000i
Columns 5 through 7
-3.0000 -12.0000i 6.0000 0 + 1.0000i

BREAK Y CONTINUE
La instruccin continue pasa el control a la iteracin siguiente en el bucle for o while es
decir ignora las instrucciones que siguen al continue en el cuerpo del bucle.
La instruccin break finaliza la ejecucin del bucle for o while y luego el programa
sigue fuera del bucle. Hay muchos usos para la instruccin break, uno de los bastante
usados es para salir de un bucle infinito, como por ejemplo

while (1)
..
Bucle if (condicion)
infinito break;
end Salida del
bucle
end

while (condicin)
..
Bucle if (condicion)
infinito continue; Hasta el
end final

end

EJEMPLO
Crear una matriz aleatoria de tamao aleatorio y dar la suma de sus columnas.
Se crea la funcin de suma aleatoria [A,suma]=srandom. Se graba como: srandom.m
function [A,s]=srandom;
n=1;A=[ ];s=sum(A);
while (1)
90
Matlab

if (s>4)
break;
end
A=rand(n);
s=sum(A);
n=n+1;
end

Ejecucin en la ventana de comandos:


>> [A, s] = srandom
A=
0.8084 0.1506 0.1401 0.9466 0.1971 0.4071 0.4224
0.3179 0.7037 0.2376 0.8863 0.1945 0.8323 0.4557
0.3486 0.0738 0.8742 0.5377 0.5504 0.1927 0.6174
0.2536 0.0525 0.8607 0.8132 0.0184 0.6799 0.7427
0.9215 0.5236 0.6516 0.2425 0.1610 0.9183 0.9960
0.7035 0.6495 0.8741 0.3639 0.5352 0.0462 0.9279
0.7062 0.2334 0.9637 0.6775 0.4281 0.8809 0.0191
s=
4.0596 2.3872 4.6021 4.4677 2.0847 3.9574 4.1812

7. SUBFUNCIONES
Las funciones definidas mediante m archivos pueden contener cdigo para ms de una
funcin. La funcin en el m archivo se denomina funcin primaria, que es
precisamente la funcin que invoca el m archivo. Pero adicionalmente pueden haber
subfunciones colgando de la funcin primaria y que slo son visibles para dicha funcin
primaria o para otra subfuncin dentro del mismo m archivo. Cada subfuncin
comienza con su propia lnea de definicin de funcin.

La estructura de un programa con subfunciones es como sigue:

function A=funprincipal(a,b,);

function M1=subfun1(x1,y1,);

function M2=subfun2(x2,y2,);

.
:

function Mn=subfunn(xn,yn,);

91
Matlab

EJEMPLO
Implementacin del programa que calcula el promedio de una coleccin de datos, es
decir:
[1] Media Aritmtica
[2] Media Geomtrica
[3] Media Armnica

C:\MATLAB7\WORK\medias.m
function r=medias(x);
n=length(x); %tamao del vector
if ~isempty(find(x<0)) %validacin de datos
error('No puede haber datos negativos');
end
disp(' PROMEDIOS ');
disp(' ========== ');
disp('[1] Media Aritmtica ');
disp('[2] Media Geomtrica ');
disp('[3] Media Armnica ');
disp('[4] Salir ');
op = input('Ingrese opcion ==> ');
switch (op)
case 1
disp('La Media Aritmtica es:');
r=ma(x,n);
case 2
disp('La Media Geomtrica es:');
r=mg(x,n);
case 3
disp('La Media Armnica es:');
r=mh(x,n);
case 4
r='Fin';return;
end

function rr=ma(x,n);
rr=sum(x)/n;

function rr=mg(x,n);
rr=prod(x)^(1/n);

function rr=mh(x,n);
rr=n/sum(1./x);

Ejecucin:
>> x=[4,7,10,13] >> x=[2 -1 3 4]
92
Matlab

x= x=
4 7 10 13 2 -1 3 4
>> medias(x) >> medias(x)
PROMEDIOS ??? Error using ==> medias
========= No puede haber datos negativos
[1] Media Aritmtica
[2] Media Geomtrica
[3] Media Armnica
[4] Salir
Ingrese opcion:2
La Media Geomtrica es:
ans =
7.7674

MANEJO DE FORMATOS DE SALIDA

USO DE fprintf PARA SALIDAS EN LA VENTANA DE COMANDOS

Las salidas de informacin en la ventana de comandos se pueden hacer mediante el comando


disp(dato), sin embargo este comando no tiene mucha versatilidad en el manejo de formatos de salida
especialmente con informacin numrica. Es por esto que podemos emplear el comando
fprintf(formato,arg1,arg2,arg3,....) para sacar una presentacin ms adecuada en la ventana de
comandos. La ventaja es que dentro del formato se pueden incluir los caracteres especiales del lenguaje
de programacin C++

Caracteres especiales del C++ y el Matlab:


%c para caracter
%d para nmero entero
%f para nmero real
%s para cadena
%u para nmero entero positivo
%x para salida hexadecimal
%o para salida octal
\n para salto de lnea
\t para tabulacin
\b para retroceso (backspace)
\\ para imprimir \
%% para imprimir %

EJEMPLO
>> N=14;nom='Carola';fprintf('El promedio de %s es de %d',nom,N)
El promedio de Carola es de 14
>> N=14;fprintf('%d en el sistema octal es %o',N,N)
14 en el sistema octal es 16
>> ape='Hermenegildo';nom='Bush';fprintf('mi apellido es %s\nmi nombre es %s',ape,nom)
mi apellido es Hermenegildo
mi nombre es Bush
>> fprintf('La tercera parte de 22 es %0.2f',22/3)
La tercera parte de 22 es 7.33
>> fprintf('La tercera parte de 22 es %10.2f',22/3)

93
Matlab

La tercera parte de 22 es 7.33

EJEMPLO
Imprimir 10 nmeros aleatorios y sus cuadrados.

Ejecucin en la ventana de comandos


>> cuadra
k x x^2
-----------------------------
1 1.365187 1.863737
2 0.117567 0.013822
3 8.938980 79.905357
4 1.991381 3.965597
5 2.987230 8.923544
6 6.614426 43.750628
7 2.844086 8.088825
8 4.692243 22.017143
9 0.647811 0.419659
10 9.883349 97.680595

94
Matlab

EJERCICIOS

SCRIPTS, FUNCIONES, PROGRAMACIN, M-FILES

1. Sea A una matriz de mxn y B una matriz de pxq. Implemente la funcin bloque(A,B)
la cual genere la matriz bloque diagonal (m+p)x(n+q).
2. Crear la funcin (programa) r = mmedad(n) que al ingresar la edad de la persona n,
determine si es 1=mayor de edad o 0=menor de edad sin usar el comando if. Por
ejemplo cuando ejecute en la ventana de comandos:
>>r = mmedad(17)
debe dar:
r=
0

3. Escribir una funcin (programa) para calcular el mayor y menor lado de un tringulo
sin usar la sentencia if.
4. Implemente la funcin polysum(p,q) la cual sume los dos polinomios.
5. Implemente la funcin antidiag(A) la cual extraiga la antidiagonal de la matriz A.
Dicha funcin deber mostrar un mensaje de error en caso que la matriz A no sea
cuadrada.
6. Implemente la funcin sgeo(x, n) para calcular la suma de los primeros n trminos de
1
la serie 1 x x 2 x3 ... . Validar para que solo acepte valores de x tal que
1 x
x 1 .
7. Implemente una funcin aitken(n) que genere n trminos de la sucesin definida por
( xn 1 xn )2
yn xn
xn 2 2 xn 1 xn

Siendo xn g ( xn1 ), g ( x) 2 x , x1 0.5

95

Potrebbero piacerti anche