Está en la página 1de 27

Universidad Nacional de Trujillo Métodos Numéricos

EJERCICIO 7.21
Utilice el método de Taylor (elija el orden) para resolver los siguientes problemas
de valor inicial (PVI) y compare con las soluciones analíticas:
dy
a) =ln (x ), y (1)=3, y (2)=? con h=0.2
dx

MÉTODO DE TAYLOR

h2 df (x , y ) (1)
y n+ 1= y n +hf ( x n , y n ) +
2! dx |x n , yn

En donde:
df ( x , y ) ∂ f (x , y) ∂ f (x , y ) dy
= + (2)
dx ∂x ∂y dx
Paso:
x f −x 0
h= ( 3)
n
n: # de intervalos

SOLUCIÓN
Desarrollando ecuación (2):
df ( x , y ) 1 1
= +0=
dx x x
Reemplazando valores en ecuación (3):
2−1
h= =0.2
n
n=5
Valores de x:
x 0=1

x 1=x 0+ h=1+ 0.2=1.2

x 2=x 1+ h=1.2+0.2=1.4

x 3=x 2+ h=1.4 +0.2=1.6

x 4 =x3 +h=1.6+0.2=1.8

x 5=x 4 +h=1.8+0.2=2

Entonces:

1
Universidad Nacional de Trujillo Métodos Numéricos

h2 1
Para n=0 y 1= y 0 +hf ( x 0 , y 0 ) + ( )
2 x0

0.22 1
y 1=3+ 0.2∗ln ( 1 ) + ()
2 1
=3.02

Para n=1

h2 1
y 2= y 1 +hf ( x 1 , y 1 ) +( )
2 x1

0.22 1
y 2=3.02+0.2∗ln ( 1.2 ) + ( )
2 1.2
=3.073

Para n=2 ...


.
.
.
Solución analítica:
Ya ( x=2 ) =3.3863

Solución numérica:
Yn( x=2)=3.38988
Error relativo porcentual:
|Ya−Yn|
ERP= ∗100
Ya

ERP=0.10573
Código en Matlab:
function f=e21(x,y)
f(1)=log(x);

disp('PARTE (a) ')


x0=1; y0=3; h=0.2;
x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = ln x')
fprintf('\n\t\t\t\t y(1)= 3')
fprintf('\n\t\t\t\t y(2)=?')
fprintf('\n\t\t\t\t h = 0.2')

2
Universidad Nacional de Trujillo Métodos Numéricos

disp('----------------------------------------------------------------
--------------------------------------')
disp(' SOLUCIÓN : ')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' ')
fprintf('\n\n\n\t\t\t\t\t MÉTODO DE TAYLOR\n')
fprintf('\t\t\t\t\t====================')
disp(' ')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(1), y(1))
for i=1:5
y(i+1)=y(i)+h*log(x(i))+h^2*(1/x(i))/2;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
xanalitico=3.3863;
fprintf('\n\t\t\tSolución analítica: %8.5f',xanalitico)
EA=abs(y(6)-xanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/xanalitico*100;
fprintf('\t\t\tError relativo porcentual: %8.5f\n',ERP)
plot(x,y,'ro-')
axis([0.8 2.1 2.8 3.5])
xlabel('x')
ylabel('y')
title('MÉTODO DE TAYLOR')
grid
text(1,3.1,'Método de Taylor')
pause(10)
xx=1:0.001:2;
[T,Y]=ode23('e21',xx,3);
hold on
plot(T,Y,'b')
text(1.2,2.98,'Solución ode23')

RESULTADOS

3
Universidad Nacional de Trujillo Métodos Numéricos

MÉTODO DE EULER:
disp('PARTE (a) ')
x0=1; y0=3; h=0.2;
x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = ln x')
fprintf('\n\t\t\t\t y(1)= 3')
fprintf('\n\t\t\t\t y(2)=?')
fprintf('\n\t\t\t\t h = 0.2')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' SOLUCIÓN :
')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' ')
fprintf('\n\n\n\t\t\t\t\t MÉTODO DE EULER\n')
fprintf('\t\t\t\t\t====================')
disp(' ')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i, x(1), y(1))
for i=1:5
y(i+1)=y(i)+h*log(x(i));
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
yanalitico=3.3863;
fprintf('\n\t\t\tSolución analítica: %8.5f',yanalitico)

4
Universidad Nacional de Trujillo Métodos Numéricos

EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\tError relativo porcentual: %5.2f\n',ERP)
plot(x,y,'ro-')
axis([0.8 2.6 2.8 3.5])
xlabel('x')
ylabel('y')
title('MÉTODO DE EULER')
grid
text(1,3.1,'Método de Euler')
pause(10)
xx=1:0.001:2;
[T,Y]=ode23('e21',xx,3);
hold on
plot(T,Y,'b')
text(1.2,2.98,'Solución ode23')
text(2.05,3.39,'----------')
text(2.05,3.35,'Error')
text(2.05,3.32,'----------')

RESULTADOS

MÉTODO DE RUNGE-KUTTA:

5
Universidad Nacional de Trujillo Métodos Numéricos

*CÓDIGO MATLAB
disp('PARTE (a) ')
x0=1; y0=3; h=0.2;
x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = ln x')
fprintf('\n\t\t\t\t y(1)= 3')
fprintf('\n\t\t\t\t y(2)=?')
fprintf('\n\t\t\t\t h = 0.2')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' SOLUCIÓN :
')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' ')
fprintf('\n\n\n\t\t\t MÉTODO DE RUNGE-KUTTA\n')
fprintf('\t\t\t\t =======================')
disp(' ')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
format long
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i, x(1), y(1))
for i=1:5
k(i)=log(x(i));
k(i+1)=log(x(i)+h/2);
k(i+2)=log(x(i)+h/2);
k(i+3)=log(x(i)+h);
y(i+1)=y(i)+h*(k(i)+2*k(i+1)+2*k(i+2)+k(i+3))/6;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
xanalitico=3.3863;
fprintf('\n\t\t\tSolución analítica: %8.5f',xanalitico)
EA=abs(y(6)-xanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/xanalitico*100;
fprintf('\t\t\tError relativo porcentual: %8.5f\n',ERP)
plot(x,y,'ro-')
axis([0.8 2.1 2.8 3.5])
xlabel('x')
ylabel('y')
title('MÉTODO DE RUNGE-KUTTA (RK-4)')
grid
text(1,3.1,'Método de Runge-Kutta')
pause(10)
xx=1:0.001:2;
[T,Y]=ode45('e21',xx,3);
hold on
plot(T,Y,'b')
text(1.2,2.98,'Solución ode45')

RESULTADOS

6
Universidad Nacional de Trujillo Métodos Numéricos

7
Universidad Nacional de Trujillo Métodos Numéricos

8
Universidad Nacional de Trujillo Métodos Numéricos

dy
b) = y 2, y (0)=1, y (0.5)=? con h=0.1
dx

MÉTODO DE TAYLOR
Desarrollando ecuación (2):
df ( x , y )
=0+2∗y ( y2 ) =2∗y 3
dx
Reemplazando valores en ecuación (3):
0.5−0
h= =0.1
n
n=5
Valores de x:
x 0=0

x 1=x 0+ h=0+0.1=0.1

x 2=x 1+ h=0.1+ 0.1=0.2

x 3=x 2+ h=0.2+ 0.1=0.3

x 4 =x3 +h=0.3+0.1=0.4

x 5=x 4 +h=0.4+ 0.1=0.5

Entonces:

h2 3
Para n=0 y 1= y 0 +hf ( x 0 , y 0 ) + ∗2∗y 0
2

2 0.12 3
y 1=1+0.1∗1 + ∗2∗1 =1.11
2
Para n=1

h2 3
y 2= y 1 +hf ( x 1 , y 1 ) + ∗2∗y 1
2

2 0.12 3
y 2=1.11+ 0.1∗1.11 + ∗2∗1.11 =1.2469
2

Para n=2 ...


.

9
Universidad Nacional de Trujillo Métodos Numéricos

.
.
Solución analítica:
Ya ( x=0.5 )=1.9998

Solución numérica:
Yn( x=0.5)=1.97087
Error relativo porcentual:
|Ya−Yn|
ERP= ∗100
Ya

ERP=1.44669
Código en Matlab:
function f=e21b(x,y)
f(1)=y^2;

disp('PARTE (b) ')


