You are on page 1of 91

Seminario Introduccin a

MATLAB - SIMULINK
Dr. Jess Fraile Ardanuy
ETSI Caminos, Canales y Puertos
Universidad Politcnica de Madrid
Dpto. de Ingeniera Civil: Hidrulica y Energtica

Guin del Seminario

Introduccin.
Primeras instrucciones con MATLAB.
Entorno de trabajo.
Vectores.
Matrices.
Ficheros con extensin M.
Operaciones lgicas y de relacin.
Control de flujo.
Introduccin a MATLAB:
Aplicaciones a la ingeniera

Guin del Seminario

Funciones de MATLAB.
Grficos en dos dimensiones.
Grficos en tres dimensiones.
Anlisis de datos.
Polinomios.
Ajuste de datos e interpolacin.
Ecuaciones diferenciales con MATLAB.
Sistemas de control.
Anlisis de sistemas dinmicos con SIMULINK.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

Qu es MATLAB?
MATLAB es un entorno de programacin orientado
al clculo numrico. Especialmente indicado para:

Anlisis numrico.
Clculo matricial.
Procesamiento de seales.
Grficos.

MATLAB = MATrix LABoratory


Creado en las universidades de New Mexico y
Stanford (en Fortran) para teora de matrices y
lgebra lineal.
En 1984 se crea Mathworks y se reescribe en C.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

MATLAB, TOOLBOXES,
SIMULINK y BLOCKSETS

SIMULINK

MATLAB Toolboxes

ENTORNO GRFICO

ENTORNO CLSICO

Blocksets

Introduccin a MATLAB:
Aplicaciones a la ingeniera

Abriendo el programa..
Haced clic sobre el icono
Se abre la siguiente ventana:

Command Window
Launch Pad

Command History

Introduccin a MATLAB:
Aplicaciones a la ingeniera

MATLAB funcionando como


una calculadora
Desde el prompt de MATLAB >>, se
introducen las operaciones a realizar:
>> 3+6
>> 5*5-4/3+2^2

Qu ocurre al pulsar ENTER?


El resultado aparece en

Introduccin a MATLAB:
Aplicaciones a la ingeniera

ans
7

Variables en MATLAB
MATLAB permite utilizar en cualquier
momento variables:
>> eCinetica=10
>> ePotencial=20
>> eTotal=eCinetica+ePotencial

Introduccin a MATLAB:
Aplicaciones a la ingeniera

Caractersticas de las
variables
No es necesario definir previamente las
variables.
Son sensibles a maysculas o minsculas.
Mximo nmero de caracteres: 31
Deben comenzar por letra, seguida de
letra, nmero o guin de subrayado.
NO SE PUEDEN UTILIZAR SIGNOS DE
PUNTUACIN

Introduccin a MATLAB:
Aplicaciones a la ingeniera

Variables definidas por


defecto
ans respuesta por defecto.
i,j representan el nmero
imaginario puro.
inf representa infinito.
NaN representa a las
indeterminaciones del tipo 0/0.
pi 3,1415927
Introduccin a MATLAB:
Aplicaciones a la ingeniera

10

Visualizacin de las
variables
Desde Command Window:
>> whos
Name

Size

Bytes

Class

eCinetica
1x1
8 double array
ePotencial
1x1
8 double array
eTotal
1x1
8 double array
Grand total is 3 elements using 24 bytes

Desde Workspace:

Introduccin a MATLAB:
Aplicaciones a la ingeniera

11

Eliminando variables
clear nombreVariable
clear all

Comentarios y signos de
puntuacin

El punto y coma ; impide mostrar los


resultados parciales.
Tambin permite combinar varias
instrucciones en la misma lnea:
>> alfa=2;beta=1;gamma=alfa+beta

Se pueden aadir comentarios con %


Introduccin a MATLAB:
Aplicaciones a la ingeniera

12

EJERCICIO 1
Calcular el valor de la resistencia del
circuito, conocidas las medidas de tensin y
corriente. (V=10 V, A= 20 A).
Calcular la
potencia elctrica
disipada.
Observe las
variables utilizadas
Introduccin a MATLAB:
Aplicaciones a la ingeniera

