Vous êtes sur la page 1sur 30

UNIVERSIDAD DE MONTERREY

DIVISIN DE ARQUITECTURA, DISEO E INGENIERA

DEPARTAMENTO DE INGENIERA

INTRODUCCIN AL MATLAB

Dr. Jos Santiago Cruz Bauelos


Captulo I

Comandos bsicos de MATLAB

En el modo interactivo MATLAB puede hacer operaciones bsicas


como una calculadora, a continuacin algunos ejemplos:

Ejemplo 1
EDU 3*4+5

ans =

17

Ejemplo 2
EDU cos(30*pi/180)

ans =

0.8660

Ejemplo 3
EDU x=4

x=

EDU 2/sqrt(3+x)

ans =

0.7559

Para evitar que MATLAB no muestre resultados se utiliza el


smbolo de punto y coma, a continuacin algunos ejemplos:

Ejemplo 4
EDU y=32;
EDU z=6;
EDU x=2*y-z;
EDU w=3*y+4*z;
EDU x
x=

58

EDU w

w=

120

MATLAB distingue maysculas de minsculas, a continuacin un


ejemplo:

Ejemplo 5
EDU x=1;
EDU X=2;
EDU X+x

ans =

El comando help se utiliza para obtener ayuda en un comando


especfico de MATLAB, a continuacin un ejemplo:

Ejemplo 6
EDU help inv

INV Matrix inverse.


INV(X) is the inverse of the square matrix X.
A warning message is printed if X is badly scaled or
nearly singular.
Captulo II
Operaciones con Matrices utilizando MATLAB

A continuacin algunos ejemplos de operaciones con matrices:

Ejemplo 7
x=[1 2 3; 4 5 6; 7 8 9]

x=

1 2 3
4 5 6
7 8 9

EDU y=[2; 0; -3]

y=

2
0
-3

EDU w=x*y

w=

-7
-10
-13

Consideremos el siguiente sistema de ecuaciones:

2 1 3 0 x1 3
1 5 2 4 x 1
2 =
2 0 3 2 x3 2

1 2 3 4 x 4 2

Lo resolveremos utilizando el mtodo de eliminacin Gaussiana


utilizando el operador \

Ejemplo 8
EDU A=[2 -1 3 0; 1 5 -2 4; 2 0 3 -2; 1 2 3 4]
A=

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

EDU b=[3; 1; -2; 2]

b=

3
1
-2
2

EDU x=A\b

x=

1.9259
-1.8148
-0.8889
1.5926

La solucin de este sistema de ecuaciones es x1 = 1.9259 ,


x 2 = 1.8148 , x3 = 0.8889 y x 4 = 1.5926 . De manera alternativa podemos
utilizar la inversa de la matriz para obtener la misma solucin

Ejemplo 9
EDU x=inv(A)*b

x=

1.9259
-1.8148
-0.8889
1.5926

Consideremos ahora la matriz de 5x5 para hacer operaciones de


extraccin:

Ejemplo 10
D=
1 2 3 4 5
2 4 6 8 9
2 4 6 2 4
1 1 2 3 -2
9 0 2 3 1

Podemos extraer la submatriz de las filas 2 a la 4 y de las


columnas 3 a la 5

E=D(2:4,3:5)

E=

6 8 9
6 2 4
2 3 -2

Podemos extraer la tercera columna de D

F=D(1:5,3)

F=

3
6
6
2
2

Tambin podemos extraer la segunda fila de D

G=D(2,1:5)

G=

2 4 6 8 9

Podemos extraer el elemento en la fila 4 y columna 5

H=D(4,3)

H=

2
Ahora construiremos una grfica

Ejemplo 11
x=[1 2 3 4 5 6 7 8 9 10]

x=

1 2 3 4 5 6 7 8 9 10

EDU y=x.^2

y=

1 4 9 16 25 36 49 64 81 100

EDU plot(x,y)

100

90

80

70

60

50

40

30

20

10

0
1 2 3 4 5 6 7 8 9 10

Mostraremos el potencial de graficar en MATLAB en captulos


posteriores de este manual.
Captulo III
Funciones matemticas bsicas

MATLAB maneja una gran cantidad de funciones, a continuacin


unos ejemplos:

Ejemplo 12
sin(0:pi/2:2*pi)

ans =

0 1.0000 0.0000 -1.0000 -0.0000

