Logística con umbral (Grupo 10-C)
De MateWiki
Revisión del 12:30 4 mar 2015 de Pablo.molinero.brito (Discusión | contribuciones)
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Logística con umbral (Grupo 10-C) |
| Asignatura | Ecuaciones Diferenciales |
| Curso | Curso 2014-15 |
| Autores | Íñigo Díez García (1051), Pablo Molinero Brito (1172), Diego Navarro Gozalo (1049), Dariusz Adam Pabian (1187), Javier Santander Gimeno (1223), Pablo Vázquez Melgarejo (1090) |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
1 Introducción
2 Problema de valor inicial
Nos encontramos con el siguiente problema de valor inicial. Empezamos por resolverlo con el método de: Euler, Heun y Runge-Kutta de orden 4. Los datos proporcionados son los siguientes: el intervalo I=[0,100], salto de paso es h=1,h=0.1,h=0.01 ( vamos a ver como cambia la precisón de la solución en función de los pasos de saltos escogidos) y las constantes r, M1, M2 que valen 0.04, 30, 100 respectivamente. El valor inicial de la función y es igual a 60.
%Modelo logístico ejercicio 8
% Euler
clear all
clf
%DATOS DEL PROBLEMA
t0=0;
tN=100;
y0=60;
h=input('introduce numero de paso: ');
M1=30;
M2=100;
r=0.04;
%Calculamos número de subintervalos
N=round((tN-t0)/h);
% Definimos la variable independiente
t=t0:h:tN;
%Ahora vamos a guardar los valores de la solución aproximada en el
%vector y
y=zeros(1,N+1); %euler
w=zeros(1,N+1); %Heun
z=zeros(1,N+1); %Runge-kutta
y(1)=y0;
w(1)=y0;
z(1)=y0;
for i=1:N
y(i+1)=y(i)+h*(-r*y(i)*(1-(y(i)/M1))*(1-(y(i)/M2))); %euler
k1=(-r*w(i)*(1-(w(i)/M1))*(1-(w(i)/M2))); %Heun
k2=(-r*(w(i)+h*k1)*(1-((w(i)+h*k1)/M1))*(1-((w(i)+h*k1)/M2))); %Heun t(i)+h+w(i)+k1*h
w(i+1)=w(i)+(h/2)*(k1+k2); %Heun
% Runge-kutta
A1=(-r*z(i)*(1-(z(i)/M1))*(1-(z(i)/M2)));
A2=(-r*(z(i)+1/2*A1*h)*(1-((z(i)+1/2*A1*h)/M1))*(1-(z(i)+1/2*A1*h)/M2)); %z(i)+1/2*A1*h)*(1-(z(i)+1/2*A1*h))
A3=(-r*(z(i)+1/2*A2*h)*(1-((z(i)+1/2*A2*h)/M1))*(1-(z(i)+1/2*A2*h)/M2));
A4=(-r*(z(i)+A3*h)*(1-((z(i)+A3*h)/M1))*(1-(z(i)+A3*h)/M2));
z(i+1)= z(i)+h/6*(A1+2*A2+2*A3+A4);
end
%sacamos tabla de resultados
[t',y',w',z']
hold on
%gráfico
plot(t,y,'r')
plot(t,w,'g')
plot(t,z)
legend('Euler','Heun','Runge-Kutta','Location','best'); % lo último es para que la leyenda
hold off