13

MATLAB como calculadora


cientfica

Funciones trigonomtricas:
cos, sin, tan, acos, etc.

NOTA: Los ngulos deben expresarse en


RADIANES!
Funciones exponenciales:
^, exp, log, log10, etc.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

14

Formato
format:
short formato de coma fija con 4
decimales (opcin por defecto)
long formato de coma fija con 15
decimales
rat Aproxima por un nmero racional
long e Notacin cientfica 15 decimales
short e Notacin cientfica 4 decimales
hex Hexadecimal

Introduccin a MATLAB:
Aplicaciones a la ingeniera

15

Funciones sobre nmeros


complejos
Z1=complex(3,4)
Z2=8-j*9;
abs(Z1)
Mdulo.
angle(Z1)
Argumento.
conj(Z1)
Conjugado.
compass([Z1 Z2])
Introduccin a MATLAB:
Aplicaciones a la ingeniera

16

Funciones de redondeo
fix
floor
ceil
round
ms
sign

redondea hacia cero.


redondea hacia abajo (-)
redondea hacia arriba (-)
redondea hacia el entero
prximo.
Indica el signo positivo o
negativo.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

17

Entorno de trabajo

Command Window

Launch Pad

Command History
Introduccin a MATLAB:
Aplicaciones a la ingeniera

18

Entorno de trabajo (II)

Workspace

Current Dirtectory

Introduccin a MATLAB:
Aplicaciones a la ingeniera

19

Ayuda en MATLAB
Desde el espacio de trabajo:
help NombreFuncion
Probad: help sin
Seleccionando Help en el escritorio
de MATLAB

Introduccin a MATLAB:
Aplicaciones a la ingeniera

20

Vectores
X= 0 0.1

0.2 0.3 0.4 0.5 0.6 0.7

Formas de definir un vector:


Directamente: >>x=[0,0.1*pi 0.2*pi...];
Formas compactas:
>> x=[primero:incremento:ultimo];
>>x=[0:0.1*pi:2*pi];

>>x=linspace(primero,ultimo,numeroElementos);
>>x=linspace(0,2*pi,21);
>>x=logspace(10ValorInicial,10ValorFinal,numElement)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

21

Manipulacin de Vectores
X= 0 0.1

0.2 0.3 0.4 0.5 0.6 0.7


X(8)

X= 0 0.1

0.2 0.3 0.4 0.5 0.6 0.7


X(3:5)

length(X)

size(X)

Se pueden construir nuevos vectores a partir de los anterio


Y=X(3:end)
Par=X(2:2:end)
Impar=X(1:2:end)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

22

Operaciones con vectores


Operaciones escalar-vector:
A=[1:5];B=[1:2:9];
A-1
2*B
Operaciones vector-vector:
2*A-B
A*B
A.*B
A./B
Otras operaciones:
sum(A)
prod(B)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

23

Grficos simples
Grficos 2D:
t=[0:.1:2*pi];x=sin(t);y=cos(t);
plot(t,x)
plot(t,x,t,y);
Grficos 3D:
plot3(t,x,y)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

24

EJERCICIO 2
Descomposicin de una funcin
cuadrada peridica en series de Fourier:
t=[-2:.01:2];
w=2*pi;
x1=cos(w*t);
x2=-cos(3*w*t)/3;
x3=cos(5*w*t)/5;
x4=-cos(7*w*t)/7;
x=(x1+x2+x3+x4);
xFin=(4/pi)*x;
plot(t,xFin) Introduccin a MATLAB:
Aplicaciones a la ingeniera

25

MATRICES
1
A=
A(:,1)

2
4
8

3
5
9

6 A(2,3)

A=[1,2,3;4 5 6;7 8 9];


A(fila,columna)
B=A Transposicin
B=A(columna,fila)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

26

EJERCICIO 3
Construir las matrices A y B,
conocidas las matrices C y D.
C=[1 2 3];D=[4;5;6];
A= 1 2 3
B= 1 4 3 6
456
2525
321
3614
C=[1 2 3];D=[4;5;6];
A=[C;D;C(3:-1:1)];
B=[C D]
B=[B Introduccin
B(3:-1:1,:)]
a MATLAB:
Aplicaciones a la ingeniera