Ejemplo 13
cos(0:pi/2:2*pi)

ans =

1.0000 0.0000 -1.0000 -0.0000 1.0000

Ejemplo 14
exp(2*pi*i)

ans =

1.0000 - 0.0000i

Ejemplo 15
exp(log(2))

ans =

Ejemplo 16
sin(pi)^2+cos(pi)^2

ans =

Ejemplo 17
(exp(5)+exp(-5))/2

ans =
74.2099

EDU cosh(5)

ans =

74.2099

Ejemplo 18
cosh(5)^2-sinh(5)^2

ans =

1.0000

Tambin se puede trabajar con funciones estadsticas, a


continuacin un ejemplo:

Ejemplo 19
El nmero de ptalos de 13 flores de una determinada especie es el siguiente: 8,
10, 6, 5, 8, 11, 8, 10, 7,10, y 9. Calcular la media, la varianza y el coeficiente de
variacin.

EDU V=[8, 10, 6, 5, 8, 11, 8, 10, 7, 10, 9];


EDU Media=mean(V)

Media =

8.3636

EDU Varianza=var(V,1)

Varianza =

3.1405

EDU Coeficiente_de_variacin=std(V,1)/mean(V)

Coeficiente_de_variacin =

0.2119
Captulo IV
lgebra Lineal Numrica

Ejemplo 20
Calcular las races de la ecuacin 2 x 3 + 11x 2 + 12 9 = 0
EDU solve('2*x^3+11*x^2+12*x-9','x')

ans =

[ 1/2]
[ -3]
[ -3]

La grfica de esta funcin muestra las races calculadas

350

300

250

200

150

100

50

-50
-4 -3 -2 -1 0 1 2 3 4

Ejemplo 21
Resolver el siguiente sistema de ecuaciones:

x + y + z =1
3x + y = 3
x 2y z = 0

EDU [x,y,z]=solve('x+y+z=1, 3*x+y=3, x-2*y-z=0','x,y,z')


x=

4/5

y=

3/5

z=

-2/5

Ejemplo 22
Calcular el polinomio interpolador de segundo grado que pasa por los puntos (-
1,4), (0,2) y (1,6) en el sentido de mnimos cuadrados

EDU x=[-1,0,1];y=[4,2,6];p=polyfit(x,y,2)

p=

3.0000 1.0000 2.0000

El polinomio interpolador es 3x 2 + x + 2

16

14

12

10

0
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
Captulo V
Curvas y superficies

Ejemplo 23
Hacer una grfica de sectores para los datos 1, 3, 0.5, 2.5 y 2
EDU x=[1 3 0.5 2.5 2];
EDU pie(x)

11%

22%

33%

28%

6%

Ejemplo 24
Graficar la funcin f ( x ) = sin ( x )e 0.4 x en el intervalo [0,10]
EDU x=0:0.05:10;
EDU y=sin(x).*exp(-0.4*x);
EDU plot(x,y)
0.6

0.5

0.4

0.3

0.2

0.1

-0.1

-0.2
0 1 2 3 4 5 6 7 8 9 10
Ejemplo 25
Graficar la curva en paramtricas x(t ) = 4 cos(t ) cos(4t ) , y (t ) = 4 sin (t ) sin (4t ) para
0 t 2
EDU t=0:0.1:2*pi;
EDU x=4*cos(t)-cos(4*t);
EDU y=4*sin(t)-sin(4*t);
EDU plot(x,y)

-1

-2

-3

-4

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

Ejemplo 26
Representar las curvas sin ( x ) , sin (2 x ) y sin (3 x )
EDU fplot('[sin(x), sin(2*x), sin(3*x)]', [0,2*pi])

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6
Ejemplo 27
Graficar la curva en coordenadas polares r = sin (2 )cos(2 ) en el intervalo
0 2

EDU theta=0:0.1:2*pi;
EDU r=sin(2*theta).*cos(2*theta);
EDU polar(t,r)

90
0.5
120 60

0.4

0.3
150 30

0.2

0.1

180 0

210 330

240 300

270

Ejemplo 28
Graficar las curvas y = sin ( x ) e y = ln x , colocndose el texto de cada ecuacin
adecuadamente dentro de la grfica, el ttulo de la grfica y de los dos ejes.

