Você está na página 1de 18

CENTRO ACADÊMICO DO AGRESTE

NÚCLEO DE TECNOLOGIA

HIGOR GUSTAVO CORDEIRO DE


OLIVEIRA
VICTOR VINICIUS TORRES
BEZERRA

Implementação do Método de Euler e Método de Euler


Modificado para calcular EDO’s de primeira ordem

Caruaru
2021
Sumário

1 Introdução ...................................................................... 2
1.1 Método de Euler ............................................................. 2
1.2 Método de Euler Modificado ......................................... 3
2 Exemplos........................................................................ 5
3 Programação.................................................................. 6
4 Resultados ..................................................................... 9
5 Conclusão ...................................................................... 17
6 Referências .................................................................... 17
2
1 Introdução

1.1 Método de Euler

O Método de Euler, ou método das tangentes, constitui na ideia básica por tras
dos campos de direções que pode ser utilizado para encontrar aproximações
numéricas para solucionar equações diferenciais. Logo, suponha que queiramos
aproximar a solução do problema de valor inicial.

y’=f(x, y)
y(x0)=y0

Figura 1

Se h é um incremento positivo no eixo-x, então, conforme o gráfico, podemos


achar um ponto (x1, y1) =(x0+h, y1) na tangente a curva solução desconhecida em
(x0, y0).
Pela forma ponto-coef. angular da equação de uma reta, teremos

y1−y0
(x0+h)−x0
= y′0 ou y 1=y0+h.y’0

onde y’0=f(x0, y0). Rotulando x0+h como x1, o ponto (x1, y1) na tangente é uma
aproximação do ponto (x1, y(x1)) da curva solução; isto é, y1≈y(x1).
Espontaneamente a precisão da aproximação depende do tamanho do incremento
de h. No geral, devemos indicar esse tamanho do passo “razoavelmente pequeno”.
Assim, crendo um valor constante para h, podemos obter uma sucessão de
pontos
((x1, y1), (x2, y2), … , xn, yn) que devem estar próximos dos pontos ((x1, y(x1)), (x2, y(x2)),
… , (xn, y(xn))). Utilizando agora (x1, y1), podemos obter o valor de y2, que é a ordenada
de um ponto em uma nova “tangente”.
3

Figura 2

Trazemos

y2−y1 = y′1 ou y 2=y 1+h.y’ 1=y 1+h.f(x 1, y 1)


h

Dessa forma, decorre que

yn+1=yn+h.y’n
=yn+h.f(xn, yn)

Onde,
xn=x0+nh.

1.2 Método de Euler Modificado

A fórmula
f(xn,yn)+f(xn+1,y∗n+1)
yn+1=yn+h.
2
onde
y*n+1=yn+h.f(xn, yn) (A)

é conhecida como fórmula de Euler Melhorada, ou fórmula de Heun. Os valores de


f(xn, yn) e f(xn+1, yn+1) são aproximações do coeficiente angular da curva em (xn,
y(xn)) e (xn+1, y(xn+1)) e, consequentemente, o quociente

f(xn, yn) + f(xn + 1, y ∗ n + 1)


2
4

pode ser interpretada como um coeficiente angular médio no intervalo entre xn e xn+1.
A equação em (A) pode ser visualizada rapidamente. No gráfico abaixo,
mostramos o caso em que n=0. Observemos que

f(x0, y0) e f(x1,y*1)

Figura 3

são coeficientes angulares das retas indicadas que passam pelos pontos (x0, y0) e (x1,
y*1), respectivamente. Adotando uma média desses coeficientes angulares, obtemos
o coeficiente angular das retas tracejadas. Em lugar de progredirmos ao longo da
reta de coeficiente angular m=f(x0, y0) até o ponto com ordenada y*1 obtido pelo
método usual de Euler, progredimos ao longo da reta por (x0, y0) com coeficiente
angular mméd até atingirmos x1. Pela observação do gráfico, parece plausível que y1
constitua uma melhora em relação a y*1.
Podemos também dizer que o valor de

y*1=y0+h.f(x0, y0)

prenuncia um valor de y(x1), enquanto que

f(x0,y0)+f(x1,y∗1)
y1=y0+h.
2

ajusta a estimativa.
5

2. Exemplos

Logo, para ambos os métodos foram escolhidos três exemplos, para que se
tenha uma comparação da efetividade dos mesmos.

 Método de Euler / Método de Euler Modificado

EXEMPLO 1:

Utilizando o método de Euler e aplicando também o método melhorado de Euler,


obtenha uma aproximação do valor de y(1,5) para a solução de y’=2xy, y(0)=1 com
h=0,1.

EXEMPLO 2:

Com o auxílio do método de Euler e com a formula melhorada de Euler, obtenha o


valor aproximado de y(0,5) para a solução de y’=(x+y-1)2, y(0)=2 com h=0,05.

EXEMPLO 3:

Utilizando o método de Euler e aplicando também o método melhorado de Euler,


obtenha uma aproximação do valor de y(1.5) para a solução de y’=(y*2-x*1/3+1)*2,
y(0)=1 com h=0,05.
6