27

Matrices especiales

Matriz nula: ceros(filas,columnas)


Matriz unidad:
ones(filas,columnas)
Matriz identidad: eye(filas,columnas)
Matriz diagonal: diag(vectorDiagonal)
Matriz aleatoria uniforme entre 0,1:
rand(filas,columnas)
Matriz aleatoria gaussiana med. 0, var1:
randn(filas,columnas)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

28

Manipulacin de matrices
A=[1 2 3;4 5 6;7 8 0];

Probad las
siguientes
instrucciones

rot90(A)
fliplr(A)
flipud(A)
triu(A)
tril(A)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

29

Operaciones con Matrices


A=[1 2;4 5]

B=[-1 0;2 3];

Escalar por matriz:


2*A
Sumas y Restas: A-B
Producto:
A*B
Determinante:
det(A)
Divisin:
B/A
Rango: rank(B)
Traza: trace(A)
Inversa:
inv(A), A^-1
Autovalores: [AutoVector,AutoValor]=eig(A)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

30

Ficheros *.M
Son grupos de instrucciones de
MATLAB que se ejecutan en bloque.
Evitan realizar tareas repetitivas.
Para ejecutar este fichero, basta
con llamarlo (sin extensin!) desde
el Espacio de Trabajo.
Es un fichero ASCII pero MATLAB
dispone de un editor propio.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

31

Ficheros *.M

Introduccin a MATLAB:
Aplicaciones a la ingeniera

32

Ficheros *.M

Introduccin a MATLAB:
Aplicaciones a la ingeniera

33

Operaciones lgicas y de
relacin

Mayor que: >


Menor que: <
Mayor o igual que: >=
Menor o igual que:=<
Igual que: ==
Distinto que: =
AND: &
OR: |
NOT:

Vector=[1 2 3 4 5 6];

Vector>3
Vector==2
(Vector>3)&(Vector<6)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

34

Control de flujo
Bucles for-end. Repiten un grupo de
instrucciones un nmero fijo de veces:

for n=1:4
x(n)=n.*n;
end;
NO UTILIZAR i,j como ndices!

Introduccin a MATLAB:
Aplicaciones a la ingeniera

35

Control de flujo II
Bucles while-end. Repiten un
grupo de instrucciones hasta que
se cumpla una condicin:
a=0;
for a<10
a=a+1;
end;

Introduccin a MATLAB:
Aplicaciones a la ingeniera

36

Control de flujo III


Estructuras if-elseif-else-end.
Permiten ejecutar distintas instrucciones
en funcin de una serie de relaciones:

