1
Gladys Castillo, UA, 2009Métodos Numéricos de Passo Único para
Resolução de Equações Diferenciais Ordinárias (EDOs)
Problema: Um míssil com uma massa inicial de 200 é disparado no instante , sendo a partir daí acelerado por uma força constante de 2000 . Como essa força é gerada por jacto de gases a partir do míssil, a sua massa decresce à taxa de 1 . Usando o método de Euler com e
e o método de Runge Kutta de quarta ordem com , encontre a velocidade no instante sabendo que o míssil está sujeito a uma força de resistência do ar . Compare os resultados obtidos.
0 / 10 5 10 / 50 2 Resolução:
9 Massa do míssil no instante
t
:m(t) = m
0– k t
Como a massa inicial é
m
0= 200kg
e a taxa de decrescimento é k=1,então:
m(t) = 200 – t
9 Força constante de 2000 N mas sujeito a uma força de resistência do ar de
Fr=2v
, então a força resultante é dada por:
F = 2000 – 2 v
9 Pela 2ª Lei de Newton:F = m(t)
× a
⇔
F = m(t)
× dv/dt ⇔ F = m(t) × v’(t)
⇔
v’= F / m(t)
Como resultado obtém-se o seguinte Problema do Valor Inicial (PVI) :0 ) 0 ( 200 2 2000 ' = − − = v t v v
O objectivo então é aproximar o valor da solução
v(t)
para o instantet=50
s usando diferentes métodos numéricos para resolução de PVI de passo único.2
Gladys Castillo, UA, 2009 50 5 10 0 40 4 10 0 30 3 10 0 20 2 10 0 10 1 10 0 5 4 3 2 1 = × + = = × + = = × + = = × + = = × + = t t t t ty = y(x)
do PVI num conjunto discreto de pontos.⇒ a solução aproximada é apresentada numa tabela de valores (
x
n,y
n);1, 2, …, onde:
9 os
x
n são nós equidistantes (com igual espaçamento ),i.e.: xn =x0 +h×n, n=1, 2, ...
9 os
y
n são aproximações da soluçãoy(x)
no nóx
n,i.e.: yn ≈ y(xn), n=1, 2, ...
⇒ ambos os métodos são considerados métodos de passo único, pois a aproximação
y
n+1 é calculada usando apenas a aproximação anteriory
n .I) Aproximar
v(50)
usando o método de Euler comh=10
.Fórmula de Euler:
y
n+1=
y
n+
h
f
(
x
n,
y
n),
n
=
0
,
1
,
2
,....
,y
0 =y(x
0)
é dado pela condição inicial.Para o problema é dado:
9
t
v
v
t
f
−
−
=
200
2
2000
)
,
(
, (queremos aproximar v(50)) 10,0 0, 50 50/10
5
,
4
,
3
2
1
,
0h
n
n
,
,
t
t
n Calcular:1. / ⇔ 5 (número de pontos tabelados)
2. Calcular nós:
=
+
×
=
3. Calcular aproximações
v
n≈v(t
n)
usando a fórmula de Euler:0
4
,
3
,
2
,
1
,
0
,
200
2
2000
10
0 1=
=
−
−
+
=
+v
n
t
v
v
v
n n n n3
Gladys Castillo, UA, 2009 Tabela de valores (t
n, v
n)tn 0 10 20 30 40 50
vn 0 100.0000 194.7368 284.2105 368.4211 447.3684
As aproximações são arredondadas a 4 casas decimais:
447.3684
40
200
4211
.
68
3
2
2000
10
4211
.
68
3
200
2
2000
10
)
50
(
4211
.
68
3
30
200
284.2105
2
2000
10
284.2105
200
2
2000
10
)
40
(
284.2105
20
200
7368
.
4
9
1
2
2000
10
7368
.
4
9
1
200
2
2000
10
)
30
(
7368
.
194
10
200
0000
.
100
2
2000
10
00.0000
1
200
2
2000
10
)
20
(
0000
.
100
200
2000
10
0
200
0
2
2000
10
0
200
2
2000
10
)
10
(
4 4 4 5 3 3 3 4 2 2 2 3 1 1 1 2 0 0 0 1≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
=
=
−
×
−
+
=
−
−
+
=
≈
t
v
v
v
v
t
v
v
v
v
t
v
v
v
v
t
v
v
v
v
t
v
v
v
v
A aproximação da velocidade no instante encontrada com o método de Euler com passo é de 447.3684 , i.e.:
50
10 /
50
≈
≈
447.3684 /
Para resolve-lo em Matlab podemos usar a rotina EULERS do pacote de rotinas de MN:
f = inline('(2000 - 2*v)/(200 - t)'); a =0; b =50;
v0 =0; h =10;
n = (b-a)/ h; % o número de aproximações a calcular
[t,v] = EULERS(f, a, b, v0, n)
4
Gladys Castillo, UA, 2009 II. Aproximarv(50)
usando o método de Euler comh=5
.Para o problema é dado:
t
v
v
t
f
−
−
=
200
2
2000
)
,
(
, (queremos aproximar ) 5,0 0, 50 50 / ⇔ 50/5 10 Calcular:
1. (número de pontos tabelados)
2. Calcular nós:
t
n=
t
0+
h
×
n
,
n
=
1
,
...,
10
3. Calcular aproximações
≈
usando a fórmula de Euler:
0
9
,...,
1
,
0
,
200
2
2000
5
0 1=
=
−
−
+
=
+v
n
t
v
v
v
n n n n Tabela de valores (t
n, v
n) tn 0 5 10 15 20 25 30 35 40 45 50 vn 0 50 98.72 146.15 192.30 237.18 280.77 323.08 364.10 403.85 442.315
Gladys Castillo, UA, 2009442.3077
45
200
403.8461
2
2000
5
403.8461
200
2
2000
5
v(50)
...
192.3077
15
200
146.1538
2
2000
5
146.1538
200
2
2000
5
)
20
(
146.1538
10
200
7179
.
98
2
2000
5
7179
.
98
200
2
2000
5
)
15
(
7179
.
98
5
200
0000
.
50
2
2000
5
0000
.
50
200
2
2000
5
)
10
(
0000
.
50
200
2000
5
0
200
0
2
2000
5
0
200
2
2000
5
)
5
(
9 9 9 10 3 3 3 4 2 2 2 3 1 1 1 2 0 0 0 1≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
≈
−
×
−
+
=
−
−
+
=
≈
=
=
−
×
−
+
=
−
−
+
=
≈
t
v
v
v
t
v
v
v
v
t
v
v
v
v
t
v
v
v
v
t
v
v
v
v
A aproximação da velocidade no instante encontrada com o método de Euler com passo é de 447.3684 , i.e.:
50
10 /
v(50)
≈ v
10≈
442.3077 /Para resolve-lo em Matlab podemos usar a rotina EULERS do pacote de rotinas de MN: f = inline('(2000 - 2*v)/(200 - t)'); a =0; b =50; h = 5; n = (b-a)/ h; [t,v] = EULERS(f, a, b, v0, n)
v10 = v(n+1) % a aproximação é a ultima componente do vector % das aproximações
6
Gladys Castillo, UA, 2009 PVI e compará-lo com as aproximações encontradas pelo método de Euler com passo h=5. A solução exacta pode ser calculada e é:40 10 ) ( 2 t t t v = − % Os pontos aproximados pelo método de Euler encontram-se calculados nos vectores [t,v]
% Os pontos para desenhar o gráfico da solução exacta t1 = linspace(0,55); v1 = 10 *t1 - (t1.^2/40); figure(1);clf; hold on; grid on; plot(t1,v1,'-b'); plot(t,v,'or');
legend('solução exacta v(t)=10 t - (t^2/40)', 'aproximações pelo método Euler', 2);
xlabel('t'); ylabel('v(t)');
title('Aproximação da solução do P.V.I. pelo método de Euler'); hold off;
III. Aproximar
v(50)
usando o método de Runge-Kutta de quarta ordem comh=10
.Fórmula Runge-Kutta, ordem 4 (RK4):
)
(
,....
2
,
1
,
0
),
2
2
(
6
1
0 0 4 3 2 1 1x
y
y
n
k
k
k
k
y
y
n n=
=
+
+
+
+
=
+ com:)
,
(
)
2
,
2
(
)
2
,
2
(
)
,
(
3 4 2 3 1 2 1k
y
h
x
f
h
k
k
y
h
x
f
h
k
k
y
h
x
f
h
k
y
x
f
h
k
n n n n n n n n+
+
=
+
+
=
+
+
=
=
7
Gladys Castillo, UA, 2009 Para o problema:t
v
v
t
f
−
−
=
200
2
2000
)
,
(
, 10, 0, 50 / ⇔ 50/10 s) s:a. 5 (número de pontos tabelado
b. Calcular nó
t
n=
t
0+
h
×
n
,
n
=
1
,...
,5
c. Calcular aproximações
v
n≈v(t
n)
usando a fórmula de RK4:
0
4
,
3
,
2
,
1
,
0
),
2
2
(
6
1
0 4 3 2 1 1=
=
+
+
+
+
=
+v
n
k
k
k
k
v
v
n n com)
10
(
200
)
(
2
2000
10
)
5
(
200
)
2
(
2
2000
10
)
5
(
200
)
2
(
2
2000
10
200
2
2000
10
3 4 2 3 1 2 1+
−
+
−
=
+
−
+
−
=
+
−
+
−
=
−
−
=
n n n n n n n nt
k
v
k
t
k
v
k
t
k
v
k
t
v
k
Tabela de valores (t
n, v
n) tn 0 10 20 30 40 50 vn 0 97.4999 189.9998 277.4997 359.9996 437.4995 Aproximando v(10):)
2
2
(
6
1
0
)
2
2
(
6
1
)
10
(
v
1v
0k
1k
2k
3k
4k
1k
2k
3k
4v
≈
=
+
+
+
+
=
+
+
+
+
8
Gladys Castillo, UA, 20091280
.
100
)
10
0
(
200
)
5673
.
97
0
(
2
2000
10
)
10
(
200
)
(
2
2000
10
5673
.
97
)
5
0
(
200
)
2
4359
.
97
0
(
2
2000
10
)
5
(
200
)
2
(
2
2000
10
4359
.
97
)
5
0
(
200
)
2
100
0
(
2
2000
10
)
5
(
200
)
2
(
2
2000
10
100
0
200
0
2000
10
200
2
2000
10
0 3 0 4 0 2 0 3 0 1 0 2 0 0 1≈
+
−
+
−
=
+
−
+
−
=
≈
+
−
+
−
=
+
−
+
−
=
≈
+
−
+
−
=
+
−
+
−
=
=
−
−
=
−
−
=
t
k
v
k
t
k
v
k
t
k
v
k
t
v
k
Substituindo os valores de k1, k2, k3 e k4 na fórmula obtêm-se a aproximação:
v(10)
≈ v
1≈
98.3558
A seguir podemos calcular as aproximações para e . Como resultado, a aproximação da velocidade no instante
encontrada com o método de Runge-Kutta de ordem 4 e passo é de , i.e.: 20, 30, 40 50 50 10 447.3684 /
v(50)
≈ v
5≈
437.4995 m/sPara este P.V.I. 0 ) 0 ( 200 2 2000 ' = − − = v t v v a solução exacta é : 40 10 ) ( 2 t t t
v = − e o valor exacto da velocidade no instante
⇒
v(50)
= 437.550
9
Gladys Castillo, UA, 2009 Aproximando por:9
Euler comh=10……... v(50)
≈ v
5≈
447.36849
Euler comh=5……….. v(50)
≈ v
10≈
442.30779
Runge-Kutta, ordem 4,h=10 …..
v(50)
≈ v
5≈
437.4995Conhecendo o valor exacto de , podemos calcular o erro de truncatura global (o erro resultante da acumulação dos erros de truncatura introduzidos em todos os passos)
50
10
Valores do erro de truncatura global (absoluto) cometido na aproximação de 50 pelos diferentes métodos:
9 Euler com
h=10……… | e
5| = | v(50) - v
5|
=
9.8684210539 Euler com
h=5………. | e
10| = | v(50) – v
10|
=
4.8076923089 Runge-Kutta, ordem 4,
h=10…| e
5| = | v(50) – v
5|
=
0.0005173705014Apesar do método de Euler ser de aplicação muito simples, os resultados obtidos têm, em geral, pouca precisão. Assim, a melhor aproximação de v(50) é a aproximação obtida com o método de Runge-Kutta de ordem 4 e passo
.
Podemos também desenhar o gráfico da solução exacta deste problema de PVI e compará-lo com as aproximações encontradas pelos métodos de Euler com passo h=5 e h=10 e com o método de Runge-Kutta de 4ª ordem e passo h=10.
( programa em Matlab: fp6_ex6.m )