edo stiff
TRANSCRIPT
IMPORTANTE: Este documento es sólo complementario y es
responsabilidad del alumno encontrar mayores justificaciones en los
procedimientos de acuerdo a lo visto en clases.
LABORATORIO 8
Comentarios adicionales
I) EDO Stiff
1) Resuelva el problema de valores inciales:
( ) ( ( )) [ ]
( )
Solución:
Sea ( ) ( ( )), luego:
y |
|
Así el problema propuesto es una EDO Stiff, por esa razón la cantidad de
elementos de t1 (obtenido al resolver el problema con ode45) es mayor a
t2 (obtenido al resolver el problema con ode15s), es decir ode45
considera más puntos del intervalo [0,5] que ode15s y por consiguiente
ode45 considera un tamaño de paso menor que el considerado por
ode15s.
De aquí que para resolver EDOs Stiff en MATLAB se debe hacer uso de
ode15s u ode23s.
II) Solución de EDO de orden superior
1) Considere el siguiente PVI:
( )
( ) ( )
i) Convierta el PVI anterior en un PVI de primer orden.
ii) Resuelva en MATLAB el sistema de ecuaciones diferenciales resultante
con , y [ ].
Solución:
i) Despeje la derivada de mayor orden:
( )
luego, sea:
la ecuación anterior queda como:
( )
con ( ) ( ) y ( ) ( ) . El problema presentado es
equivalente al siguiente sistema de ecuaciones:
( )
con ( ) ( ) , el cual a su vez es equivalente al siguiente PVI
de primer orden:
( )
donde [
] , ( ) [
( )
] y [ ].
ii)
a) Cree la función F en MATLAB.
function F = funcion(t,y)
F =[ y(2) ; (y(1)^(-3*gamma)-1-(3/2)*y(2)^2)/y(1) ];
end
b) Solucione el PVI en MATLAB.
[t,y] = ode45(‘funcion’,[0 20],[2.5 0]);
plot(t,y(:,1))
2) Resuelva el siguiente PVI:
( ) ( ) ( ) [ ]
Solución:
Despeje la derivada de mayor orden:
( )
luego, sea:
así, la ecuación anterior queda como:
( )
con ( ) ( ) ( ) . El problema presentado es equivalente al
siguiente sistema de ecuaciones:
( )
con ( ) ( ) ( ) , el cual a su vez es equivalente al siguiente
PVI de primer orden:
( )
donde [
] , ( ) [
( ) ] y [
].
Ahora, cree la función F en MATLAB.
function F = funcion(t,z)
F =[ z(2) ; z(3) ; (-5*z(3)+z(2)-7*z(1))/3 ];
end
Por último, en command windows o en un rutero escriba:
[t,z] = ode45(‘funcion’,[0 10],[0 0 0]);
plot(t,z(:,1))