Está en la página 1de 7

METODOS NUMERICOS (practica 8)

Método Euler
1. Resuelva el siguiente problema de valor inicial en el intervalo de x=0 a x=2, donde y(0)=1.
𝑑𝑦
= 𝑦𝑥 2 − 1.1𝑦
𝑑𝑥
a) Analíticamente (cálculo exacto)
b) Método de Euler con h=0.5

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= y*x^2-1.1*y
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') y*x^2-1.1*y
h=input('ingrese el paso h = ') ingrese valor inicial x1= 0
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 0
n=(b-x1)/h; ingrese valor inicial y1= 1
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 1
Y(1)=y1; ingrese el paso h = 0.5
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.5000
end ingrese valor a aproximar b= 2
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 2
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 0, 0.5, 1.0, 1.5, 2.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 1.0, 0.45, 0.25875, 0.245812, 0.387155]
disp(vpa(Y,6))
plot(X,Y),grid

2. Resuelva el siguiente problema de valor inicial en el intervalo de x=0 a 1 donde y(0)=1


𝑑𝑦
= (1 + 4𝑥)√𝑦
𝑑𝑥
a) Analíticamente (cálculo exacto)
b) Método de Euler con h=0.25
function euler2019 >> euler2019
g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= (1+4*x)*y^(1/2)
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') (1+4*x)*y^(1/2)
h=input('ingrese el paso h = ') ingrese valor inicial x1= 0
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 0
n=(b-x1)/h; ingrese valor inicial y1= 1
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 1
Y(1)=y1; ingrese el paso h = 0.25
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.2500
end ingrese valor a aproximar b= 1
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 1
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 0, 0.25, 0.5, 0.75, 1.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 1.0, 1.25, 1.80902, 2.81776, 4.49638]
disp(vpa(Y,6))
plot(X,Y),grid

3. Resuelva el siguiente problema de valor inicial en el intervalo de x=0 a 3 donde y(0)=1


𝑑𝑦
= 𝑦𝑠𝑒𝑛3 𝑥
𝑑𝑥
a) Analíticamente (cálculo exacto)
b) Método de Euler con h=0.3

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= y*(sin(x))^3
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') y*(sin(x))^3
h=input('ingrese el paso h = ') ingrese valor inicial x1= 0
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 0
n=(b-x1)/h; ingrese valor inicial y1= 1
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 1
Y(1)=y1; ingrese el paso h = 0.3
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.3000
end ingrese valor a aproximar b= 3
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 3
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 1.0, 1.0, 1.00774, 1.06217, 1.21533, 1.51053, 1.96029, 2.50343, 2.98649, 3.26261,
disp(vpa(Y,6)) 3.33901]
plot(X,Y),grid

5. Determine la solución exacta (manualmente) luego aplique el método Euler para aproximar las soluciones de
los siguientes problemas a valor inicial mediante un programa esto para los incisos a) y b) .los demás incisos
mediante programa.
a) y ‘=x𝑒 3𝑥 − 2𝑦 0≤x≥1 y(0)=0 con h=0.5
function euler2019 >> euler2019
g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= x*exp(3*x)-2*y
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') x*exp(3*x)-2*y
h=input('ingrese el paso h = ') ingrese valor inicial x1= 0
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 0
n=(b-x1)/h; ingrese valor inicial y1= 0
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 0
Y(1)=y1; ingrese el paso h = 0.5
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.5000
end ingrese valor a aproximar b= 1
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 1
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 0, 0.5, 1.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 0, 0, 1.12042]
disp(vpa(Y,6))
plot(X,Y),grid
b) y ‘=cos 2x+ sen 3x 0≤x≥1 y(0)=1 con h=0.25

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= cos(2*x)+sin(3*x)
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') cos(2*x)+sin(3*x)
h=input('ingrese el paso h = ') ingrese valor inicial x1= 0
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 0
n=(b-x1)/h; ingrese valor inicial y1= 1
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 1
Y(1)=y1; ingrese el paso h = 0.25
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.2500
end ingrese valor a aproximar b= 1
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 1
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 0, 0.25, 0.5, 0.75, 1.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 1.0, 1.25, 1.63981, 2.02425, 2.23646]
disp(vpa(Y,6))
plot(X,Y),grid