x0=0; y0=1; h=0.1;
x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = y^2')
fprintf('\n\t\t\t\t y(0)= 1')
fprintf('\n\t\t\t\t y(0.5)=?')
fprintf('\n\t\t\t\t h = 0.1')
disp('--------------------------------------------------------------')
disp(' SOLUCIÓN : ')
disp('--------------------------------------------------------------')
fprintf('\n\n\n\t\t\t\t\t MÉTODO DE TAYLOR\n')
fprintf('\t\t\t\t\t====================')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(1), y(1))
for i=1:5
y(i+1)=y(i)+h*(y(i))^2+h^2*(y(i))^3;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
xanalitico=1.9998;
fprintf('\n\t\t\tSolución analítica: %8.5f',xanalitico)
EA=abs(y(6)-xanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/xanalitico*100;
fprintf('\t\t\tError relativo porcentual: %8.5f\n',ERP)
plot(x,y,'ro-')
axis([-0.09 0.53 0.5 3])
xlabel('x')
ylabel('y')

10
Universidad Nacional de Trujillo Métodos Numéricos

title('MÉTODO DE TAYLOR')
grid
text(0.02,1.3,'Método de Taylor');
pause(10)
xx=0:0.001:0.5;
[T,Y]=ode23('e21b',xx,1);
hold on
plot(T,Y,'b')
text(0.1,1,'Solución ode23')

RESULTADOS

MÉTODO DE EULER:
disp('PARTE (b) ')
x0=0; y0=1; h=0.1;

11
Universidad Nacional de Trujillo Métodos Numéricos

x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = y^2')
fprintf('\n\t\t\t\t y(0)= 1')
fprintf('\n\t\t\t\t y(0.5)=?')
fprintf('\n\t\t\t\t h = 0.1')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' SOLUCIÓN :
')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' ')
fprintf('\n\n\n\t\t\t\t\t MÉTODO DE EULER\n')
fprintf('\t\t\t\t\t====================')
disp(' ')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(1), y(1))
for i=1:5
y(i+1)=y(i)+h*(y(i))^2;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
yanalitico=1.9998;
fprintf('\n\t\t\tSolución analítica: %8.5f',yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\tError relativo porcentual: %5.2f\n',ERP)
plot(x,y,'ro-')
axis([-0.09 0.6 0.5 3])
xlabel('x')
ylabel('y')
title('MÉTODO DE EULER')
grid
text(0.02,1.3,'Método de Euler')
pause(10)
xx=0:0.001:0.5;
[T,Y]=ode23('e21b',xx,1);
hold on
plot(T,Y,'b')
text(0.1,1,'Solución ode23')
text(0.51,2,'----------')
text(0.51,1.91,'Error')
text(0.51,1.81,'----------')

RESULTADOS

12
Universidad Nacional de Trujillo Métodos Numéricos

MÉTODO DE RUNGE-KUTTA:
*CÓDIGO MATLAB
disp('PARTE (b) ')
x0=0; y0=1; h=0.1;
x(1)=x0; y(1)=y0;
fprintf('\n\t\t\t\t dy/dx = y^2')
fprintf('\n\t\t\t\t y(0)= 1')
fprintf('\n\t\t\t\t y(0.5)=?')
fprintf('\n\t\t\t\t h = 0.1')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' SOLUCIÓN :
')
disp('----------------------------------------------------------------
--------------------------------------')
disp(' ')
fprintf('\n\n\n\t\t\t\t MÉTODO DE RUNGE-KUTTA\n')
fprintf('\t\t\t\t=======================')
disp(' ')
fprintf('\t\t\t\t------------------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t------------------------------------\n')
format long
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i, x(1), y(1))
for i=1:5

13
Universidad Nacional de Trujillo Métodos Numéricos

k(i)=(y(i))^2;
k(i+1)=(y(i)+h*k(i)/2)^2;
k(i+2)=(y(i)+h*k(i+1)/2)^2;
k(i+3)=(y(i)+h*k(i+2))^2;
y(i+1)=y(i)+h*(k(i)+2*k(i+1)+2*k(i+2)+k(i+3))/6;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i, x(i+1), y(i+1))
end
fprintf('\t\t\t\t------------------------------------\n')
xanalitico=1.9998;
fprintf('\n\t\t\tSolución analítica: %8.5f',xanalitico)
EA=abs(y(6)-xanalitico);
fprintf('\n\t\t\tError absoluto: %8.5f\n',EA)
ERP=EA/xanalitico*100;
fprintf('\t\t\tError relativo porcentual: %8.5f\n',ERP)
plot(x,y,'ro-')
axis([-0.09 0.6 0.5 3])
xlabel('x')
ylabel('y')
title('MÉTODO DE RUNGE-KUTTA (RK-4)')
grid
text(0.02,1.4,'Método de Runge-Kutta')
pause(10)
xx=0:0.001:0.5;
[T,Y]=ode45('e21b',xx,1);
hold on
plot(T,Y,'b')
text(0.1,1,'Solución ode45')

