Anda di halaman 1dari 19

Metodos Numericos

1. el desplazamiento u de la posicion de equilibrio de una masa m sujeta a un resorte de constante


0
k, inmersa en un medio viscoso que ejerce una resistencia al movimiento bu y sobre la que ese
ejerce una fuerza f, se modela mediante la E.D.O.
00 0
+ bu + ku = f
0
u(0) = u0 , u (0) = v0

donde u0 y v0 son el desplazamiento y la velocidad de la masa en el instante t=0 calcular y


graficar el desplazamiento de la masa a lo largo de 1 minuto para los siguientes datos: m = 1.2kg,
kg kg
k = 15 2 , b = 0.3 en los siguientes casos
s s
(a) cuando la masa se desplaza 1 m de su posicion de equilibrio y; desde el reposo, se deja
oscilar libremente;

primero que todo notemos que se dice que se deja caer desde su reposo es decir la fuerza en
este caso es nula as primero creamos un programa donde se encuentre la ecuacion ya vista
00
arriba donde despejamos u y as como f=0 nos queda el siguiente programa:

function Z=Fa(t,Y)
m=1.2;
b=0.3;
k=15;
Z=[Y(2);(-k*Y(1)-b*Y(2))/m];

al ejecutarlo obtenemos la solucion numerica en un intervalo , en este caso como es de cero


a un minuto se tiene lo siguiente

>> [t,Y]=ode45(Fa,[0 60],[1;0]);


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

1
cabe resaltar que los valores de la solucion numerica es extensa por esta razon solo se
muestra la grafica de dicha solucion, como se esta trabajando con segundos por eso nuestra
solucion se muestra en el intervalo [0,60] medido en segundos.

(b) cuando desde su posicion de equilibrio y en reposo, se le aplica una fuerza externa periodica
f (t) = cos(t)

de la misma manera que en la parte a realizamos un programa, con la diferencia que ahora
la fuerza no es cero as se tiene:

function Z=Fb(t,Y)
m=1.2;
b=0.3;
k=15;
Z=[Y(2);(cos(t)-k*Y(1)-b*Y(2))/m];

lo ejecutamos y obtenemos como resultado


>> [t,Y]=ode45(Fb,[0 60],[0;0]);
>> plot(t,Y(:,1))

2
note que la solucion numerica la volvemos a ver en el mismo intervalo que en la parte a)
q
k
(c) igual que el anterior pero con f (t) = coswt, donde w = m
es la frecuencia de oscilacion
libre del sistema sin amortiguamiento

al igual que en las partes de arriba creamos un programa con las condiciones ya descritas
arriba as se tiene
function Z=Fc(t,Y)
m=1.2;
b=0.3;
k=15;
fm=sqrt(k/m);
Z=[Y(2);(cos(fm*t)-k*Y(1)-b*Y(2))/m];
lo ejecutamos y se obtiene
>> [t,Y]=ode45(Fc,[0 60],[0;0]);
>> plot(t,Y(:,1))

3
2. considere un ecosistema simple consistente de conejos con una cantidad mas que suficiente de
alimento y zorros que depredan los conejos para su alimentacion. un modelo clasico debido a
volterra describe este ecosistema mediante el siguiente para de ecuaciones no lineales de primer
orden:



dc = 2c acz, c(0) = c0



dt



dz

= z + acz, z(0) = z0
dt
donde t es el tiempo medido en anos, c=c(t) es el numero de conejos y z=z(t) es el numero
de zorros, ambos en el instante t, y a es una constante positiva que mide la probabilidad de
interaccion entre miembros de las dos especies.
(a) cuando a=0, conejos y zorros no interactuan resuelva la ecuacion diferencial a lo largo de
un ano en le caso en que inicialmente hay 100 animales de cada especie. compruebe que en
tal caso los conejos hacen lo que mejor saben hacer, mientras los zorros se van muriendo
de hambre

bueno dado que a=0 tenemos que crear una programa function en donde este representada
el sistema de ecuaciones, as tenemos lo siguiente
function Z=Fa(t,Y)
a=0;

4
Z=[2*Y(1)-a*Y(1)*Y(2);-Y(2)+a*Y(1)*Y(2)]
ejecutamos con el comando ode45 y asi obtenemos
>> [t,Y]=ode45(Fa,[0 1],[100;100]);
>> plot(t,Y)

note que solo mostramos la grafica dado que la solucion numerica es extensa, y vea que
efectivamente los conejos hacen lo que saben hacer y los zorros van muriendo poco a poco.

(b) Calcule la evolucion de ambas poblaciones a lo largo de 12 anos en le caso en que la con-
stante de interacciones es a=0.01 y que la poblacion inicial es de 300 conejos y 150 zorros
AQue conclucion puede extraer en este caso?