EDU x=linspace(0,2,30);
EDU y=sin(x.^2);
EDU plot(x,y)
EDU text(1,0.8, 'y=sin(x^2)')
EDU hold on
EDU z=log(sqrt(x));
Warning: Log of zero.
EDU plot(x,z)
EDU text(1,-0.1, 'y=log(sqrt(x))')
EDU xlabel('Eje x')
EDU ylabel('Eje y')
EDU title('Grfica de funciones senoidal y logartmica')
Grfica de funciones senoidal y logartmica
1

y=sin(x 2)

0.5

0
y=log(sqrt(x))
Eje y

-0.5

-1

-1.5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Eje x

Ejemplo 29
Hacer la grfica de las funciones y = sin ( x ) e y = cos( x ) , colocadas una al lado de
la otra con sus nombres y con el eje x tomando valores entre 0 y 2 y en el eje y
tomando valores entre 1 y 1.

EDU x=(0:0.1:4*pi);
EDU y=sin(x);
EDU z=cos(x);
EDU subplot(1,2,1);
EDU plot(x,y), axis([0 2*pi -1 1]), title('funcin seno')
EDU subplot(1,2,2);
EDU plot(x,z), axis([0 2*pi -1 1]), title('funcin coseno')
funcin seno funcin coseno
1 1

0.8 0.8

0.6 0.6

0.4 0.4

0.2 0.2

0 0

-0.2 -0.2

-0.4 -0.4

-0.6 -0.6

-0.8 -0.8

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

Ejemplo 30
Graficar las funciones seno, coseno, secante y cosecante, colocadas en una
matriz de cuatro grficas entre [ 2 , 2 ]

EDU subplot(2,2,1);
EDU ezplot('sin(x)', [-2*pi 2*pi])
EDU subplot(2,2,2);
EDU ezplot('cos(x)', [-2*pi 2*pi])
EDU subplot(2,2,3);
EDU ezplot('csc(x)', [-2*pi 2*pi])
EDU subplot(2,2,4);
EDU ezplot('sec(x)', [-2*pi 2*pi])

sin(x) cos(x)

1 1

0.5 0.5

0 0

-0.5 -0.5

-1 -1

-6 -4 -2 0 2 4 6 -6 -4 -2 0 2 4 6
x x

csc(x) sec(x)

6 6

4 4

2 2

0 0

-2 -2

-4 -4

-6 -6

-8 -8
-6 -4 -2 0 2 4 6 -6 -4 -2 0 2 4 6
x x
Ejemplo 31
Representar la hlice paramtrica x(t ) = sin (t ) , y (t ) = cos(t ) , z (t ) = t , para valores
0 t 10 separados / 50

EDU t=0:pi/50:10*pi;
EDU plot3(sin(t),cos(t),t)
EDU grid on
EDU axis square

35

30

25

20

15

10

0
1

0.5 1
0.5
0
0
-0.5
-0.5
-1 -1

Ejemplo 32
Representar la superficie cuya ecuacin explcita es la siguiente:

sin x 2 + y 2
z=
x2 + y 2

EDU [X,Y]=meshgrid(-7.5:.5:7.5);
EDU Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
EDU surf(X,Y,Z)
Ejemplo 33
Hacer la misma grfica del ejemplo 32 con curvas de nivel

EDU [X,Y]=meshgrid(-7.5:.5:7.5);
EDU Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
EDU surfc(X,Y,Z)
Ejemplo 34
Hacer la malla del ejemplo 32

EDU [X,Y]=meshgrid(-7.5:.5:7.5);
EDU Z=sin(sqrt(X.^2+Y.^2))./sqrt(X.^2+Y.^2);
EDU mesh(X,Y,Z)

Ejemplo 35
Considerar la superficie z = x 2 y 2 representndola con iluminacin fuerte,
sombreado denso y colores grisceos.

EDU [X,Y]=meshgrid(-2:.05:2);
EDU Z=X.^2-Y.^2;
EDU surf(X,Y,Z), shading interp, brighten(0.75),colormap(gray(5))
Captulo VI
Programacin y Mtodos Numricos

MATLAB puede utilizarse como un lenguaje de programacin de


alto nivel que incluye estructuras de datos, funciones,
instrucciones de control de flujo, manejo de entradas y salidas e
incluso programacin orientada a objetos.
Los programas de MATLAB suelen escribirse en archivo
denominados M-files. Este tipo de archivos es un cdigo MATLAB
que ejecuta una serie de comandos o funciones que aceptan
argumentos y producen una salida. Los M-files se crean utilizando
el editor de texto.