t=0:.1:2*pi;
Y=sin(t);Z=Y;
for n=1:length(t)
if Y(n)<=0
Z(n)=0;
end;
end;
plot(t,Y,t,Z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

37

Creacin de Funciones
Similares a los archivos *.M
Se comunican con MATLAB a travs de
las variables que se pasan a la funcin.
Su estructura es:
function[VarSalida]=NombrFun(VarEntrada)
Se edita la funcin con el editor de archivos
*.M y se graba. El nombre de la funcin,
NombrFun, y el nombre del archivo deben
coincidir.
Introduccin a MATLAB:
Aplicaciones a la ingeniera

38

Creacin de Funciones II
El nombre est limitado a 31 caracteres y debe comenzar por
una letra.
El nombre no es sensible a las letras maysculas /
minsculas, en Windows.
La primera lnea: DECLARACIN DE FUNCIN (debe contener
la palabra function).
Las siguientes lneas son comentarios y sirven para explicar
el funcionamiento cuando se solicita a travs de help
NombrFun.
Las variables definidas dentro de una funcin son locales.
Para acceder a ellas desde el espacio de trabajo, hay que
definirlas como variables globales:
global Variable1 Variable2
Se pueden agrupar para formar una TOOLBOX personalizada.
Introduccin a MATLAB:
Aplicaciones a la ingeniera

39

Ejemplo Creacin de
Funciones
%
%
%
%
%
%

Funcion CUBO
Esta funcion eleva al cubo cualquier escalar,
vector o matriz.
Jesus Fraile Ardanuy

function y=cubo(x)
y=x.*x.*x;

Introduccin a MATLAB:
Aplicaciones a la ingeniera

40

Ejemplo Creacin de
Funciones (II)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

41

Ejemplo Creacin de
Funciones (III)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

42

Grficos

Introduccin a MATLAB:
Aplicaciones a la ingeniera

43

Grficos 2 dimensiones
La instruccin principal es plot.

x=linspace(0,2*pi,20);
y=sin(x);z=cos(x);
plot(x,y,b:,x,z,rv);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

44

Grficos 2 dimensiones
Tratamiento del TEXTO sobre los grficos.
xlabel(EjeX);
ylabel(EjeY);
title(Curvas);
grid
text(pX,pY,Texto)
gtext(Texto);
legend(Curva1,Curva2)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

45

Grficos 2 dimensiones
Utilizacin de la ventana grfica de MATLAB:

Introduccin a MATLAB:
Aplicaciones a la ingeniera

46

Grficos 2 dimensiones
Modificacin de:

Tipo de letra.
Tamao de letra.
Anchura de las lneas.
Letras griegas.

t=0:.05:2*pi;
w=1;
x=cos(w*t);

plot(t,x,r,LineWidth,4);
title(Grafica x_1 con \omega=1);
text(2,0.2,COS,fontname,arial
,fontsize,14);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

47

Grficos 2 dimensiones
hold on/off

Se pueden dibujar varias grficas en las misma


pantalla.
x=[0:.1:2*pi];
y=sin(x);
z=cos(x)
subplot(2,1,1);
plot(x,y);
subplot(2,1,2);
plot(x,z);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

48

Grficos 2 dimensiones
semilogx
semilogy
loglog

x=[0.1:.1:2*pi];
y=sin(x);
z=2+sin(5*x);
subplot(2,1,1);
semilogx(x,y);
subplot(2,1,2);
loglog(x,z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

49

Grficos 2 dimensiones
Grficos polares:
T=0:0.01:2*pi;
R=sin(2*T).*cos(2*T);
polar(T,R);

T=0:pi/90:2*pi;
R=2*sin(T).^2;
polar(T,R);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

50

Grficos 2 dimensiones
Otras instrucciones de dibujos en dos dimensiones:
pie Representa grficos de tarta.
bar Grficos de barras.
bar3 Grficos de barras en 3 D.
stairs
Grficos de escalera.
hist Histogramas.
plotyy
Representa en la misma grfica
2 funciones con el mismo eje X.
Complejos:
compass

feather

Introduccin a MATLAB:
Aplicaciones a la ingeniera

51

Grficos 3 dimensiones
plot3(x,y,z)
t=0:0.2:10*pi;
E=exp(-0.05*t);
Dib1=E.*sin(t);
Dib2=E.*cos(t);
plot3(Dib1,Dib2,t);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

52

EJERCICIO 4
Dibujar
la
siguiente
curva
tridimensional. Con los siguientes
parmetros a=10, b=1,c=0.3, 0 t2.
a=10;
b=1;
c=0.3;
t=0:.05:2*pi;
x=b*cos(t);
y=b*sin(t);
z=c*cos(a*t);
plot3(x,y,z);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

53

Dibujo de superficies
Evala la funcin Z=f(x,y).
La fila i-sima de la matriz Z ser f(x,y(i)),
donde se mantiene constante la variable x
durante toda la evaluacin de la fila.
Del mismo modo, la columna j-sima
corresponde a f(x(j),y), donde se mantiene
constante la variable y.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

54

Dibujo de superficies
Z=f(x,y)
x = [-2 1 0]
y=[1 2 3]
Z debe evaluarse en:
Z=
x

f(-2,1) f(-2,2) f(-2,3)

Constante la variable

f(-1,1) f(-1,2) f(-1,3)


f(0,1) f(0,2) f(0,3)

Constante la

Introduccin a MATLAB:
Aplicaciones a la ingeniera

55

Dibujo de superficies
Dados los mrgenes de variacin de
las variables independientes x e y, es
necesario construir una red de pares
a travs de la funcin:
[X,Y]=meshgrid(x,y)
Y=

X=

x=[-2 1 0]
y=[1 2 3]
[X,Y]=meshgrid(x,y)

-2

-1

-2

-1

-2

-1

POSTERIORMENTE, SE EVALA LA FUNCIN MEDIANTE LA


INSTRUCCIN mesh(Z), donde Z=f(X,Y).
Introduccin a MATLAB:
Aplicaciones a la ingeniera

56

EJERCICIO 5
Dibujar
mediante
una
malla
tridimensional la superficie generada
por la expresin:
en el intervalo
(7.5, +7.5).
x=-7.5:.5:7.5;y=x;

Z=sin(R)./R;

[X,Y]=meshgrid(x,y);

mesh(X,Y,Z);

R=sqrt(X.^2+Y.^2)+eps;

title('Sombrero
mexicano');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

57

EJERCICIO 5

Z=sin(R)./R;
mesh(X,Y,Z);
title('Sombrero
mexicano');
Introduccin a MATLAB:
Aplicaciones a la ingeniera

58

Superficies
El color de la superficie est relacionado con el
valor de la variable Z (azul, valores pequeos y
rojo para los mayores).
meshc(Z)
Dibuja la malla
tridimensional y
las curvas de nivel.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

59

Superficies
waterfall(Z)
Genera la malla
tridimensional con las
lneas dispuestas a lo
largo del eje x.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

60

Otras funciones para crear


volmenes
sphere(n)

[X,Y,Z]=sphere(15);
mesh(X,Y,Z);
hidden on;
axis square;
title('Esfera opaca');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

61

Otras funciones para crear


volmenes
[X,Y,Z]=cylinder(1,15);
mesh(X,Y,Z);

cylinder(n)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

62

Superficies
tridimensionales slidas
surf(Z)

x=-1.5:.1:1.5;y=x;
[X,Y]=meshgrid(x,y);
Z=sqrt(9-X.^2-Y.^2);
figure(1);
surf(Z);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

63

Tabla de colores
colormap(hot)
colormap(cool
)
colormap(pink
)
colormap(flag
)

Introduccin a MATLAB:
Aplicaciones a la ingeniera

64

Otras instrucciones para


crear vlmenes slidos
surfc(Z) Crea el volumen slido y las
lneas de nivel.
t=0:.2:2*pi;
y=2-sin(t);
[X,Y,Z]=cylinder(y,20)
surfc(X,Y,Z);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

65

Otras instrucciones para


crear vlmenes slidos
surfnorm(X,Y,Z) Crea el volumen
slido y los vectores perpendiculares a la
superficie.
t=0:.2:2*pi;
y=2-sin(t);
[X,Y,Z]=cylinder(y,20)
surfnorm(X,Y,Z);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

66

Grficos de contorno
Muestran las lneas de nivel en 2 y 3 D.

contour(X,Y,Z,numLin) contour3(X,Y,Z,numL)
[X,Y,Z]=peaks(25);
contour(X,Y,Z,20);

[X,Y,Z]=peaks(25);
contour3(X,Y,Z,20);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

67

Cambio del punto de


visin

Antiguas versiones de MATLAB:


view(Azimuth,Elevacion)
Ahora se hace directamente desde
la ventana de figura.
r=[0:0.05:1]';
phi=0:pi/20:2*pi;
x=r*cos(phi);
y=r*sin(phi);
z=besselj(1,3.8316*r)*cos(phi);
surf(x,y,z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

68

Cambio del punto de


visin

Antiguas versiones de MATLAB:


view(Azimuth,Elevacion)
Ahora se hace directamente desde
la ventana de figura.
r=[0:0.05:1]';
phi=0:pi/20:2*pi;
x=r*cos(phi);
y=r*sin(phi);
z=besselj(1,3.8316*r)*cos(phi);
surf(x,y,z);
Introduccin a MATLAB:
Aplicaciones a la ingeniera

69

Anlisis de datos
MATLAB dispone de una serie de
instrucciones para realizar anlisis
estadsticos bsicos.
Adems, dispone del Statistics
Toolbox.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

70

EJERCICIO 6
Se dispone de la medida de la cotizacin (media mensual) de
la bolsa en los ltimos 12 meses. Para introducir las
funciones especficas de anlisis de datos y como se
desconoce los valores exactos de los niveles burstiles, se
crea un vector con valores aleatorios comprendidos entre
6000 y 8000
meses=1:12;
aleat=rand(1,12)*2e3;
bolsa=aleat+6e3;
plot(meses,bolsa);
title('Cotizacin');
xlabel('Meses');
ylabel('Valor');
Introduccin a MATLAB:
Aplicaciones a la ingeniera

71

Instrucciones bsicas de
estadstica
Valor medio
mean(bolsa)
Desviacin tpica
std(bolsa)
Mximo
max(bolsa)
Mnimo
min(bolsa)
Suma acumulada
cumsum(bolsa)
Histogramas
hist(bolsa)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

72

Polinomios
MATLAB representa los polinomios
como vectores cuyos elementos
son los coeficientes del polinomio
dispuestos en orden descendente.
Polinomio=[1 2 3 4 5];

Introduccin a MATLAB:
Aplicaciones a la ingeniera

73

Polinomios
Races:roots(polinomio)
Construccin del polinomio a partir
de sus races: poly([raices])

p1=-1;
p2=-3;
p3=-3+4*j;
p4=conj(p3);
polinomio2=poly([p1 p2 p3 p4])
Introduccin a MATLAB:
Aplicaciones a la ingeniera

74

Operaciones bsicas sobre


Polinomios

Suma:
del

Deben ser polinomios


mismo orden.
polin1+polin2
Producto: conv(polin1,polin2)
pol1=[1 2 3 4];
pol2=[1 2 1];
polMul=conv(pol1,pol2)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

75

Operaciones bsicas sobre


Polinomios
Divisin:
deconv(polin1)
Derivada:
polyder(polin1)
Integral:
polyint(polin1)
Descomposicin en fracciones simples:

polNum=[1 4 3 1];
polDer=[1,0,-1];
[r,p,k]=residue(polNum,polDer)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

76

Evaluacin del polinomio


Si se desconoce el orden del polinomio
y1=polyval(pol,x);
plot(x,y1);
xlabel('x');ylabel('y=x{^3}+2x{^2}+3x+1');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

77

Ajuste de datos e
interpolacin
Ajuste de curvas mediante polinomios:
Funci
n

polyfit(x,y,ordenPolinomio)
x=-3:.5:3;
y=3*x.^2+2*x+2*randn(1,length(x));
Ruido aleatorio
aadido

n1=1;
n2=2;
pol1=polyfit(x,y,n1)
pol2=polyfit(x,y,n2)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

78

Ajuste de curvas mediante


polinomios
Dibujando los resultados:
xi=-3:.1:3;
z1=polyval(pol1,xi);
z2=polyval(pol2,xi);
plot(x,y,'*r');
hold on;
plot(xi,z1,':b','LineWidth',2);
plot(xi,z2,'-.g','LineWidth',2);
hold off;
legend('Seal inicial','Ajuste
Lineal','Ajuste Cuadrtico');
Introduccin a MATLAB:
Aplicaciones a la ingeniera

79

Interpolacin
unidimensional

Dada una serie de muestras medidas,


se pretende estimar el valor del eje de
ordenadas, en los puntos intermedios.
interp1(datoX,datoY,puntoIntermedioEstimado)
Temperatura
f(10)
festimado(9.5)
f(9)

Tiempo
9

9.5

10

horas= 1:12;
temps =[ 5 8 9 15 25 29 31 30 22 25 27 24 ];
temperatura=interp1(horas,temps, 9.5)
Introduccin a MATLAB:
Aplicaciones a la ingeniera

80

Ecuaciones Diferenciales
La resolucin de ecuaciones
diferenciales con MATLAB se realiza en
tres
pasos:mediante una funcin de
Se define,
MATLAB, la ecuacin diferencial.
Se resuelve la ecuacin diferencial,
empleando uno de los mtodos de
integracin numrica disponibles.
-Se representa la evolucin temporal
de las variables de estado.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

81

Resolucin de ecuaciones
diferenciales
Se quiere resolver el sistema de ecuaciones
diferenciales ordinarias siguientes:

PRIMER PASO. CREACIN DE LA FUNCIN ec1.m


function yprima=ecuacion1(t,u)
yprima=zeros(2,1);% Predimenvect.estados.
yprima(1)=-u(1).*u(1)-u(2);
Introduccin a MATLAB:
yprima(2)=2*u(1)-u(2);

Aplicaciones a la ingeniera

82

Resolucin de ecuaciones
diferenciales (II)
SEGUNDO PASO. RESOLUCIN DE LA FUNCIN ec1.m
Tini=0;
Tfin=10;
Cond_Inic=[1;1]; % Las cond. ini. son un vector
[t,y]=ode23(@ecuacion1,[Tini,Tfin],Cond_Inic);

ode23 es un mtodo de integracin de paso variable

Introduccin a MATLAB:
Aplicaciones a la ingeniera

83

Resolucin de ecuaciones
diferenciales (III)
TERCERO PASO. DIBUJANDO las variables de ec1.m
x_t=y(:,1);
y_t=y(:,2);
plot(t,x_t,'b',t,y_t,'r');
legend('x(t)','y(t)');
xlabel('Tiempo');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

84

Resolucin de ecuaciones
diferenciales (IV)
DIBUJANDO el plano de fase de ec1.m
plot(x_t,y_t,'b','LineWidth',2);
xlabel('x(t)');ylabel('y(t)');
title('Plano de fase de la ec. dif.');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

85

EJERCICIO 7
Resolver la ecuacin del atractor de Lorentz definida
por el sistema de EDOs:

con las condiciones iniciales x(0)=z(0)=0 e y(0)=1.


Integrar en el periodo (0,20) segundos.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

86

EJERCICIO 7 (resolucin)
function yprima=caos(t,u)
yprima=zeros(3,1);
x=u(1);
y=u(2);
z=u(3);
xprima=-3*(x-y);
yprima=-x*z+26.5*x-y;
zprima=x*y-z;
yprima=[xprima;yprima;zprima];

Introduccin a MATLAB:
Aplicaciones a la ingeniera

87

EJERCICIO 7 (resolucin)
Tini=0;Tfin=20;
Cond_Inic=[0;1;0];
[t,y]=ode23(@caos,[Tini,Tfin],Cond_Inic);
x_t=y(:,1);
y_t=y(:,2);
z_t=y(:,3);
plot3(x_t,y_t,z_t);

Introduccin a MATLAB:
Aplicaciones a la ingeniera

88

EJERCICIO 8
Este ejemplo de ecosistema fue propuesto por el italiano Vito Volterra
(1860-1940). Considrense dos poblaciones; una de conejos (c(t)) y otra
de zorros (z(t)), que estn relacionadas mediante las siguientes
ecuaciones diferenciales:

El tiempo se mide en aos. Resolver el sistema de ecuaciones


diferenciales anterior y dibujar la solucin para =0.01, y la condicin
inicial, nmero de conejos c(0)=300 y nmero de zorros z(0)=150 en el
intervalo de tiempo de 0 a 25 aos.

Introduccin a MATLAB:
Aplicaciones a la ingeniera

89

EJERCICIO 8 (resolucin)
function
yprima=ecosistema(t,y)
alfa=0.01;
yprima=zeros(2,1);
c=y(1);
z=y(2);
yprima(1)=2*c-alfa*c*z;
yprima(2)=-z+alfa*c*z;

Introduccin a MATLAB:
Aplicaciones a la ingeniera

90

EJERCICIO 8 (resolucin)
[t,y]=ode23(@ecosistema,[0,25],[300;150]);
conejos=y(:,1);
zorros=y(:,2);
plot(t,conejos,'b',t,zorros,'r');
legend('Conejos','Zorros');

Introduccin a MATLAB:
Aplicaciones a la ingeniera

91

You might also like