RESULTADOS

14
Universidad Nacional de Trujillo Métodos Numéricos

dy 2
c) dx =3 x , y (0)=0, y (1)=? con h=0.1

MÉTODO DE TAYLOR
SOLUCIÓN
Desarrollando ecuación (2):
df ( x , y ) 1
=6 x+ 0=
dx x
Reemplazando valores en ecuación (3):
1−0
h= =0.1
n
n=10
Valores de x:
x 0=0
x 1=x 0+ h=0.0+0.1=0.1
x 2=x 1+ h=0.1+ 0.1=0.2
x 3=x 2+ h=0.2+ 0.1=0.3
x 4 =x3 +h=0.3+0.1=0.4
x 5=x 4 +h=0.4+ 0.1=0.5
x 6=x 5 +h=0.5+0.1=0.6
x 7=x 6 +h=0.6+0.1=0.7
x 8=x 7 +h=0.7+0.1=0.8
x 9=x 8 +h=0.8+0.1=0.9
x 10=x 9+ h=0.9+ 0.1=1.0
Entonces:

h2
Para n=0 y 1= y 0 +hf ( x 0 , y 0 ) + (6 x0 )
2

2 0.12 (
y 1=0+ 0.1∗3∗0 + 6∗0 )=0.000
2
Para n=1

h2
y 2= y 1 +hf ( x 1 , y 1 ) + ( 6∗x 1 )
2

2 0.12 (
y 2=0.000+ 0.1∗3∗0.1 + 6∗0.1 )=0.00600
2

Para n=2 ...


.

15
Universidad Nacional de Trujillo Métodos Numéricos

.
.
Solución analítica:
Ya ( x=2 ) =1.00

Solución numérica:
Yn( x=2)=0.990
Error relativo porcentual:
|Ya−Yn|
ERP= ∗100
Ya
ERP=1.00
Código en Matlab:
function f=e21c(x,y)
f(1)=3*x^2;

disp(' PARTE (c)')


x0=0; y0=0; h=0.1;
x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resuelva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=(x-y)')
fprintf('\n\t\t\t\t y(0)=2')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\n\t\t\t\t MÉTODO DE TAYLOR\n')
fprintf('\t\t\t\t -----------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t -----------------------\n')
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i,x(1),y(1))
for i=1:10
y(i+1)=y(i)+h*(3*(x(i))^2)+h^2*(6*x(i))/2;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t -----------------------\n')
yanalitico=1.00;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.2f \n', ERP)
plot(x,y,'ro-')
axis([-0.2 1.2 -0.2 1.2])
xlabel('x ---->')
ylabel('y ---->')
title('MÉTODO DE TAYLOR')
grid
text(0.7,0.23, 'Método de Taylor')
pause(3)
xx=0:0.001:1;
[T,Y]=ode23('e21c',xx,0);
hold on

16
Universidad Nacional de Trujillo Métodos Numéricos

plot(T,Y,'b')
text(0.4,0.45,'Solucion ode23')

RESULTADOS

MÉTODO DE EULER:
Código en Matlab:
disp(' PARTE (c)')

17
Universidad Nacional de Trujillo Métodos Numéricos

x0=0; y0=0; h=0.1;


x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resulva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=3*x^2')
fprintf('\n\t\t\t\t y(0)=0')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\t\t\t\t h = 0.1')
fprintf('\n\n\t\t\t\t MÉTODO DE EULER\n')
fprintf('\t\t\t\t -----------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t -----------------------\n')
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i,x(1),y(1))
for i=1:10
y(i+1)=y(i)+h*3*(x(i))^2;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.1f %8.5f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t -----------------------\n')
yanalitico=1.00;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.2f \n', ERP)
plot(x,y,'ro-')
axis([-0.2 1.4 -0.2 1.2])
xlabel('x --->')
ylabel('y --->')
title('MÉTODO DE EULER')
grid
text(0.7,0.2, 'Método de euler')
pause(3)
xx=0:0.001:1;
[T,Y]=ode23('e21c',xx,0);
hold on
plot(T,Y,'b')
text(0.4,0.45,'Solucion ode23')
text(1.02,1,'---------')
text(1.02,0.95,'Error')
text(1.02,0.88,'---------')