Ejemplo 36
Hacer un programa MATLAB que haga grficas de coordenadas polares
90 90
2 1
120 60 120 60
0.8
1.5
0.6
150 1 30 150 30
0.4
0.5
0.2

180 0 180 0

210 330 210 330

240 300 240 300


270 270

90 90
1 5
120 60 120 60
0.8 4

0.6 3
150 30 150 30
0.4 2

0.2 1

180 0 180 0

210 330 210 330

240 300 240 300


270 270

Ejemplo 37
A continuacin se define la funcin fun1(x)=x^3-2x+cosx, creando el
correspondiente M-file de nombre fun1.m, para ello abrimos el editor de texto.

EDU fun1(3*pi/2)

ans =

95.2214

EDU help fun1

Definicin de una funcin simple


Ejemplo 38
Se construye un m-file de nombre ecuacion2.m que contiene la funcin ecuacion2,
cuyos argumentos son los tres coeficientes de la ecuacin ax 2 + bx + c = 0 y cuyas
salidas son las dos soluciones

EDU [x1,x2]=ecuacion2(1,2,3)

x1 =

-1.0000 + 1.4142i

x2 =

-1.0000 - 1.4142i

EDU help ecuacion2

Esta funcin resuelve la ecuacn de segundo grado ax^2+bx+c=0


cuyos coeficientes son a, b y c (parmetros de entrada)
y cuyas soluciones son x1 y x2 (parmetros de salida)
MATLAB tiene los comandos for, while, if elseif. MATLAB dispone
de su propia versin de DO (definida en la sintaxis de la mayora
de los lenguajes de programacin). Esta sentencia permite
ejecutar de forma repetitiva un comando o grupo de comandos
varias veces.

Ejemplo 39
Uso del comando for

EDU matriz(4,5)

ans =

1.0000 0.5000 0.3333 0.2500 0.2000


0.5000 0.3333 0.2500 0.2000 0.1667
0.3333 0.2500 0.2000 0.1667 0.1429
0.2500 0.2000 0.1667 0.1429 0.1250

EDU help matriz

Definicin de una matriz a la medida

Ejemplo 40
Utilizar el Mtodo de Newton para resolver la ecuacin x 2 x sin ( x + 0.15) = 0
partiendo de x0 = 1.5 y con una precisin de 0.0001
EDU [x,it]=newton('f1','derf1',1.5,0.0001)

x=

1.6101

it =

Ejemplo 41
2

1
Utilizar el mtodo del trapecio para resolver la integral dx
x2 + 1
0
10

EDU trapeciocompuesta('integrando1',0,2,14)

ans =

Columns 1 through 7
10.2439 6.0310 4.6569 4.4737 4.4711 4.4713 4.4714

Columns 8 through 14

4.4714 4.4714 4.4714 4.4714 4.4714 4.4714 4.4714

Column 15

4.4714

Ejemplo 42
Resolver por el mtodo de Newton con una precisin 0.00005 el clculo de una
raz de la ecuacin x 3 10 x 2 + 29 x 20 = 0 cercana al punto x=7.

EDU [x,it]=newton('f302','f303',7,0.00005)

x=

5.0000

it =

Ejemplo 43
Como ltimo ejemplo de esta introduccin presentamos un pequeo programa de
aplicacin del mtodo de elementos finitos al clculo de deformaciones y fuerzas
en los nodos de estructuras compuestas por resortes.

% Este programa resuelve problemas de estructuras con resortes utilizando


