Professional Documents
Culture Documents
Nociones de MATLAB
Este apndice est dedicado a una breve exposicin de los elementos esenciales del lenguaje
MATLAB, con el propsito de facilitar la creacin de variables usuales en Anlisis de Estructuras
y ejecutar algunos de los programas expuestos en este texto, as como las rutinas incorporadas en el
lenguaje.
136
A.2.
Operaciones fundamentales
137
ans =
1.7321
cos(pi/4)
ans =
0.7071
sin(pi/6)
ans =
0.5000
exp(1)
ans =
2.7183
log(exp(1))
ans =
1
log10(10)
ans =
1
Las funciones trigonomtricas sin, cos, etc estn denidas en radianes. Sus homlogos en grados son sind, cosd, etc.:
cosd(60)
ans =
0.5000
138
o bien como
a=[1 2 3 4];
3.2500
5.5000
7.7500
10.0000
139
da como resultado el producto escalar de los dos vectores, ya obtenido por otra va. De manera
similar se obtiene la divisin de dos vectores elemento por elemento:
v1=[2 4 6];
v2=[2 2 2];
v1./v2
ans =
1
Finalmente, algunas operaciones importantes sobre vectores son las siguientes: el mximo elemento (max(a)); el mnimo (min(a)), las elementos que sean mayores o iguales que un
cierto escalar x (i=a >= x)), o iguales a l (i=a == x)), etc. Por ejemplo,
140
a=[4 9 5 4];i=a==4
i =
1
2
5
1
3
4
3
El smbolo : se utiliza para denotar todos los elementos de una la o de una columna. Por tanto,
la instruccin m1(2,:) entrega la segunda la de la matriz m1, mientras que m1(:,3) hace
lo propio con la tercera columna:
m1(2,:)
ans =
6
m1(:,3)
ans =
3
4
3
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
0
1
0
0
0
1
141
ones(3,3)
ans =
1
1
1
eye(3)
ans =
1
0
0
6. Direccionamiento indirecto.
Una de las posbilidades de MATLAB de mayor importancia para el anlisis matricial de estructuras es el direccionamiento indirecto. Consideremos el vector
v=[6 9 8 4 5 3];
Supongamos que queremos poner en otro vector w los elementos 2 y 3 de v. Para ello creamos
el vector
a=[2 3];
y escribimos
w=v(a);
El mismo procedimiento se utiliza para extraer submatrices de una matriz. Por ejemplo, de la
matriz
142
m=[1 2 3 4 5; 6 5 4 2 1;3 1 3 8 7; 9 2 6 4 3]
m =
1
6
3
9
2
5
1
2
3
4
3
6
4
2
8
4
5
1
7
3
deseamos extraer los elementos 1, 3 y 5 de las las 2 y 3 y ponerlos en la matrix n. Para ello
efectuamos el procedimiento siguiente:
a=[2 3]
a =
2
b=[1 3 5]
b =
1
4
3
1
7
n=m(a,b)
n =
6
3
2
5
1
3
4
3
m2=rand(3,3)
m2 =
0.2190
0.0470
0.6789
0.6793
0.9347
0.3835
0.5194
0.8310
0.0346
143
m3=m1+m2
m3 =
1.2190
6.0470
3.6789
2.6793
5.9347
1.3835
3.5194
4.8310
3.0346
3.6992
10.2833
4.1231
2.2851
7.4096
2.4929
m4=m1*m2
m4 =
2.3496
4.2644
2.7405
En este ejemplo m2=rand(3,3) es una matriz de nmeros aleatorios con distribucin uniforme entre 0 y 1. Es necesario recordar que el producto de dos matrices de dimensiones (m, n) y
(p, q) debe respetar la norma n = p. De lo contrario el producto no es factible:
m6=[2 2; 2 2]
m6 =
2
2
2
2
m1*m6 ??? Error using ==> * Inner matrix dimensions must agree.
0.1071
0.2143
-0.1786
0.2500
-0.5000
0.2500
0
3
0
0
0
2
144
que calcula la llamada descomposicin LU de la matriz A y luego obtiene el vector de incgnitas x. La descomposicin LU est denida como la obtencin de dos matrices, una triangular
inferior L (por lower, en ingls) y otra superior U (upper), cuyo producto es igual a A. Esta
tcnica es preferible para resolver grandes sistemas de ecuaciones simultneas que el mtodo
de la matriz inversa.
11. Autovalores y autovectores de una matriz.
Para una matriz simtrica, los autovalores (lambda) y los autovectores (phi) se obtienen de
la manera siguiente:
m8=[1 2 3; 2 4 5; 3 5 6]
m8 =
1
2
3
2
4
5
3
5
6
[phi,lambda]=eig(m8)
phi =
0.5910
-0.7370
0.3280
-0.7370
-0.3280
0.5910
0.3280
0.5910
0.7370
0
-0.5157
0
0
0
11.3448
lambda =
0.1709
0
0
2
4
9
3
5
6
A.4. FUNCIONES
145
[phi,lambda]=eig(m9)
phi =
-0.2610
-0.5389
-0.8009
0.2075 + 0.5245i
0.3908 - 0.3290i
-0.6244 - 0.1762i
0.2075 - 0.5245i
0.3908 + 0.3290i
-0.6244 + 0.1762i
0
-1.6683 + 1.0262i
0
0
0
-1.6683 - 1.0262i
lambda =
14.3366
0
0
A.4. Funciones
Las funciones en MATLAB se pueden tratar directamente como vectores o matrices, lo cual implica grandes ahorros de lneas de codicacin. Por ejemplo, si un vector de tiempo es
t=linspace(0,0.5,5)
t =
0
0.1250
0.2500
0.3750
0.5000
0.7071
0.0000
-0.7071
-1.0000
2
5
1
3
4
3
146
2.7183
403.4288
20.0855
A.5.
7.3891
148.4132
2.7183
20.0855
54.5982
20.0855
El bucle for - end es la estructura de MATLAB adecuada para hacer clculos vinculados a
ndices en general. Por ejemplo, el clculo del factorial de un nmero (en este caso, 10) se hace de la
siguiente forma:
nfact=1;
n=10;
for i=1:n;
nfact=nfact*i;
end;
nfact
nfact =
3628800
1, x < 0
0, x = 0
y = sgn(x) =
1, x > 0
if x < 0;
y = -1;
elseif x==0;
y=0;
else;
y=1;
end
Por ejemplo, si se asigna el valor x=3 antes de la ejecucin de esta secuencia, despus de ella el
valor de y es
y
y =
1
Se puede suspender la ejecucin de un bucle for - end por medio de la instruccin break. Por
ejemplo, la secuencia de instrucciones
A.6. PROGRAMAS
147
nfact=1;
n=10;
for i=1:n;
if i==5;
break;
end;
nfact=nfact*i;
end;
nfact
nfact =
24
A.6. Programas
Un programa en MATLAB se constituye como un archivo tipo M (*.m). Su creacin se hace en
un editor de texto cualquiera en ASCII. La edicin puede comenzar directamente con una serie de
lneas de cdigo, caso en el cual el programa siempre dar los mismos resultados, o bien comenzando
con una instruccin del tipo
function [resultados]=nombre(datos)
En esta descripcin, [resultados] es un grupo de resultados que se espera del programa y que
quedan disponibles para el uso por consola, cuyos nombres estn separados por comas: [a,b,c],
donde a,b,c pueden ser escalares, vectores, matrices o cadenas alfanumricas. De la misma manera
se da al programa el conjunto [datos]. El nombre del programa debe coincidir con el del archivo.
Como ejemplo, el siguiente programa crea un vector f cuyos elementos son los factoriales de sus
nmeros ordinales de posicin; es decir, f = [1!, 2!, . . . , n!]
function [f]=fact(n)
%
%----------------------------------------------------% [f]=fact(n)
%----------------------------------------------------%
% Calcula un vector cuyos elementos son los
% factoriales desde 1 hasta n
%
%----------------------------------------------------%
%
nfact=1;
for i=1:n;
nfact=nfact*i;
f(i)=nfact;
148
end;
%
%
%----------------------------------------------------- fin
24
que son las lneas que aparecen entre el encabezado del programa y la primera lnea de comandos, comentadas con el signo de porcentaje. En general, el comando help da esta informacin para cualquier
programa tipo M escrito, bien por la casa matriz de MATLAB, o bien por un usuario cualquiera.
A.7.
Un archivo de datos en ASCII se puede importar al programa por medio de la instruccin load:
load datos.dat;
Las diversas posibilidades de esos dos comandos se pueden consultar por medio de help.