You are on page 1of 9

Unidad 6: Solucin numrica de ecuaciones diferenciales

Para obtener la solucin de una ecuacin diferencial o de un sistema de ecuaciones diferenciales,


MATLAB cuenta con diversas herramientas para encontrar esa solucin, entre los cuales pueden
mencionarse a:

ode45: esta herramienta utiliza el mtodo de Runge-kuta de cuarto orden.

La sintaxis general para utilizar la funcin ode45 es la siguiente:

[t,y]=ode45(dy,tspan,c.i.) donde:
=
{ =
. . =
=
=

Ejemplo, resolver la ecuacin = ( ), para un intervalo de tiempo 0<t<120, con las

= 0.03 1
condiciones iniciales { = 27
(0) = 84
Solucin con MATLAB:

>> % ejemplo, resolver la ecuacion dT/dt=-0.03*(T-27), para un rango de tiempo t[0,120], c.i.
To=84

>> % 1) definir la ecuacion diferencial

>> dT=@(t,T) -0.03*(T-27)

dT =

@(t,T)-0.03*(T-27)

>> % 2) definir el rango de tiempo

>> t=0:0.5:120;

>> % 3) resolver la ecuacion diferencial

>> [t,T]=ode45(dT,t,84);

>> % graficar la solucion

>> plot(t,T)
>> % procedimeinto donde MATLAB, elige el vetor tiempo

>> % 1) definir la ecuacion diferencial

>> dT=@(t,T)-0.03*(t-27)

dT =

@(t,T)-0.03*(t-27)

>> % 2) RESOLVER LA ECUACION

>> [t,T]=ode45(dT,[0 120],84);

>> plot(t,T)

>> dT=@(t,T) -0.03*(t-27)

dT =

@(t,T)-0.03*(t-27)
>> [t,T]=ode45(dT,[0 120],84);

>> plot(t,T)

>> dT=@(t,T) -0.03*(T-27)

dT =

@(t,T)-0.03*(T-27)

>> [t,T]=ode45(dT,[0 120],84);

>> plot(t,T)

>> % resolver de manera analitica la ecuacion dT/dt=-k(T-Ta)

>> T=dsolve('dT=-k*(T-Ta)','T(0)=T0')

Error using mupadengine/feval (line 163)

Cannot identify differential equations. To solve algebraic equations, use 'solve' or 'vpasolve'.

Error in dsolve>mupadDsolve (line 332)

T = feval(symengine,'symobj::dsolve',sys,x,options);

Error in dsolve (line 193)

sol = mupadDsolve(args, options);

>> T=dsolve('DT=-k*(T-Ta)','T(0)=T0')

T=

Ta + exp(-k*t)*(T0 - Ta)

>> K=0.03;Ta=27;T0=84;% datos

>> % evaluar la solucion


>> tabla=[t,eval(T)']

Error using evalin

Undefined function or variable 'k'.

Error in sym/eval (line 11)

s = evalin('caller',vectorize(map2mat(char(x))));

>> tabla=[t,eval(T)]

Error using evalin

Undefined function or variable 'k'.

Error in sym/eval (line 11)

s = evalin('caller',vectorize(map2mat(char(x))));

>> k=0.03;Ta=27;T0=84;% datos

>> tabla=[t,eval(T)']

Error using horzcat

Dimensions of matrices being concatenated are not consistent.

>> tabla=[t eval(T)']

Error using horzcat

Dimensions of matrices being concatenated are not consistent.

>> tabla=[t,eval(T)]

tabla =

0 84.0000

2.4678 79.9325
4.9356 76.1552

7.4035 72.6474

9.8713 69.3900

12.8713 65.7416

15.8713 62.4071

18.8713 59.3597

21.8713 56.5745

24.8713 54.0291

27.8713 51.7027

30.8713 49.5766

33.8713 47.6334

36.8713 45.8575

39.8713 44.2345

42.8713 42.7511

45.8713 41.3955

48.8713 40.1565

51.8713 39.0241

54.8713 37.9892

57.8713 37.0434

60.8713 36.1790

63.8713 35.3889

66.8713 34.6669

69.8713 34.0070

72.8713 33.4039

75.8713 32.8528

78.8713 32.3490

81.8713 31.8886

84.8713 31.4679

87.8713 31.0833
90.8713 30.7319

93.8713 30.4107

96.8713 30.1171

99.8713 29.8488

102.8713 29.6036

105.8713 29.3796

108.8713 29.1747

111.8713 28.9876

114.8713 28.8165

117.8713 28.6602

118.4035 28.6339

118.9356 28.6080

119.4678 28.5825

120.0000 28.5575

>> figure(2), plot(t,T)

Error using plot

A numeric or double convertible argument is expected

>> hold on

>> % graficar la solucion analitica junto con la numerica

>> plot(t,eval(T))
Resolver el sistema de ecuaciones:

Un problema importante en meteorologa y en otras aplicaciones de dinmica de fluidos tiene que


ver con el movimiento de una capa de fluido, tal como la atmosfera terrestre, que es ms tibia en
el fondo que en la parte superior. Un sistema aproximado que describe el fenmeno conectivo es
el siguiente:

= ( + )


=


{ = +
= 10
{ = 28
= 8/3
>> % resolver el sistema de Lorentz

>> % para el rango de tiempo t[0 20]

>> % 1) defini el sistema de ecauciones

>> dy=@(t,y) 10*(-y(1)+y(2));28*y(1)-y(2)-y(1)*y(3);-8/3*y(3)+y(1)*y(2);

Undefined function or variable 'y'.

>> dy=@(t,y) [10*(-y(1)+y(2));28*y(1)-y(2)-y(1)*y(3);-8/3*y(3)+y(1)*y(2)];


>> % resolver el sistema de ecuaciones

>> [t,y]=ode45(dy,[0 72],[5 5 10]);

>> % graficar las soluciones en el dominio del tiempo

>> plot(t,y(:,1))

>> figure(2),plot(t,y(:,2))
>> % graficar la solucion en el espacio-fase

>> comet3(y(:,1),y(:,2),y(:,3))

>> box on

You might also like