3. Programação

 Método de Euler

% Algoritmo para calcular EDO de primeira ordem usando o Método de Euler

clear % Limpar a memória do programa


clc % Limpar a janela de comandos

format long % Mais casas decimais após a vírgula

disp('### MÉTODO DE EULER ###'); % Título

% Definindo os parâmetros de entrada


fprintf('\n');
disp('DADOS DE ENTRADA: ');
fprintf('\n');

F=inline(input('Informe a função desejada: ','s')); %Recebendo a função


x0=input('Informe o intervalo inferior (x0=inicial): '); % x0 é valor
do ponto inicial
y0=input('Informe o valor de y(x0): '); % y0 é valor do ponto inicial
xf=input('Informe o intervalo superior (xf=final): '); % Ponto que deseja-
se ser analisado
h=input('Informe o tamanho do passo (h): '); % Tamanho do passo

n=(xf-x0)/h; % Quantidade de subintervalos


i=1; % Contabilizador das etapas

% Apresentação dos resultados


fprintf('\n');
fprintf('DADOS DE SAÍDA: ');
fprintf('\n\n');
disp(' n x(n) y(n)');
disp('===============================');

% Vetores que armazenarão os resultados


vn=[];
vx=[];
vy=[];

% Laço que executará os passos do método até o ponto desejado


while i<=n

f=feval(F,x0,y0);
fprintf('\n %i %f %f', i, x0, y0);
vn(1,i)=i;
vx(1,i)=x0;
vy(1,i)=y0;
y0=y0+f*h;
x0=x0+h;
i=i+1;

end
7

fprintf('\n %i %f %f', i, x0, y0);


vn(1,i)=n;
vx(1,i)=x0;
vy(1,i)=y0;

% Resultado aproximado do ponto desejado


fprintf('\n\nO valor de y(%.1f) é %f',x0,y0);
fprintf('\n');

% Gráfico da função
plot(vx,vy,'r*')
xlabel('x'), ylabel('y');
title('Gráfico da Função - Método de Euler');
grid on
hold on
plot(vx,vy,'b-');
hold off

 Método de Euler Modificado

% Algoritmo para calcular EDO de primeira ordem usando o Método de Euler

clear % Limpar a memória do programa


clc % Limpar a janela de comandos

format long % Mais casas decimais após a vírgula

disp('### MÉTODO DE EULER MODIFICADO ###'); % Título

% Definindo os parâmetros de entrada


fprintf('\n');
disp('DADOS DE ENTRADA: ');
fprintf('\n');

F=inline(input('Informe a função desejada: ','s')); %Recebendo a função


x0=input('Informe o intervalo inferior (x0=inicial): '); % x0 e y0 é o
ponto inicial
y0=input('Informe o valor de y(x0): ');
xf=input('Informe o intervalo superior (xf=final): '); % Ponto que deseja-
se ser analisado
h=input('Informe o tamanho do passo (h): '); % Tamanho do passo

n=(xf-x0)/h; % Quantidade de subintervalos


i=1; % Contabilizador das etapas

% Apresentação dos resultados


fprintf('\n');
fprintf('DADOS DE SAÍDA: ');
fprintf('\n\n');
disp(' n x(n) y(n)');
disp('===============================');

% Vetores que armazenarão os resultados


vn=[];
vx=[];
vy=[];

% Laço que executará os passos do método até o ponto desejado


8

while i<=n

f=feval(F,x0,y0);
fprintf('\n %i %f %f', i, x0, y0);
vn(1,i)=i;
vx(1,i)=x0;
vy(1,i)=y0;
y1=y0+f*h;
x1=x0+h;
g=feval(F,x1,y1);
y0=y0+h*[(f+g)/2];
x0=x0+h;
i=i+1;

end

fprintf('\n %i %f %f', i, x0, y0);


vn(1,i)=n;
vx(1,i)=x0;
vy(1,i)=y0;

% Resultado aproximado do ponto desejado


fprintf('\n\nO valor de y(%.1f) é %f',x0,y0);
fprintf('\n');

% Gráfico da função
plot(vx,vy,'r*')
xlabel('x'), ylabel('y');
title('Gráfico da Função - Método de Euler Modificado');
grid on
hold on
plot(vx,vy,'b-');
hold off
9

4. Resultados
Resultado do Exemplo 1 para h=0.1: (Método de Euler)

### MÉTODO DE EULER ###

DADOS DE ENTRADA:

Informe a função desejada: 2*x*y


Informe o intervalo inferior (x0=inicial): 1
Informe o valor de y(x0): 1
Informe o intervalo superior (xf=final): 1.5
Informe o tamanho do passo (h): 0.1

DADOS DE SAÍDA:

n x(n) y(n)
===============================

1 1.000000 1.000000
2 1.100000 1.200000
3 1.200000 1.464000
4 1.300000 1.815360
5 1.400000 2.287354
6 1.500000 2.927813

O valor de y(1.5) é 2.927813


10