c) y ‘=𝑥 −2 (sen2x-2xy) 1≤x≥2 y(1)=2 con h=0.25

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= x^(-2)*(sin(2*x)-2*x*y)
x1=input('ingrese valor inicial x1= ') g=
y1=input('ingrese valor inicial y1= ') x^(-2)*(sin(2*x)-2*x*y)
h=input('ingrese el paso h = ') ingrese valor inicial x1= 1
b=input('ingrese valor a aproximar b= ') x1 =
syms x y 1
n=(b-x1)/h; ingrese valor inicial y1= 2
X=zeros(1,n+1); y1 =
Y=zeros(1,n+1); 2
Y(1)=y1; ingrese el paso h = 0.25
for i=1:1:n+1 h=
X(i)=x1+(i-1)*h; 0.2500
end ingrese valor a aproximar b= 2
for i=1:1:n b=
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 2
end los valos aproximados de X son
disp('los valos aproximados de X son ') [ 1.0, 1.25, 1.5, 1.75, 2.0]
disp(vpa(X,6)) los valores aproximados de Y son
disp('los valores aproximados de Y son ') [ 2.0, 1.22732, 0.83215, 0.570447, 0.378827]
disp(vpa(Y,6))
plot(X,Y),grid

d) y ‘=𝑥 −2 (sen2x-2xy) 1≤x≥2 y(1)=2 con h=0.25

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= -(y+1)*(y+3)
x1=input('ingrese valor inicial x1= ') g=
-(y+1)*(y+3)
y1=input('ingrese valor inicial y1= ')
ingrese valor inicial x1= 0
h=input('ingrese el paso h = ')
x1 =
b=input('ingrese valor a aproximar b= ') 0
syms x y ingrese valor inicial y1= -2
n=(b-x1)/h; y1 =
X=zeros(1,n+1); -2
Y=zeros(1,n+1); ingrese el paso h = 0.2
Y(1)=y1; h=
for i=1:1:n+1 0.2000
ingrese valor a aproximar b= 2
X(i)=x1+(i-1)*h;
b=
end
2
for i=1:1:n los valos aproximados de X son
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; [ 0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0]
end los valores aproximados de Y son
disp('los valos aproximados de X son ') [ -2.0, -1.8, -1.608, -1.43873, -1.30174, -1.19925, -1.12749, -1.07975, -1.04912
disp(vpa(X,6)) , -1.02995, -1.01815]
disp('los valores aproximados de Y son ')
disp(vpa(Y,6))
plot(X,Y),grid
7. dado el problema a valor inicial

y ‘= -y+x+1 0≤x≥5 y(0)=1

Con la solución exacta y(x)= e^(-x)+x

Aproxime y(5) aplicando método Euler con h=0.5, mediante program

function euler2019 >> euler2019


g=input('ingrese funcion dy/dx=g(x,y)= ','s') ingrese funcion dy/dx=g(x,y)= -y+x+1
x1=input('ingrese valor inicial x1= ')
g=
y1=input('ingrese valor inicial y1= ')
h=input('ingrese el paso h = ')
-y+x+1
b=input('ingrese valor a aproximar b= ')
syms x y ingrese valor inicial x1= 0
n=(b-x1)/h;
X=zeros(1,n+1); x1 =
Y=zeros(1,n+1);
Y(1)=y1; 0
for i=1:1:n+1
ingrese valor inicial y1= 1
X(i)=x1+(i-1)*h;
end
y1 =
for i=1:1:n
Y(i+1)=Y(i)+subs(g,{x,y},{X(i),Y(i)})*h; 1
end
disp('los valos aproximados de X son ') ingrese el paso h = 0.5
disp(vpa(X,6))
disp('los valores aproximados de Y son ') h=
disp(vpa(Y,6)) 0.5000
ingrese valor a aproximar b= 5
plot(X,Y),grid
b=
5
los valos aproximados de X son
[ 0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0]
los valores aproximados de Y son
[ 1.0, 1.0, 1.25, 1.625, 2.0625, 2.53125, 3.01562, 3.50781, 4.00391,
4.50195, 5.00098]

También podría gustarte