P14 Métodos Numérico
P14 Métodos Numérico
P14 Métodos Numérico
Grupo: 4MM1
Profesores:
Ortiz Juárez Juan Claudio
Zamora Justo José Alberto
Integrantes:
Arias Pérez Manuel
Hernández Carrillo Adeyanira
Moreno Salas Carmen Citlalli
Pintor Olvera María Fernanda
Fecha: 17/06/2020
OBJETIVO:
El alumno será capaz de aproximar numéricamente un valor dado de una
ecuación diferencial de primer orden con condiciones iniciales, utilizando un
tamaño de paso adecuado.
EJERCICIOS DE TAREA:
1. Dada la siguiente EDO con condiciones iniciales:
COMMAND WINDOW
Dy =
x^6 - x^5 + x^4 - x^3 + x^2 + x + 1
vt =
3
b. Resuélvala numéricamente aplicando los métodos de Runge-Kutta
del Primer Orden (Método de Euler) al Cuarto Orden con h=0.01 en
el intervalo indicado.
Calculando el nuevo valor teórico para x=1.5 tenemos lo siguiente
CÓDIGO
clc, clear all, close all
%Solución analítica
Dy=dsolve('Dy=2*x-3*x^2+4*x^3-5*x^4+6*x^5+1','y(0)=1','x')
%Para sustituit el valor de x
vt=double(subs(Dy,1.5)) %Valor teórico
%Método Euler
f=inline('2*x-3*x^2+4*x^3-5*x^4+6*x^5+1','x','y');
h=0.01;
%Cond iniciales (i=1)
x=0:h:1.5;
y=1;
for i=1:length(x)-1
y(i+1)=y(i)+h*f(x(i),y(i));
end
disp([x',y']);
fprintf('\nP(%g)=%g ',x(end),y(end))
%Graficando analítica
X=0:0.01:1.5;
plot(X,subs(Dy,X),'k')
%Grafica Euler
hold on
plot(x,y,'--r')
%Método RK=2
f=inline('2*x-3*x^2+4*x^3-5*x^4+6*x^5+1','x','y');
h=0.01;
%Cond iniciales (i=1)
x1=0:h:1.5;
y1=1;
for i=1:length(x1)-1
k1=h*f(x1(i),y1(i));
k2=h*f(x1(i)+h,y1(i)+k1);
y1(i+1)=y1(i)+1/2*(k1+k2);
end
disp([x1',y1']);
fprintf('\nP(%g)=%g ',x1(end),y1(end))
%Grafica RK2
hold on
plot(x1,y1,'--g')
%Método RK=3
f=inline('2*x-3*x^2+4*x^3-5*x^4+6*x^5+1','x','y');
h=0.01;
%Cond iniciales (i=1)
x2=0:h:1.5;
y2=1;
for i=1:length(x2)-1
k1=h*f(x2(i),y2(i));
k2=h*f(x2(i)+h/2,y2(i)+k1/2);
k3=h*f(x2(i)+h,y2(i)-k1+2*k2);
y2(i+1)=y2(i)+1/6*(k1+4*k2+k3);
end
disp([x2',y2']);
fprintf('\nP(%g)=%g ',x2(end),y2(end))
%Grafica RK3
hold on
plot(x2,y2,'--b')
%Método RK=4
f=inline('2*x-3*x^2+4*x^3-5*x^4+6*x^5+1','x','y');
h=0.01;
%Cond iniciales (i=1)
x3=0:h:1.5;
y3=1;
for i=1:length(x)-1
k1=h*f(x3(i),y3(i));
k2=h*f(x3(i)+h/3,y3(i)+k1/3);
k3=h*f(x3(i)+2*h/3,y3(i)-k1/3+k2);
k4=h*f(x3(i)+h,y3(i)+k1-k2+k3);
y3(i+1)=y3(i)+1/8*(k1+3*k2+3*k3+k4);
end
disp([x3',y3']);
fprintf('\nP(%g)=%g ',x3(end),y3(end))
%Grafica RK4
hold on
plot(x3,y3,'-m')
legend('Sol analítica','Euler','RK2','RK3','RK4')
COMMAND WINDOW
vt =
10.2344
P(1.5)=10.0852
error =
1.4573
P(1.5)=10.2352
e =
0.0083
P(1.5)=10.2344
e =
2.1374e-08
P(1.5)=10.2344
e =
9.4996e-09
c. Coloque la solución exacta y las soluciones aproximadas en una sola
gráfica, no olvide etiquetar las gráficas.
GRÁFICA
GRÁFICA AMPLIADA
2. Considerando la ecuación diferencial:
y ' +20 y=7 e−0.5t
Estime por el método de Euler mejorado y Runge-Kutta del 2do al 4to orden
con h=0.01, el valor de y (5). Además calcular la solución exacta y
compararla con las aproximaciones por medio del error porcentual. Graficar
todas las soluciones en una misma figura y etiquetando las gráficas.
dy
Para empezar, tenemos lo siguiente + p ( t ) y =q(t )
dt
yμ=∫ q ( t ) μ dt
p(t )dt
μ=e∫
20 dt
μ=e∫
μ=e20 t
y μ=∫ q (t ) μ dt
y e 20t =7 ∫ e 19.5 t dt
CÓDIGO
clc, clear all, close all
%Solución analítica
syms t
Dy=dsolve('Dy=7*exp(19.5*t)','y(0)=5','t');
Dy=(Dy)/exp(20*t)
%Para sustituit el valor de x
vt=double(subs(Dy,5)); %Valor teórico
vt=vpa(vt,5)
h=0.01;
f=inline('7*exp(-0.5*t)-20*y','t','y')
t=0:h:5;
y=5;
%Euler mejorado
for i=1:1:length(t)-1
k=h*f(t(i),y(i))+y(i);
y(i+1)=h/2*(f(t(i),y(i))+f(t(i)+h,k))+y(i);
end
disp([t',y'])
fprintf('\ny(%g)=%g',t(end),y(end))
%error
va=y(end);
e=abs((vt-va)/vt)*100
%grafica solucion analotica
T=0:0.1:5;
plot(T,subs(Dy,T),'k')
%grafica aproximacion
hold on
plot(t,y,'--r')
%Runge-Kutta del 2do
h=0.01;
f=inline('7*exp(-0.5*t)-20*y','t','y')
t=0:h:5;
y1=5;
for i=1:length(t)-1
k1=h*f(t(i),y1(i));
k2=h*f(t(i)+h,y1(i)+k1);
y1(i+1)=y1(i)+1/2*(k1+k2);
end
disp([t',y1']);
fprintf('\ny(%g)=%g ',t(end),y1(end))
%error
va=y1(end);
e=abs((vt-va)/vt)*100
%grafica aproximacion
hold on
plot(t,y,'*y')
%Runge-Kutta del 4do
h=0.01;
f=inline('7*exp(-0.5*t)-20*y','t','y')
t=0:h:5;
y2=5;
for i=1:length(t)-1
k1=h*f(t(i),y2(i));
k2=h*f(t(i)+h/3,y2(i)+k1/3);
k3=h*f(t(i)+2*h/3,y2(i)-k1/3+k2);
k4=h*f(t(i)+h,y2(i)+k1-k2+k3);
y2(i+1)=y2(i)+1/8*(k1+3*k2+3*k3+k4);
end
disp([t',y2']);
fprintf('\ny(%g)=%g ',t(end),y2(end))
%error
va=y2(end);
e=abs((vt-va)/vt)*100
%grafica aproximacion
hold on
plot(t,y,'m')
legend('sol ana','sol euler','sol RK 2do','sol RK 4do')
RESULTADOS
Dy =
exp(-20*t)*((14*exp((39*t)/2))/39 + 181/39)
vt =
0.029466
y(5)=0.0294666
e =
0.00070710877666393518128957943385299
y(5)=0.0294666
e =
0.00070710877666393518128957943385299
y(5)=0.0294664
e =
0.00000078969797274322334585984423099308
CONCLUSIÓN:
Los métodos numéricos para resolver EDO tienen dos características que se han
de tener en cuenta:
Sólo permiten hallar soluciones particulares. Por lo tanto, para poderlos
aplicar, hará falta dar un conjunto completo de condiciones iniciales.
Necesitamos que las EDO o el conjunto de EDO que se les pasa sean
todas de primer orden
El método de Euler se obtiene a partir de la técnica más simple para aproximar la
integral este se puede utilizar para resolver un número arbitrario de EDO de primer
orden.
La noción de error es fundamental en cualquier técnica numérica. Asociado al
hecho de hacer muchas operaciones si es grande, está el problema del error de
redondeo. Los números reales no pueden representarse exactamente en un
ordenador y se han de redondear. Eso quiere decir que, cada vez que se hace una
operación, es posible que se pierdan dígitos del resultado, y en principio, cuantas
más operaciones más información se va perdiendo. Además, el método de Euler
introduce por sí mismo un error, que se llama error de truncamiento. Los dos tipos
de errores se mezclan y de hecho, el error total se puede amplificar
La idea del método de Runge-Kutta consiste en aproximar la integral sustituyendo
el integrando por una parábola, este método logra una exactitud del procedimiento
de una serie de Taylor, sin requerir el cálculo de derivadas superiores.