al igual que el enciso anterior crearemos un programa donde ingresaremos las ecuaciones,
el cual ejecutaremos con el comando ode45 as:
function Z=Fb(t,Y)
a=0.01;
Z=[2*Y(1)-a*Y(1)*Y(2);-Y(2)+a*Y(1)*Y(2)];
lo ejecutamos
>> [t,Y]=ode45(Fb,[0 12],[300;150]);
>> plot(t,Y)
>> legend(conejos,zorros)

5
la conclusion de acuerdo a lo obtenido es, que el crecimiento y decrecimiento de ambas
poblaciones es periodico con un periodo de aproximadamente 5 anos

(c) Repita la simulacion anterior pero con una poblacion inicial de 15 conejos y 22 zorros
Acual es la ahora la conclusion?
repitiendo tenemos
>> [t,Y]=ode45(Fb,[0 12],[15;22]);
>> plot(t,Y)

6
la conclusion ahora seria que al cabo de 4 anos la poblacion de conejos deja de ser inferior
a 1, lo que indica que se extinguieron y por lo tanto el modelo deja de ser valido

3. el P.V.I siguiente


0

y = (y sent) + cost



y(0) = 1

con un numero positivo grande,es un ejemplo de problema stiff.


(a) Resuelva este problema para = 1000 en el intervalo [0,1] mediante los comandos ode45 y
ode15, con una tolerancia del error absoluto de 103 y grafique la solucion.
para esto creamos un programa y lo ejecutamos con los comandos pedidos as
function z=f3(t,y)
alfa=1000;
z=-alfa*(y-sin(t))+cos(t);
con el comando ode45
>> options=odeset(AbsTol,1.e-3);
>> [t,y]=ode45(f3,[0 1],1,options);
>> plot(t,y,+-)

con el comando ode15s

7
>> [t,y]=ode15s(f3,[0 1],1,options);
>> plot(t,y,+-)

(b) verifique que el primer comando requiere mas iteraciones para aproximar la solucion con el
error pedido y que el segundo requiere mucho menos,Para esto vamos a utilizar el comando
length para conocer el tamano de t as para ode45
>> length(t)
ans =
1229
y para ode15s
>> length(t)
ans =
40

note que le primero necesita muchas mas iteraciones que el segundo luego podemos concluir
que el comando ode15s es el recomendable para resolver este tipo de ecuaciones.
4. En aplicaciones de la aerodinamica aparece la ecuacion de blasius
000 00
2f + f f = 0
00
(a) experimente con distintos valores de f (0) entre 0.1 y 0.5 para ver que valor de puede
tomarse como

primero creamos un programa donde se encuentre ingresada la ecuacion de Blasius as

8
function Z=F4(t,Y)
Z=[Y(2);Y(3);-Y(1)*Y(3)/2];
ahora tomemos varios valores entre 0.1 y 0.5 y veamos la solucion numerica, primero en
0.1 veamos la solucion en el intervalo [0,10]
>> [t,Y]=ode45(F4,[0 10],[0;0;0.1]);
>> plot(t,Y(:,2))

para 0.2
>> [t,Y]=ode45(F4,[0 10],[0;0;0.2]);
>> plot(t,Y(:,2))

9
para 0.3
>> [t,Y]=ode45(F4,[0 10],[0;0;0.3]);
>> plot(t,Y(:,2))

para 0.4
>> [t,Y]=ode45(F4,[0 10],[0;0;0.4]);
>> plot(t,Y(:,2))

10
para 0.5
>> [t,Y]=ode45(F4,[0 10],[0;0;0.5]);
>> plot(t,Y(:,2))

De acuerdo a las graficas podemos notar que se puede tomar =10 como

11
00 0
(b) determine el valor correcto de f (0) para que f () 1 cuando .

Creamos un programa para calcular dicho valor teniendo en cuenta la ecuacion de Blasius,
este programa es:
function z=Blasius(x)
[t,Y]=ode45(F4,[0 10],[0;0;x]);
z=Y(length(t),2)-1;
al ejecutarlo con el comando fzero el cual me entrega la raz que en este caso es el valor de
00
f (0)
>> raiz=fzero(Blasius,0.3)
raiz =
0.3320
00 (0)=0.3320
luego f
Ru 0 0
(c) se sabe que el momento del fluido es proporcional a (u) = 0
f ()[1 f ()]d
calcule (5.0)

si derivamos la expresion del momento se obtiene


0 0 0
() = f ()[1 f ()]
ademas por propiedad (0) = 0 por lo tanto es solucion del P.V.I


0
0 0
= f (1 f )


(0) = 0