RESULTADOS:

18
Universidad Nacional de Trujillo Métodos Numéricos

MÉTODO DE RUNGE-KUTTA:
*CÓDIGO MATLAB
disp(' PARTE (c)')
x0=0; y0=0; h=0.1;
x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resulva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=(x-y)')
fprintf('\n\t\t\t\t y(0)=2')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\n\t\t\t\t MÉTODO DE RUNGE-KUTTA (RK-4)\n')
fprintf('\t\t\t\t --------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t --------------------------\n')
format long
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i,x(1),y(1))
for i=1:10
k(i)=3*(x(i))^2;
k(i+1)=(3*((x(i))^2+h/2)+h*k(i)/2);
k(i+2)=(3*((x(i))^2+h/2)+h*k(i+1)/2);
k(i+3)=(3*((x(i))^2+h)+h*k(i+2));
y(i+1)=y(i)+h*(k(i)+2*k(i+1)+2*k(i+2)+k(i+3))/6;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t --------------------------\n')
yanalitico=1.00;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)

19
Universidad Nacional de Trujillo Métodos Numéricos

EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.5f \n', ERP)
plot(x,y,'ro-')
axis([-0.2 1.2 -0.2 1.2])
xlabel('x ---->')
ylabel('y ---->')
title('MÉTODO DE RUNGE-KUTTA (RK-4)')
grid
text(0.2,0.45, 'Método de Ronge-Kutta')
pause(3)
xx=0:0.001:1;
[T,Y]=ode45('e21c',xx,0);
hold on
plot(T,Y,'b')
text(0.65,0.1,'Solucion ode45')

RESULTADOS:

20
Universidad Nacional de Trujillo Métodos Numéricos

dy
d) dx =2 xy , y ( 1 )=0.5, y (2)=? con h=0.25

MÉTODO DE TAYLOR
Desarrollando ecuación (2):
df ( x , y )
=2 y+ 2 x (2 xy)=2 y (1+2 x 2)
dx
Reemplazando valores en ecuación (3):
2−1
h= =0.25
n
n=4
Valores de x:
x 0=1

x 1=x 0+ h=1.00+ 0.25=1.25

x 2=x 1+ h=1.25+ 0.25=1.50

x 3=x 2+ h=1.50+ 025=1.75

x 4 =x3 +h=1.75+0.25=2.00

Entonces:

21
Universidad Nacional de Trujillo Métodos Numéricos

h2
Para n=0 y 1= y 0 +hf ( x 0 , y 0 ) +
2
(2 y 0 (1+2 x 20 ))

0.252
y 1=0.5+ 0.25∗2∗1∗0.5+ ( 2∗0.5∗( 1+2∗12 ) )=0.84375
2
Para n=1

h2
y 2= y 1 +hf ( x 1 , y 1 ) +
2
( 2 y 1 (1+2 x12))

0.25 2
y 2=0.84375+ 0.25∗2∗1.25∗0.84375+ ( 2∗0.84375∗( 1+2∗1.252 ) ) =1.58862
2

Para n=2 ...


.
.
.
Solución analítica:
Ya ( x=2 ) =10.02244

Solución numérica:
Yn( x=2)=7.71778
Error relativo porcentual:
|Ya−Yn|
ERP= ∗100
Ya

ERP=23.00
*CÓDIGO MATLAB
function f=e21d(x,y)
f(1)=2*x*y;

disp('PARTE (d)')
x0=1; y0=0.5; h=0.25;
x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resulva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=(x-y)')
fprintf('\n\t\t\t\t y(0)=2')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\n\t\t\t\t MÉTODO DE TAYLOR\n')
fprintf('\t\t\t\t -----------------------')

22
Universidad Nacional de Trujillo Métodos Numéricos

fprintf('\n\t\t\t\t i x(i) y(i)\n')


fprintf('\t\t\t\t -----------------------\n')
fprintf('\t\t\t\t %2d %5.2f %8.5f\n',i,x(1),y(1))
for i=1:4
y(i+1)=y(i)+h*(2*(x(i)*y(i)))+h^2*(2*y(i)*(1+2*(x(i))^2))/2;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.2f %8.5f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t -----------------------\n')
yanalitico=10.02244;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.2f \n', ERP)
plot(x,y,'ro-')
axis([0.9 2.2 0 10.5])
xlabel('x ---->')
ylabel('y ---->')
title('MÉTODO DE TAYLOR')
grid
text(1.8,3.5, 'Método de Taylor')
pause(3)
xx=1:0.001:2;
[T,Y]=ode23('e21d',xx,0.5);
hold on
plot(T,Y,'b')
text(1.4,4.5,'Solucion ode23')
text(2.02,10,'---------')
text(2.02,9,'Error')
text(2.02,7.9,'---------')
disp(' ')