el mtodo de elementos finitos
% Captura del nmero de nodos y el nmero de elementos
N=input('Nmero de elementos en la estructura '); % Nmero
de resortes en la estructura
NN=input('Nmero de nodos en la estructura '); % Nmero
de nodos en la estructura
F=zeros(NN,1);
U=zeros(NN,1);
Datos=zeros(NN,4);
% Captura de la tabla de conectividades y rigidez de cada resorte
for i=1:1:N
Datos(i,1)=input('Elemento nmero '); % Etiqueta
del elemento
Datos(i,2)=input('Nodo Local 1 '); % Tabla de
conectividades
Datos(i,3)=input('Nodo Local 2 '); % Tabla de
conectividades
Datos(i,4)=input('rigidez '); % Rigidez
del elemento
end
% Captura de las condiciones de frontera en cada nodo
nodosbc=zeros(NN,1);
for i=1:1:NN
i
nodosbc(i,1)=input('Condicin de frontera en el nodo '); % 0 si se
conoce el desplazamiento, 1 si se conoce la fuerza
if nodosbc(i,1)==1
F(i,1)=input('Valor de la fuerza '); % Para el
caso en que se conoce la fuerza
end
end
% Ensamble de la matriz de rigidez
K=zeros(NN,NN);
KBC=zeros(NN,NN);
for i=1:1:N
kres=Datos(i,4);
k=SpringElementStiffness(kres); % Matriz
de rigidez elemental
K=SpringAssemble(K,k,Datos(i,2),Datos(i,3)); % Ensamble
del elemento en base a la tabla de conectividades
end
KBC=K; % Matriz
ensamblada con con condiciones de frontera
for i=1:1:NN
if nodosbc(i,1)==0
for j=1:1:i-1
KBC(j,i)=0;
F(j,1)=F(j,1)-K(j,i)*U(j,1);
end
KBC(i,i)=-1;
F(j,1)=F(j,1)-K(i,i)*U(i,1);
for j=i+1:1:NN
KBC(j,i)=0;
end
end
end
x=inv(KBC)*F;
for i=1:1:NN
if nodosbc(i,1)==1
U(i,1)=x(i,1);
end
if nodosbc(i,1)==0
F(i,1)=x(i,1);
end
end

function y = SpringElementStiffness(k)
%SpringElementStiffness This function returns the element stiffness
% matrix for a spring with stiffness k.
% The size of the element stiffness matrix
% is 2 x 2.
y = [k -k ; -k k];

function y = SpringAssemble(K,k,i,j)
%SpringAssemble This function assembles the element stiffness
% matrix k of the spring with nodes i and j into the
% global stiffness matrix K.
% This function returns the global stiffness matrix K
% after the element stiffness matrix k is assembled.
K(i,i) = K(i,i) + k(1,1);
K(i,j) = K(i,j) + k(1,2);
K(j,i) = K(j,i) + k(2,1);
K(j,j) = K(j,j) + k(2,2);
y = K;
EDU FEMRESORTES
Nmero de elementos en la estructura 6
Nmero de nodos en la estructura 5
Elemento nmero 1
Nodo Local 1 1
Nodo Local 2 3
rigidez 120
Elemento nmero 2
Nodo Local 1 3
Nodo Local 2 5
rigidez 120
Elemento nmero 3
Nodo Local 1 3
Nodo Local 2 5
rigidez 120
Elemento nmero 4
Nodo Local 1 3
Nodo Local 2 4
rigidez 120
Elemento nmero 5
Nodo Local 1 5
Nodo Local 2 4
rigidez 120
Elemento nmero 6
Nodo Local 1 4
Nodo Local 2 2
rigidez 120
i=

Condicin de frontera en el nodo 0

i=

Condicin de frontera en el nodo 0

i=

Condicin de frontera en el nodo 1


Valor de la fuerza 0
i=

Condicin de frontera en el nodo 1


Valor de la fuerza 0

i=

Condicin de frontera en el nodo 1


Valor de la fuerza 20

EDU U

U=

0
0
0.0897
0.0769
0.1410

EDU F

F=

-10.7692
-9.2308
0
0
20.0000
Conclusin

Esta es una breve introduccin al MATLAB, que puede ser definido


como un entorno integrado de trabajo que permite el anlisis y la
computacin matemtica interactivo de forma sencilla con ms de
500 funciones matemticas, estadsticas y tcnicas
implementadas, as como la visualizacin a travs de todo tipo de
grficos de ingeniera y cientficos.
Tambin es posible con el mdulo bsico de MATLAB el desarrollo
de algoritmos a travs de un lenguaje propio de programacin que
resulta ser abierto, extensible y de sintaxis similar al C.
La recomendacin es consultar los manuales de MATLAB y
conocer que tipo de libros se han escrito de diferentes reas del
conocimiento teniendo como base MATLAB.

Ligas importantes

http://www.mathworks.com/

http://www.mathworks.com/academia/student_version/

http://www.mathworks.com/academia/student_version/learnmatlab.
pdf

http://www.mathworks.com/support/books/

http://www.mathworks.com/support/books/index_by_languagetitle.h
tml?language=18&sortby=title

Vous aimerez peut-être aussi