Professional Documents
Culture Documents
a a
J. Daniel Ortiz P.
1 Profesor Horario
Instituto de Estudios Superiores (IES-UNI)
Managua, Nicaragua, C.A
3 de abril de 2014
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
QUE ES MATLAB?
A continuacin se presenta una breve exposicin de los elementos
o
o
esenciales del lenguaje MATLAB, con el propsito de facilitar la
o
creacin de variables usuales en Dinmica de Estructuras, as como
o
a
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
QUE ES MATLAB?
En la prctica de Ingenier Sismo-resistencia, es muy comun la
a
a
u
utilizacin del lenguaje MATLAB debido a su facilidad de
o
programacin, que fundamentalmente radica en su manejo de
o
matrices y vectores como objetos, lo que hace que los programas
tengan una extensin mucho menor que sus equivalentes en
o
lenguajes de alto nivel, como PASCAL, BASIC, C o FORTRAN.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
QUE ES MATLAB?
MATLAB es una de las muchas sosticadas herramientas de
computacin disponibles en el comercio para resolver problemas de
o
matemticas, tales como Maple, Mathematica y MathCad.
a
A pesar de lo que arman sus defensores, ninguna de ellas es la
mejor. Todas tienen fortalezas y debilidades. Cada una
permitir efectuar clculos matemticos bsicos, pero dieren en el
a
a
a
a
modo como manejan los clculos simblicos y procesos
a
o
matemticos ms complicados, como la manipulacin de matrices.
a
a
o
Por ejemplo, MATLAB es superior en los clculos que involucran
a
matrices, mientras que Maple lo supera en los clculos simblicos.
a
o
El nombre mismo de MATLAB es una abreviatura de MATrix
LABoratory, laboratorio matricial.
En un nivel fundamental, se puede pensar que estos programas son
sosticadas calculadoras con base en una computadora.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
QUE ES MATLAB?
En muchas aplicaciones de ingenier la realizacin de clculos con
a,
o
a
un programa de computacin matemtico como MATLAB
o
a
sustituye la programacin de computadoras ms tradicional. Esto
o
a
no signica que se pueda prescindir de lenguajes de alto nivel como
C++ o FORTRAN, sin embargo programas como MATLAB se han
convertido en una herramienta estndar para ingenieros y
a
cient
cos.
MATLAB se escribi originalmente en FORTRAN y despus se
o
e
rescribi en C, precursor de C++. Por lo general, los programas de
o
alto nivel no ofrecen acceso fcil a la gracacin, que es una
a
o
aplicacin en la que destaca MATLAB.
o
MATLAB est disponible en versiones profesional y estudiantil.
a
Actualizndose de manera regular; en esta clase usaremos la
a
versin MATLAB R2009a. Quizs no existan diferencias
o
a
signicativas entre versiones ms recientes, pero en versiones
a
. . . . . . . . . .
anteriores a MATLAB 5.5 existen diferencias sustanciales. . . . . .
. .
J. Daniel Ortiz P.
Gu Rpida de Matlab
a a
. . . .
. . . .
. . . .
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
o
Una vez que Usted ha asignado un valor a una variable, MATLAB la recuerda por
siempre. Para remover un valor para una variable se puede usar el comando (clear),
por ejemplo, si quiere borrar una variable a, entonces use clear a.
Si se introduce clear y se omite el nombre de la variable, entonces TODO
resultar borrado. No haga eso por ahora, pero esto ser util cuando se requiere iniciar
a
a
nuevos clculos.
a
. . . . . . . . . . . . . . .
.
. .
J. Daniel Ortiz P.
Gu Rpida de Matlab
a a
. . . .
. . . .
. . . .
.
.
. .
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
n
u
bsquea), pueden ser de mucha utilidad ya que con mucha
u
frecuencia puede encontrarse, y copiarse, un ejemplo que es similar
a lo que nosotros estamos intentando realizar.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 5 0 2
5 4 6 6
3 3 0 5
9 2 8 7
Una matriz no necesariamente debe tener el mismo nmero de las
u
y columnas, pero la mayor de matrices con que nos toparemos en
a
este curso (y en general, en Ingenier Civil) son matrices
a
cuadradas.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
o
vectores de frecuencia.
Por defecto linspace(x1, x2) genera un vector de 100 puntos
linealmente espaciados entre x1 y x2.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 2 3
6 5 4
m1 =
3 1 3
Un elemento de una matriz se extrae de acuerdo a la notacin usual en matemticas:
o
a
m1(2,3)
ans =
4
Se utiliza (:) para denotar todos los elementos de una la o de una columna. Por
tanto, m1(2,:) entrega la segunda la de la matriz m1, mientras que m1(:,3) hace lo
propio con la tercera columna:
m1(2, :)
ans =
654
m1(:,3)
ans =
3
4
3
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
0
0
1
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1,2190
m3 = 6,0470
3,6789
2,6793
5,9347
1,3835
m4=m1*m2
2,3496
m4 = 4,2644
2,7405
3,6992
10,2833
4,1231
3,5194
4,8310
3,0346
2,2851
7,4096
2,4929
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 2 3
m1 = 6 5 4
3 1 3
Podemos apreciar que el orden de m1 es (3x3), mientras que el orden de m6 es (2x2),
por lo tanto el producto de estas dos matrices no es posible y se produce la condicin
o
de error que detiene la ejecucin de MATLAB o de un programa que contenga dicha
o
condicin.
o
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 2 3
m1 = 6 5 4
3 1 3
con el siguiente comando obtenemos su inversa:
m5=inv(m1)
0,3929
m5 = 0,2143
0,3214
0,1071
0,2143
0,1786
0,2500
0,5000
0,2500
Debe recalcarse, que en la prctica muy rara vez es necesario la forma expl
a
cita de la
inversa de una matriz. Un mal uso, muy frecuente, del comando inv se da al resolver
un sistema de ecuaciones lineales Ax = b . Una de las formas de resolver esto es con
x = inv (A) b. Una mejor forma, desde el punto de vista de la precisin numrica, es
o
e
usar el operador de matrix de division, x = A \ b . Al usar el operador de matrix de
division, \ se calcula la llamada descomposicin LU de la matriz A y luego obtiene el
o
vector de incgnitas x . La descomposicin LU est denida como la obtencin de dos
o
o
a
o
matrices, una triangular inferior L (por lower, en ingls) y otra superior U (upper, cuyo
e
producto es igual a A. Esta tcnica es preferible para resolver grandes sistemas de
e
ecuaciones simultneas que el mtodo de la matriz inversa.. . . . . . . . . . . . . . . .
a
e
. .
J. Daniel Ortiz P.
Gu Rpida de Matlab
a a
. . . .
. . . .
. . . .
.
.
. .
. .
x1 + 13x2 + 3x3
3
4
7
x1
6
2
9 x = x2 b = 1
A= 5
1 13
3
x3
8
Para resolver esto en MATLAB, simplemente se introduce lo siguiente:
A = [3,4,7;5,2,-9;-1,13,3]
b = [6;1;8]
x=A\b
Note el uso de la barra diagonal inversa y no el uso habitual del signo de division (/).
Puede revisar la respuesta al calcular A*x
Podemos tambin encontrar la solucin de la siguiente manera: x=transpose(b)/A
e
o
La notacin transpose(b)/A, resuelve las ecuaciones xA=b, donde x y b son vectores.
o
Nuevamente, puede vericar su respuesta usando x*A
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 2 3
2 4 5
m8 =
3 5 6
[phi,lambda]=eig(m8)
phi =
0,7370
0,3280
0,5910
0,5910
0,7370
0,3280
0,3280
0,5910
0,7370
lambda =
0,5157
0
0
0
0,1709
0
0
0
11,3448
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
1 2 3
6 4 5
m9 =
7 9 6
[phi , lambda] = eig (m9)
phi =
0,2610
0,5389
0,8009
0,3421 0,4484i
0,2867 + 0,4227i
0,6488
0,3421 + 0,4484i
0,2867 0,4227i
0,6488
lambda=
14,3366
0
0
0
1,6683 + 1,0262i
0
0
0
1,6683 1,0262i
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
MATLAB: Funciones
Las funciones en MATLAB se pueden tratar directamente como vectores o matrices, lo
cual implica grandes ahorros de l
neas de codicacin. Por ejemplo, si un vector de
o
tiempo es:
t=linspace(0,0.5,5)
t=
0 0.1250 0.2500 0.3750 0.5000
y una frecuencia angular es igual a 2
w=2*pi
entonces la funcin
o
r = cos (t ) es el vector
r=cos(w*t)
r=
1.0000 0.7071 0.0000 -0.7071 -1.0000
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
MATLAB: Funciones
De manera semejante se calculan otras funciones, sin importar si la variable
dependiente es un vector o una matriz:
m1 =
1 2
6 5
3 1
3
4
3
exp(m1)
ans =
2,7183
403,4288
20,0855
7,3891
148,4132
2,7183
20,0855
54,5982
20,0855
cos(m1)
ans =
0,5403
0,9602
0,9900
0,4161
0,2837
0,5403
0,9900
0,6536
0,9900
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
o
o
1, si x < 0
y = sgn(x ) = 0, si x = 0
1,
si x > 0
Denamos la variable siguiente:
x=3
x=
3
entonces la secuencia:
if x <0; y=-1; elseif x==0; y=0; else; y=1; end
y
y=
1
Nos da el valor y=1 puesto que x=3 es positivo. Pruebe Usted para diferentes valores
de x.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
MATLAB: Programas
Un programa en MATLAB se constituye como un archivo tipo M
(*.m). Su creacin se hace en un editor de texto cualquiera en
o
formato ASCII. La edicin puede comenzar directamente con una
o
serie de l
neas de cdigo, caso en el cual el programa siempre
o
dar los mismos resultados, o bien comenzando con una
a
instruccin del tipo
o
function [resultados]=nombre(datos)
En esta descripcin, [resultados] es un grupo de resultados que se
o
espera del programa y que quedan disponibles para el uso por
consola (pantalla), cuyos nombres estn separados por comas:
a
[a,b,c], donde a,b,c pueden ser escalares, vectores, matrices o
cadenas alfanumricas. De la misma manera se da al programa el
e
conjunto [datos]. El nombre del programa debe coincidir con el del
archivo.
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
MATLAB: Programas
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!]
u
o
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;
end;
El programa se activa con la orden
[f]=fact(n):
[f]=fact(5)
f=
1 2 6 24 120
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
MATLAB: Programas
Si escribimos en la consola help fact obtenemos
help fact
%
%
%
%
%
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .
.
. .
J. Daniel Ortiz P.
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Gu Rpida de Matlab
a a
.
.
.
.
. .
. .