se anade esta ecuancion a la de blasius escribiendo la como sistema de E.D.O y se resuelve


el P.V.I para el nuevo sistema, entonces modificamos el programa anterior asi:
function Z=F4c(t,Y)
Z=[Y(2);Y(3);-Y(1)*Y(3)/2;Y(2)*(1-Y(2))];
00
al ejecutarlo con el comando ode45 y recordando que f (0) = raiz ya visto en el punto
anterior as se tiene
>> [t,Y]=ode45(F4c,[0 0.5],[0;0;raiz;0]);
>> mom=Y(length(t),4)
mom =
0.0369

luego (5.0) = 0.0369

12
5. Use el metodo de euler con h=0.05 a fin de aproximar la poblacion de la presa x y la de
depredadores y, en el periodo [0,t] (toma t=2,4,6), que satisfacen el sistema no lineal de Lotka-
Volterra


0

x = x(3 y)

0

y = y(x 3)

con cada una de las condiciones iniciales


(a) x(0)=2, y(0)=4;
(b) x(0=2), y(0)=5;
(c) x(0)=2, y(0)=7;

Para esto primero se crea un programa en donde se implementa el metodo de euler y otro donde
definamos la ecuacion descrita arriba asi para el de euler se tiene

function [x,t]=euler(f,y0,I0,If,h)
n=(If-I0)/h;
x(:,1)=y0;
t=I0:h:If;
for i=1:n
x(:,i+1)=x(:,i)+h*feval(f,t(i),x(:,i));
end
t=t
x=x
plot(t,x,r)
title(metoodo de euler para una edo)
xlabel(t)
ylabel(x)

y para la ecuacion

function D=Fd(t,X)
D=[X(1)*(3-X(2));X(2)*(X(1)-3)];

ahora resolvamos para cada condicion inicial en el intervalo [0,2] as ejecutando el programa se
tiene: para x(0)=2 , y(0)=4

euler(f,[2;4],0,2,0.05);

13
para x(0)=2 , y(0)=5

euler(f,[2;5],0,2,0.05);

14
para x(0)=2 , y(0)=7
euler(f,[2;7],0,2,0.05);

Ahora lo mismo para el intervalo [0,4] para x(0)=2 , y(0)=4


euler(f,[2;4],0,4,0.05);

15
para x(0)=2 , y(0)=5
euler(f,[2;5],0,4,0.05);

para x(0)=2 , y(0)=7


euler(f,[2;7],0,4,0.05);

16
igualmente para el intervalo [0,6] para x(0)=2 , y(0)=4
euler(f,[2;4],0,6,0.05);

para x(0)=2 , y(0)=5


euler(f,[2;5],0,6,0.05);

17
para x(0)=2 , y(0)=7

euler(f,[2;7],0,6,0.05);

6. usar el metodo de Runge Kutta de cuarto orden para resolver los siguientes problemas de valor
inicial
0 y
(a) y = ( )2 + ( yt ), en el intervalo [1,1.2] con y(1)=1 y h=0.05;
t
0
(b) y = ty + ( 4ty ), en el intervalo [0.1] con y(0)=1 y h=0.25;

para esto primero creamos un programa con el cual resolveremos la ecuacion basados en el
metodo de Runge Kutta asi este es

function runge_kutta4(f,a, b, h, y0)


n = (b-a)/h;
t(1) = a;
w(1) = y0;

for i = 1:n
k1 = h*feval(f,t(i), w(i));
k2 = h*feval(f,t(i)+h/2, w(i)+(k1)/2);
k3 = h*feval(f,t(i)+h/2, w(i)+(k2)/2);
k4 = h*feval(f,t(i)+h, w(i)+k3);
w(i+1) = w(i) + (k1 + 2*k2 + 2*k3 + k4)/6;

18
t(i+1) = a + i*h;
end

[t w]

donde a es el mnimo del intervalo y b el maximo, yo es la condicion inicial; Ahora creamos


una programa donde se tenga almacenada la ecuacion as

function z=ft(t,y)
z=(y/t).^2 + (y/t);

al ejecutar el programa se tiene la solucion numerica

>> rk4(ft,1,1.2,0.05,1)

ans =

1.0000 1.0000
1.0500 1.1039
1.1000 1.2159
1.1500 1.3368

ahora para el enciso b) la funcion sera

function z=ft(t,y)
z=-t*y+((4*t)/y);

tomando los datos dados en el enciso b) y ejecutando se tiene la solucion

>> rk4(ft,0,1,0.25,1)

ans =

0 1.0000
0.2500 1.0872
0.5000 1.2899
0.7500 1.5135
1.0000 1.7018

19

Anda mungkin juga menyukai