RESULTADOS:

23
Universidad Nacional de Trujillo Métodos Numéricos

MÉTODO DE EULER:
Código en Matlab:
disp('PARTE (d)')
x0=1; y0=0.5; h=0.25;
x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resulva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=2*x*y')
fprintf('\n\t\t\t\t y(1)=0.5')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\t\t\t\t h = 0.25')
fprintf('\n\n\t\t\t\t MÉTODO DE EULER\n')
fprintf('\t\t\t\t -----------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t -----------------------\n')
fprintf('\t\t\t\t %2d %5.2f %8.5f\n',i,x(1),y(1))
for i=1:4
y(i+1)=y(i)+h*(2*x(i)*y(i));
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %5.2f %8.5f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t -----------------------\n')
yanalitico=10.02244;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.2f \n', ERP)
plot(x,y,'ro-')
axis([0.9 2.2 0 10.5])
xlabel('x --->')
ylabel('y --->')

24
Universidad Nacional de Trujillo Métodos Numéricos

title('MÉTODO DE EULER')
grid
text(1.8,2, 'Método de euler')
pause(3)
xx=1:0.001:2;
[T,Y]=ode23('e21d',xx,0.5);
hold on
plot(T,Y,'b')
text(1.4,4.45,'Solucion ode23')
text(2.02,10,'-----------')
text(2.02,6.5,'Error')
text(2.02,4,'-----------')

RESULTADOS:

25
Universidad Nacional de Trujillo Métodos Numéricos

MÉTODO DE RUNGE-KUTTA:
*CÓDIGO MATLAB
disp('PARTE (d)')
x0=1; y0=0.5; h=0.25;
x(1)=x0; y(1)=y0;
fprintf('\n\n\t\t\t\t Resulva el siguiente PVI')
fprintf('\n\t\t\t\t dy/dx=(x-y)')
fprintf('\n\t\t\t\t y(0)=2')
fprintf('\n\t\t\t\t y(1)=?')
fprintf('\n\n\t\t\t\t MÉTODO DE RUNGE-KUTTA (RK-4)\n')
fprintf('\t\t\t\t --------------------------')
fprintf('\n\t\t\t\t i x(i) y(i)\n')
fprintf('\t\t\t\t --------------------------\n')
format long
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i,x(1),y(1))
for i=1:4
k(i)=2*(x(i)*y(i));
k(i+1)=(2*(x(i)+h/2)*(y(i)+h*k(i)/2));
k(i+2)=(2*((x(i))+h/2)*(y(i)+h*k(i+1)/2));
k(i+3)=(2*((x(i))+h)*(y(i)+h*k(i+2)));
y(i+1)=y(i)+h*(k(i)+2*k(i+1)+2*k(i+2)+k(i+3))/6;
x(i+1)=x(i)+h;
fprintf('\t\t\t\t %2d %6.1f %12.6f\n',i,x(i+1),y(i+1));
end
fprintf('\t\t\t\t --------------------------\n')
yanalitico=10.02244;
fprintf('\n\t\t\t Solucion analitica :%8.5f', yanalitico)
EA=abs(y(i+1)-yanalitico);
fprintf('\n\t\t\t Error absoluto :%8.5f \n', EA)
ERP=EA/yanalitico*100;
fprintf('\t\t\t Error Relativo Porcentual :%8.5f \n', ERP)
plot(x,y,'ro-')
axis([0.9 2.2 0 11])
xlabel('x ---->')
ylabel('y ---->')
title('MÉTODO DE RUNGE-KUTTA (RK-4)')
grid
text(1.3,5.45, 'Método de Ronge-Kutta')
pause(3)
xx=1:0.001:2;
[T,Y]=ode45('e21d',xx,0.5);
hold on
plot(T,Y,'b')
text(1.9,6.65,'Solucion ode45')

RESULTADOS:

26
Universidad Nacional de Trujillo Métodos Numéricos

27

También podría gustarte