Академический Документы
Профессиональный Документы
Культура Документы
Matlab
Universidad Nacional
Mayor de San Marcos
FACULTAD DE CIENCIAS
MATEMTICAS
Curso de
Perfeccionamiento Docente
MATLAB
Autor :
2012
Matlab
INTRODUCCIN
MATLAB es un programa para clculo cientfico y tcnico, posibilitando el
clculo numrico y simblico de forma rpida y precisa, acompaado de caractersticas
grficas con altos recursos de visualizacin. Permite anlisis, modelado, programacin y
calculo efectivo de problemas de ingeniera, ciencias de la salud, situaciones
empresariales y de finanzas, procesamiento de seales, procesamiento de voz, sistemas
de telefona fija/mvil o ADSL y distintos campos de aplicacin.
La potenciabilidad del MATLAB esta basada en el trabajo con arreglos los cuales
posibilitan una gran facilidad de trabajo.
MATLAB, a travs de un entorno GUIDE permite una interfaz grfica visual para
trabajos con mejores acabados de presentacin y objetos visuales con lo cual la potencia
se combina con las facilidades visuales para resolver diverso tipo de problemas.
Matlab
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
rea de memoria de trabajo del Matlab, en la cual se hallan almacenadas todas las
variables definidas interactivamente.
3
Matlab
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
o
o
Matlab
o Browse de Current Directory
Matlab
Matlab
Men [Desktop]: Configuracin del escritorio
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
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
?.
Matlab
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
u=
2.0000 + 3.0000i
>> v=2-3j
v=
2.0000 - 3.0000i
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
ans =
1
>> P = (5 * 7 ~= 35)
P=
0
Matlab
Digitar en la ventana de comandos:
>> mg='El minino es de color blanco'
mg =
El minino es de color blanco
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.
vector=[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
a=
1 2 3 4
>> v=0:2:10
v=
0 2 4
% vector columna
10
>> m=7*a
m=
7 14
28
3.6000 4.0000
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
10
12
14
16
18
20
Matlab
>> V=[6 7 2 8 9]
V=
6 7 2 8
>> W=sort(V)
W=
2 6 7 8
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]
A=
1 2 3 4
5 6 7 8
9 10 11 12
>> B=[0 2 1 4
5 0 1 0
2 0 3 7]
B=
0 2 1 4
5 0 1 0
2 0 3 7
% suma de matrices
4 8
8 8
14 19
13
Matlab
Ms operaciones clsicas:
>> C=A'
% matriz traspuesta
C=
1 5 9
2 6 10
3 7 11
4 8 12
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
+
*
^
/
\
.*
.^
./
.\
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
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 nsima y m-sima y las columnas p-sima y q-sima.
15
Matlab
A(n,:)
A(:,p)
A(:)
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
la 3ra col.
>> A(2,3)
ans =
7
Para obtener la primera fila
>> A(1,:)
ans =
1 2 3 4
Para obtener la tercera columna
>> A(:,3)
ans =
3
7
11
Para obtener la submatriz formada por la
1ra y 2da columna
>> A(:,1:2)
ans =
1 2
5 6
9 10
B=
3
2
4
5
2
6
16
-2
32
1
10
30
3
96
3
12
31
96
97
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
tril(A) Parte triangular inferior de la
matriz A
eye(n) Crea la matriz identidad de nxn
zeros(n) Crea la matriz nula de nxn
ones(n) Crea la matriz de unos de nxn
rand(n) Crea una matriz aleatoria
uniforme de nxn
randn(n) Crea una matriz aleatoria normal
de nxn
diag(A) Extraer la diagonal de la matriz A
diag(A,k)Extraer la k-sima diagonal de la
matriz A.
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
NULA
UNOS
IDENTIDAD
ALEATORIA
DIAGONAL
DIAGONAL
Funcin
triu(A)
Operacin
Parte triangular superior de la
matriz A
eye(m,n)
Idem orden mxn
zeros(m,n) Idem de orden mxn
ones(m,n)
Idem de orden mxn
rand(m,n) Idem de orden mxn
randn(m,n) Idem de orden mxn
diag(v)
Matriz diagonal con los
elementos de v
diag(v,k)
Matriz diagonal con los
elementos de v en la k-sima
diagonal
COMANDO
>> zeros(2)
>> zeros(2,3)
>> ones(2)
>> ones(2,3)
>> I=eye(3)
SALIDA
I=
>> rand(3)
1 0
0 1
0 0
ans =
0.2028
0.1987
0.6038
D=
1
6
11
I=
0
0
1
0.2722
0.1988
0.0153
0.7468
0.4451
0.9318
Matlab
LA MATRIZ
IDENTIDAD
GENERADA CON LA
DIAGONAL
>> I=diag(ones(3,1))
2
0
0
0
3
0
0
0
4
1
0
0
0
1
0
0
0
1
I=
MS MATRICES ESPECIALES:
magic
matriz Mgica.
M = magic(n) retorna una matriz de nxn construida con enteros del 1.. n 2
con igual suma en las filas, columnas, diagonal principal y diagonal
secundaria.
>> magic(3)
ans =
8 1 6
3 5 7
4 9 2
pascal
>> magic(4)
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
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)
ans =
1 1
1 2
>> pascal(3)
ans =
1 1 1
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])
ans =
4 2 1
16 4 1
1 1 1
>>%tambien
>> vander([2;4;1])
ans =
4 2 1
16 4 1
1 1 1
hilb
8
64
125
27
216
4
16
25
9
36
2
4
5
3
6
1
1
1
1
1
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
>> hilb(3)
ans =
1.0000
0.5000
0.3333
0.5000
0.3333
0.2500
0.3333
0.2500
0.2000
>> invhilb(4)
ans =
16
-120
-120
1200
240
-2700
-140
1680
240
-2700
6480
-4200
-140
1680
-4200
2800
Funcin
Operacin
transpose(A) Matriz transpuesta de A
rank(A)
Rango de la matriz A
sum(v)
sum(A)
prod(v)
length(v)
size(A)
19
Matlab
elementos de la matriz A en cada
fila.
cumsum(v) Suma acumulada de los cumsum(A) Suma acum. de los elementos de
la matriz A en cada columna.
elementos del vector v
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
0.4
1 3
6 y B = matriz aleatoria de 3x3. Construya C a
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
0.4
1 3
6 y B = matriz aleatoria de 3x3. Construya C a
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
4.0000 3.1416
6.0000
0.4000 7.1000
0
8.0000 -1.0000 27.0000
64.0000 31.0063 216.0000
0.0640 357.9110
0
2.0000
4.0000
0.4000
0.9501
0.2311
0.6068
-1.0000
3.1416
7.1000
0.4860
0.8913
0.7621
3.0000
6.0000
0
0.4565
0.0185
0.8214
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
A=
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
0
0
1
-4
6
-4
1
0
0
0
1
-4
6
-4
0
0
0
0
1
-4
5
-4
2
-4
0
0
0
0
2
-4
0
0
0
0
0
A=
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
26
3
-4
2
-4
0
0
0
Matlab
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 2 .
1 , C*D' =
4 5 6
4 5 6
1 2
1
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
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
3x 2
4x 3
x 2
4x 7x
2
1
x3
0.5
2x1
Resolver x
1
14x 3
3
2
>> b=[3;-0.5;2]
b=
3.0000
-0.5000
2.0000
Matlab
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
Va estas operaciones elementales se pueden realizar transformaciones de una matriz A a
matriz escalonada, matriz triangular, matriz identidad, matriz ortogonal, etc. Estas
son por ende algunas de las clsicas operaciones que el lgebra lineal usa para realizar
sus acciones con diversos objetivos como la diagonalizacin, la forma cannica de
Jordan, la forma cannica Racional.
Matlab
[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
>> [L,U,P]=lu(A)
L=
1.0000
0
0
0.5000 1.0000
0
0.2500 0.1154 1.0000
>> [L,U]=lu(A)
L=
0.5000 1.0000
0.2500 0.1154
1.0000
0
U=
4.0000 -7.0000
0
6.5000
0
0
U=
4.0000 -7.0000 14.0000
0
6.5000 -11.0000
0
0
-1.2308
0
1.0000
0
14.0000
-11.0000
-1.2308
P=
0
1
0
0
0
1
1
0
0
1
2
3
1
3
6
>> R=chol(B)
R=
1 1 1
0 1 2
0 0 1
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:
30
Matlab
2 3 4
A 1 1 1 y B =
4 7 14
1 2 3 1
2 1 2 4 .
0 2 3 1
>> B=[1,2,3,1;-2,1,2,4;0,2,3,1]
B=
1 2 3 1
-2 1 2 4
0 2 3 1
>> [Q,R]=qr(A)
Q=
-0.4364 0.8927 0.1126
-0.2182 0.0164 -0.9758
-0.8729 -0.4504 0.1876
R=
-4.5826 5.0190 -10.6927
0 5.8146 -9.8602
0
0 1.2009
>>Q*R %verificando
ans =
2.0000 3.0000 -4.0000
1.0000 -1.0000 1.0000
4.0000 -7.0000 14.0000
>> [Q,R]=qr(B)
Q=
-0.4472 -0.6667 -0.5963
0.8944 -0.3333 -0.2981
0
-0.6667 0.7454
R=
-2.2361 0.0000 0.4472
0
-3.0000 -4.6667
0
0
-0.1491
>> Q*R %verificando
ans =
1.0000 2.0000 3.0000
-2.0000 1.0000 2.0000
0
2.0000 3.0000
3.1305
-2.6667
-1.0435
1.0000
4.0000
1.0000
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]
A=
2 3 -4
1 -1 1
4 -7 14
>> norm(A,2)
ans =
16.8014
31
>> norm(A,1)
ans =
19
>> norm(A,inf)
ans =
25
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:
32
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 =
>> norm(v,inf)
5.2915
ans =
>> norm(v,1)
3
ans =
12
>> norm(A,'fro')
8.2563
ans =
12
ans =
>> cond(A)
9.0554
ans =
>> norm(A,inf)
-7
-1
3
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=
33
Matlab
>> [Q,U]=qr(A)
1.0000
1.0000
0.5000
U=
2 3
0 -2
0 0
P=
1 0
0 1
0 0
Q=
-0.6667
-0.6667
-0.3333
U=
-3.0000
0
0
34
0
1.0000
-0.2500
0
0
1.0000
-7
6
8
0
0
1
0.4576 -0.5883
-0.7191 0.1961
0.5230 0.7845
-3.3333 4.3333
1.6997 -0.9152
0 6.2757
Matlab
EJERCICIOS PROPUESTOS
2x1
3x 2
x
1
2x 2
x3
7x 2
14x 3
4x 3
x1 x 2 3x 4 4
2x x x x 1
1
2
3
4
2. Resolver el sistema lineal
3
x
2
x
2
3
4 3
1
x1 2x 2 3x 3 x 4 4
3. Resolver los sistemas A x = b y B x = b utilizando:
2
0
1
2 1/ 2
1
1 3
4
1
1
2
2 6 1 0
A
B
1 5 0
0
0
6
2
1
1
5 3 0
5
2
1
2
1
0
Siendo b ==> b 1
1
0
1
1 1
1 3 5
4. Factorice A 1 3 6
1 4 1
0 2 3
1
1
2
0
b2
b3
3
2
4
3
1 1
3 7
1 1 por Gauss Doolitle y tambin ortogonalmente.
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.
35
Matlab
>> x=1:0.25:2
x=
1.0000 1.2500 1.5000 1.7500 2.0000
>> y=polyval(p,-2.1+3i)
y=
19.0790 -37.7100i
>> y=polyval(p,x)
y=
-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];
>> m=conv(p,d) %producto de p(x) por d(x)
m=
1 4 -2 -18 0 20
36
Matlab
FRACCIONES PARCIALES
[R,P,Q] = residue(A,B)
A( x)
, 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)
...
2
m
x P( j ) x P( j )
x P( j )
EJEMPLO
Descomponer en fracciones parciales
3
2
f ( x) = 4 x 2 x 3x2 2 =
x ( x 1)
a
x 1
x 1
d
x2
Solucin:
A( x) 4 x3 x 2 3x 2 , B( x) x2 ( x 1)2 x4 2 x3 x 2 , 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
2
-4
Q=
2
2
2
x ( x 1)
x 1 x 1
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]
>> dp=polyder(p)
>> d2p=polyder(dp)
p=
4 3
dp =
12 6
d2p =
24 6
-1
2. AUTOVALORES Y AUTOVECTORES
Funcin Operacin
Funcin Operacin
37
Matlab
eig(A) Autovalores de la matriz A.
EJEMPLO
2
Sea A 1 1 1
4 7 14
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
38
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
39
Matlab
EJERCICIOS DESARROLLADOS
p1 =
2
-1
>> 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
p3
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
40
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
1
1
A 1
1
0
1 1 1 1
3 5 3 7
3 6 1 1
4 1 2 3
2 3 4 5
x10 x 1 por
41
Matlab
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
42
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
20
>> plot(x)
amarillo
magenta
Etiqueta
.
puntos
o
crculos
43
Trazo
:
slido
a puntos
Matlab
c
r
g
b
w
k
cyan
rojo
verde
azul
blanco
negro
x
+
*
s
d
p
h
v
^
<
>
x-marcas
signo ms
estrellas
cuadrados
diamantes
estrella de 5 puntas
estrella de 6 puntas
tringulo
tringulo
tringulo
tringulo
-.
--
guiones y puntos
semislidos
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( x 2 ) 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:')
44
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)
'North'
'South'
'East'
'West'
'NorthEast'
'NorthWest
'SouthEast'
'SouthWest'
'NorthOutside'
'SouthOutside'
'EastOutside'
'WestOutside'
'NorthEastOutside'
'NorthWestOutside'
'SouthEastOutside'
'SouthWestOutside'
'Best'
'BestOutside'
EJEMPLO
Graficar en el intervalo [ - 3 , 3] y1 xsen( x2 ) 2 , y 2 x 4sen( x) , y3=x+0.3[x]
colocando titulo, descripcin de ejes y leyendas.
Solucin:
45
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]')
46
Matlab
ginput(n)
grid
hold
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
47
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
EJEMPLO
Graficar f ( x) xsen( x), g ( x) cos x x, h( x) x 2 3x 2 en el intervalo [0, 5].
48
Matlab
>> fplot('[-x*sin(x)+2,cos(x)-x,x^2-3*x+2]',[0 5])
49
Matlab
EJEMPLO
Graficar
a) La rosa de 4 ptalos horizontal.
>> a=0:pi/40:2*pi;
>> 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))
50
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
51
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.
52
Matlab
ezpolar(f)
ezpolar(f,[a,b])
EJEMPLOS
>> %funciones estandar
>> ezplot('cos(x)')
>> ezplot('cos(x)', [0, pi])
53
Matlab
EJEMPLOS
Grficos con dominio por defecto
>>ezpolar('cos(5*t)')
>>ezpolar('1 + 2*sin(t/2)')
>>ezpolar('1 - 2*sin(3*t)')
>>r = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))';
>>ezpolar(r,[-pi/2,3*pi/2])
54
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(x 2) 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)
55
Matlab
56
Matlab
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)
57
Matlab
1. CURVAS 3D
plot3(X,Y,Z)
plot3(X,Y,Z,S)
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
>> plot3(x,y,z)
>> grid
EJEMPLO
>> ezplot3('cos(t)', 't * sin(t)', 'sqrt(t)', [0,6*pi])
58
Matlab
59
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
60
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 ]
61
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);
62
Matlab
>> z=peaks(25); surf(z); colormap(pink)
EJEMPLO
>> z=peaks(20); mesh(z); shading flat; colormap(hot)
4.
COORDENADAS CILNDRICAS
x r cos(u )
y rsen(u ) ,
z z
u [, ], r [r1, r2 ]
EJEMPLO
Graficar el paraboloide z x 2 y 2 en el dominio circular de radio 5 y centrado en el
origen de coordenadas.
63
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 ),
z r cos(v)
EJEMPLO
Graficar parte del hemisferio superior
indicado con radio = 5.
64
u [1, 2 ], v 1, 2
Matlab
6.
COORDENADAS PARAMTRICAS
x x(u, v)
y y (u, v),
z z (u, v)
u [u1 , u2 ], v v1 , v2
x x(t )
y y (t ),
z z (t )
t [t1 , t2 ]
65
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)
66
Matlab
67
Matlab
68
Matlab
EJERCICIOS PROPUESTOS
1. Grafique usando mesh, surf, contour y contour3
z3
2xy
. 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 )
4. Grafique el Toroide
x cos(t )(4 cos(v))
z sen(v)
t [0, 2], v 0, 2
69
Matlab
Operador Lgico
>
mayor que
~A
Negacin (NOT)
<
menor que
A&B
Conjuncin (AND)
==
igual que
A|B
Disyuncin (OR)
~=
diferente que
xor(A,B)
<=
>=
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
70
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:
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:
71
Matlab
b) FUNCIN.
Crear el m-archivo
Matlab
Ejecucin en la ventana de comandos
>> h= hipotenusa(3,4)
h=
5
En resumen:
PROGRAMAS EN MATLAB
Archivos
nombre.m
Funcin
Script
>> hipot
cateto a=2
cateto b=4
hip =
4.4721
Ejecucin en
la ventana de
comandos
>> h= hipotenusa(3,4)
h=
5
73
Matlab
.
Muestro la ayuda en lnea de la funcin perimtri, digitando en la ventana de comandos:
4.
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
74
Matlab
if condicin
Instrucciones que deben ejecutarse
end
else
Instrucciones a ejecutar cuando no se verifican las condiciones anteriores
end
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).
75
Matlab
Solucin:
Creacin de la funcin.
EJEMPLO
El siguiente programa analiza el tipo de tringulo que se tiene, dados sus tres lados, de
acuerdo con el siguiente algoritmo
a
c
76
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
77
Matlab
SENTENCIA switch
78
Matlab
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
0..10
11..13
14..16
17..20
Condicin
Desaprobado
Aprobado
Aprobado
Aprobado
Tipo
Malo
Regular
Bueno
Excelente
Creando la funcin
79
Matlab
>> [cond,tipo]=reporte(7)
cond =
Desaprobado
tipo =
Malo
>> [cond,tipo]=reporte(10.7)
??? Error using ==> reporte
Incorrecto, debe ser un numero entero
>> [cond,tipo]=reporte(24)
??? 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';
>>[c,t]=reporte(13.7)
c=
Aprobado
t=
Bueno
80
Matlab
>> adivina
Qu edad tengo?
>> adivina
Qu edad tengo?
Primera oportunidad
edad=14
Segunda oportunidad
edad=15
Felicitaciones! ... Adivinaste en la segunda
>> lasterr
ans =
81
Matlab
Primera oportunidad
edad=14
Segunda oportunidad
edad=16
No adivinaste ... fue tu ltima oportunidad
5.
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
format short
format long e
format short e
format bank
format rat
format +
format hex
vpa operaciones n
numeric(expr)
digits(n)
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
dec2hex
dec2base
bin2dec
hex2dec
base2dec
EJEMPLO
FORMATO
"formato largo" de 3
"formato racional" de 3
"con 10 cifras decimales" de 3
"con 100 cifras decimales" de
"con 20 cifras decimales" de
"Representacin binaria" de 1234
"Representacin en base 10" de un valor en base 16
EJEMPLO
82
REPRESENTACIN
sqrt(3);format long; ans
format rat; ans
vpa(ans,10)
vpa 'pi' 100
digits(20); vpa '173/13'
dec2bin(1234)
base2dec(BF34A,16)
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
ij
inf
eps
3.1415926535897932385
Unidad imaginaria ( 1 )
Infinito, por ejemplo 1/0
Menor valor positivo que
sumado a la unidad tiene
representacin diferente a 1.
Indica la distancia desde 1.0 al
siguiente nmero en coma
flotante.
6.
isinf(x)
BUCLES
83
Matlab
84
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
85
Matlab
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
86
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
Bucle
infinito
Bucle
infinito
while (1)
..
if (condicion)
break;
end
Salida del
bucle
end
while (condicin)
..
if (condicion)
continue; Hasta el
final
end
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)
87
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.3179 0.7037
0.3486 0.0738
0.2536 0.0525
0.9215 0.5236
0.7035 0.6495
0.7062 0.2334
s=
4.0596 2.3872
0.1401
0.2376
0.8742
0.8607
0.6516
0.8741
0.9637
0.9466
0.8863
0.5377
0.8132
0.2425
0.3639
0.6775
0.1971
0.1945
0.5504
0.0184
0.1610
0.5352
0.4281
0.4071
0.8323
0.1927
0.6799
0.9183
0.0462
0.8809
0.4224
0.4557
0.6174
0.7427
0.9960
0.9279
0.0191
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,);
88
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]
89
Matlab
x=
4 7 10 13
>> medias(x)
PROMEDIOS
=========
[1] Media Aritmtica
[2] Media Geomtrica
[3] Media Armnica
[4] Salir
Ingrese opcion:2
La Media Geomtrica es:
ans =
7.7674
x=
2 -1 3 4
>> medias(x)
??? Error using ==> medias
No puede haber datos negativos
%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)
90
Matlab
La tercera parte de 22 es
7.33
EJEMPLO
Imprimir 10 nmeros aleatorios y sus cuadrados.
91
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
yn xn
( xn1 xn )2
xn 2 2 xn1 xn
92