Resultado do Exemplo 2 para h=0.05: (Método de Euler)

### MÉTODO DE EULER ###

DADOS DE ENTRADA:

Informe a função desejada: (x+y-1)*2


Informe o intervalo inferior (x0=inicial): 0
Informe o valor de y(x0): 2
Informe o intervalo superior (xf=final): 0.5
Informe o tamanho do passo (h): 0.05
DADOS DE SAÍDA:

n x(n) y(n)
===============================

1 0.000000 2.000000
2 0.050000 2.100000
3 0.100000 2.215000
4 0.150000 2.346500
5 0.200000 2.496150
6 0.250000 2.665765
7 0.300000 2.857341
8 0.350000 3.073076
9 0.400000 3.315383
10 0.450000 3.586922
11 0.500000 3.890614

O valor de y(0.5) é 3.890614


11

Resultado do Exemplo 3 para h=0.05: (Método de Euler)

### MÉTODO DE EULER ###

DADOS DE ENTRADA:
Informe a função desejada: (y*2-x*1/3+1)*2
Informe o intervalo inferior (x0=inicial): 1
Informe o valor de y(x0): 1
Informe o intervalo superior (xf=final): 1.5
Informe o tamanho do passo (h): 0.05

DADOS DE SAÍDA:

n x(n) y(n)
===============================

1 1.000000 1.000000
2 1.050000 1.266667
3 1.100000 1.585000
4 1.150000 1.965333
5 1.200000 2.420067
6 1.250000 2.964080
7 1.300000 3.615229
8 1.350000 4.394942
9 1.400000 5.328930
10 1.450000 6.448050
11 1.500000 7.789326

O valor de y(1.5) é 7.789326


12

Resultado do Exemplo 1 para h=0.1: (Método de Euler Modificado)

### MÉTODO DE EULER MODIFICADO ###

DADOS DE ENTRADA:

Informe a função desejada: 2*x*y


Informe o intervalo inferior (x0=inicial): 1
Informe o valor de y(x0): 1
Informe o intervalo superior (xf=final): 1.5
Informe o tamanho do passo (h): 0.1

DADOS DE SAÍDA:

n x(n) y(n)
===============================

1 1.000000 1.000000
2 1.100000 1.232000
3 1.200000 1.547885
4 1.300000 1.983150
5 1.400000 2.590787
6 1.500000 3.450929

O valor de y(1.5) é 3.450929


13

Resultado do Exemplo 2 para h=0.05: (Método de Euler Modificado)

### MÉTODO DE EULER MODIFICADO ###

DADOS DE ENTRADA:

Informe a função desejada: (x+y-1)*2


Informe o intervalo inferior (x0=inicial): 0
Informe o valor de y(x0): 2
Informe o intervalo superior (xf=final): 0.5
Informe o tamanho do passo (h): 0.05

DADOS DE SAÍDA:

n x(n) y(n)
===============================

1 0.000000 2.000000
2 0.050000 2.107500
3 0.100000 2.231538
4 0.150000 2.373849
5 0.200000 2.536353
6 0.250000 2.721170
7 0.300000 2.930643
8 0.350000 3.167361
9 0.400000 3.434183
10 0.450000 3.734273
11 0.500000 4.071121

O valor de y(0.5) é 4.071121


14
15

Resultado do Exemplo 3 para h=0.05: (Método de Euler Modificado)

### MÉTODO DE EULER MODIFICADO ###

DADOS DE ENTRADA:

Informe a função desejada: (y*2-x*1/3+1)*2


Informe o intervalo inferior (x0=inicial): 1
Informe o valor de y(x0): 1
Informe o intervalo superior (xf=final): 1.5
Informe o tamanho do passo (h): 0.05

DADOS DE SAÍDA:

n x(n) y(n)
=============================
1 1.000000 1.000000
2 1.050000 1.292500
3 1.100000 1.647517
4 1.150000 2.078804
5 1.200000 2.603140
6 1.250000 3.240998
7 1.300000 4.017351
8 1.350000 4.962668
9 1.400000 6.114122
10 1.450000 7.517062
11 1.500000 9.226816

O valor de y(1.5) é 9.226816


16
17

5. Conclusão

Compreende-se, mesmo sem a presença da função com os valores exatos de


cada exemplo, que comparando as tabelas geradas por ambos os métodos, de fato
o Método de Euler Modificado é mais preciso do que o Método de Euler.
O erro do Método de Euler acresce, no pior evento, de forma linear em h.
Portanto, pontos menos espaçados tendem a apresentar erro menor. Por não ser
suficientemente preciso. Além disso, tal método não é normalmente utilizado na
prática.

6. Referências

Zill, Dennis G. Equações Diferenciais – Volume 2 – Dennis G. Zill, Michael R. Cullen;


tradução: Alfredo Alves de Farias; revisão técnica: Antônio Pertence Junior – São
Paulo: Pearson Books, 2001.
Stewart, James. Calculo – Volume 2 – James Stewart; tradução: EZ2 Translate –
São Paulo: Cengage Learning, 2013.

Você também pode gostar