Você está na página 1de 16

METODOS NUMRICOS PARA EQUAES DIFERENCIAIS ORDINRIAS

Rivaldo Bezerra de Aquino Filho


1
, Aparecido Jesuino de Souza
2
RESUMO
Nesse artigo tratamos de mtodos numricos bsicos para Equaes Diferenciais Ordinrias. Com o
auxilio do sofware Matlab resolvemos numericamente problemas de valor inicial e de contorno.
Tambm foi feita uma anlise de erro do mtodo conhecido como Mtodo de Euler Explcito.
Palavras-chave: mtodos numricos, equaes diferenciais ordinrias, problemas de contorno.
NUMERICAL METHODS FOR ORDINARY DIFFERENTIAL EQUATIONS
ABSTRACT
In this article we discuss some basic numerical methods for Ordinary Differential Equations. With the
aid of the Matlab software we solve numerically some initial and boundary value problems. We have
also made the error analysis of the Explicit Euler method.
Keywords: numerical methods, ordinary differential equation, boundary value problems.
INTRODUO
Mtodos numricos so ferramentas poderosas para se determinar, exata ou aproximadamente,
solues numricas de problemas modelados matematicamente.
Nesse trabalho fizemos uso dessas ferramentas para determinar numericamente a soluo de alguns
problemas de valor inicial (PVI) e de contorno (PVC). Para o desenvolvimento da teoria usamos como
referncias os livros (CUMINATO & MENEGUETTE, 2006; CONTE, 1977). As implementaes dos
mtodos foram feitas usando o software MATLAB e para o melhor uso desse instrumento nos baseamos em
(MATSUMOTO, 2001).
Tambm fizemos uma breve anlise de erro para o mtodo conhecido como Euler explcito. Nessa
anlise nos baseamos exclusivamente no livro (CONTE,1977).
MATERIAL E MTODOS
Este trabalho foi desenvolvido no Laboratrio de Informtica da Unidade Acadmica de Matemtica e
Estatstica (LIDME).
Material
Foi utilizado o software MATLAB.
1. PROBLEMA DE VALOR INICIAL EM EQUAES ORDINRIAS
Uma equao diferencial na qual a varivel dependente funo de apenas uma varivel dita
equao diferencial ordinria.
Um problema de valor inicial (PVI) um problema de evoluo, no qual a informao inicial (conhecida)
propagada para o interior do domnio unidimensional pela equao diferencial.
Matematicamente, o mais simples dos problemas de valor inicial pode ser apresentado na forma:
1
Aluno do Curso de Matemtica, Unidade Acadmica de Matemtica e Estatstica, UFCG, Campina Gande , PB, E-mail:
rivaldo.mat@gmail.com
2
Prof. Doutor, Unidade Acadmica de Matemtica e Estatstica, UFCG, Campina Grande, PB, E-mail:
cido@dme.ufcg.edu.br

'


) 1 . 1 (
, ) (
) , (
a y
y x f y
onde IR IR f
2
: uma funo contnua. A funo
) (x y y

) ( a x
a funo incgnita e

o seu valor inicial no ponto


a
.
Um ponto importante a ser citado a questo da existncia e unicidade de solues de problema de
valor inicial para uma equao diferencial, visto que s faz sentido buscar a sua soluo numrica, ou
soluo aproximada, se de antemo estiver garantida a existncia e unicidade de sua soluo, pois ao
determinar uma soluo numrica de um problema que a princpio no possua soluo ou que possua, mas
no seja nica, o processo numrico poder no convergir, ou convergir para algo que no seja confivel.
No caso de um problema de valor inicial de equaes ordinrias esta questo est bem resolvida.
Suponhamos que a funo ) , ( y x f satisfaa as seguintes condies:

n
IR E f : contnua, onde { }
n
IR y b a x y x E ], , [ ), , ( ;
Existe uma constante K tal que para todo
] , [ b a x
e quais quer dois valores
y
e

y
em
n
IR

y y K y x f y x f ) , ( ) , (
Teorema 1.1: Seja
) , ( y x f
satisfazendo as condies anteriores e seja um vetor dado. Ento,
existe exatamente uma funo
) (x y
com as seguintes propriedades:
i.
) (x y y
contnua e diferencivel para
x
em
] , [ b a
;
ii.
)) ( , ( ) ( x y x f x y
,
] , [ b a x
;
iii.
) (a y
.
Vamos tratar agora de um mtodo conhecido por Mtodo de Diferenas Finitas. O mtodo de diferenas
finitas a discretizao do domnio e a substituio das derivadas presentes na equao diferencial, por
aproximaes destas envolvendo somente valores numricos da funo. Na prtica substitui-se as
derivadas pela razo incremental que converge para o valor da derivada quando o incremento tende a zero.
Dizemos ento que o problema foi discretizado.
Vamos utilizar como ferramenta matemtica no clculo de aproximaes para as derivadas a srie de
Taylor que relaciona valores da funo e suas derivadas num ponto x com valores dessa mesma funo
numa vizinhana de x , ou seja, em
) ( h x t
com 0 > h . Se
) (x y
, tem derivadas de ordem 1 + n , em
x
, podemos escrever :
). 2 . 1 ( . ), (
)! 1 (

) (
!
... ) (
! 2
) ( ) ( ) (
) 1 (
) 1 (
) (
2
h x x y
n
h
x y
n
h
x y
h
x y h x y h x y
n
n
n
n
+ < <
+
+
+ + + + + +
+
+

O ltimo termo da expresso representa (1.2) representa o erro da aproximao de ) ( h x y + pelo
polinmio de Taylor de ordem n :
.
!
) (
...
! 2
) (
) ( ) ( ) (
) (
2 n
n
n
h
n
x y
h
x y
h x y x y h P + +

+ +
Se 1 n em (1.2) obtemos uma aproximao da derivada ) (x y
, conhecida como frmula
progressiva, que dada por :
). (
2
) ( ) (
) ( y
h
h
x y h x y
x y
+

De modo semelhante, tomando h em (1.2), ainda com 1 n , obtemos a frmula regressiva, que
dada por :
). (
2
) ( ) (
) ( y
h
h
h x y x y
x y +


Tomando 2 n em (1.2), e reescrevendo (1.2) para h e h , respectivamente, obtemos :
) (
! 3
) (
! 2
) ( ) ( ) (
1
3 2
y
h
x y
h
x y h x y h x y + + + +
e
). (
! 3
) (
! 2
) ( ) ( ) (
2
3 2
y
h
x y
h
x y h x y h x y +
Subtraindo a ltima expresso da penltima obtemos a frmula centrada ou frmula de diferenas
centradas:
( ). ) ( ) (
! 3 2
) ( ) (
) (
2 1
3
y y
h
h
h x y h x y
x y +
+

O primeiro mtodo para soluo aproximada de PVIs que trataremos o Mtodo de Euler Explcito que
utiliza como base a frmula progressiva para a aproximao da derivada primeira. O primeiro passo dividir
o intervalo
] , [ b a
em N subintervalos iguais, cada um de comprimento h , definindo uma malha
{ } 1 ,..., 1 , ) 1 ( + + N i h i a x R
i h
. Com
N
a b
h
) (
.
Sejam
) (
i i
x y y
aproximaes para
) (
i
x y
,
1 , ... , 2 + N i
e
1
y . Em cada um dos pontos
1 3 2
, ... , ,
+ N
x x x
, aproximamos a equao diferencial (1.1) por :
N i
h
y y
y x f
i i
i i
, ... , 1 , ) , (
1

+
ou,
N i y x hf y y
i i i i
, ... , 1 ), , (
1
+
+
Perceba que o valor de
1 + i
y calculado explicitamente em funo de
i
y , mesmo quando a funo
f
no linear.
Quando aproximamos a derivada primeira em (1.1) por diferenas regressivas obtemos:
1 , ... , 2 , ) , (
1
+


N i
h
y y
y x f
i i
i i
ou
N i y x hf y y
i i i i
, ... , 1 ), , (
1 1 1
+
+ + +
.
Esse Mtodo chamado Mtodo de Euler Implcito. Note que se
f
for uma funo no linear teremos
que o vetor
1 + i
y ser definido implicitamente e, portanto para a sua obteno deve-se lanar mo de
mtodo eficiente para a soluo de sistemas de equaes algbricas no lineares, como por exemplo o
Mtodo de Newton. A comparao entre um mtodo explcito e outro implcito que em geral o mtodo
implcito mais estvel, mas exige um passo h menor para ser obter uma boa aproximao da soluo.
Vamos mostrar os Mtodos de Euler Explcito e Implcito para resolver numericamente o PVI da forma
(1.1) :
Mtodo de Euler Explcito:
Programa Principal:
clear % Apaga os dados anteriores;
clc % Apaga os comandos da tela;
p = 1; % Parmetro para utilizar os dados iniciais;
[a,b,h,y(1)] = dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
y(1);
k = 1;
x(1) = a;
while k < (kmax+h)
y(k+1) = y(k) + h*efe(x(k),y(k));
x(k+1) = x(k) + h;
k = k+1;
end
% Grfico da Soluo aproximada;
dados(p)
% Dados Iniciais:
function [a,b,h,yi] = dados(p)
a ; % Extremo inferior de onde x esta definido;
b ; % Extremo superior de onde x esta definido;
h ; % Passo da malha;
yi ;% Dado inicial do PVI;
plot(x,y,b:*)%Plota o Grfico ;
Funo do PVI:
function f = efe(x,y)
f ;
Mtodo de Euler Implcito:
Programa Principal:
clear; % Apaga os dados anteriores;
clc; % Apaga os comandos da tela;
p = 1; % Parmetro para utilizar os dados iniciais;
[a,b,h,y(1),tol,inte] = dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
k=1;
x(1) = a; % primeiro valor de x
% y(1);
while k < (kmax+h) % numero de pontos a ser
calculados
x(k+1) = x(k) + h;
%Mtodo de Euler implcito
y(k+1) = newton(x(k), y(k), x(k+1), h, tol, inte);
k = k+1;
end
% Grfico da soluo aproximada
plot(x,y, r:+);
dados(p):
% Dados Iniciais:
function [a,b,h,yi,tol,inte]=dados(p)
a = 0; % Extremo inferior de onde x esta definido;
b = 1; % Extremo superior de onde x esta definido;
h = 0.1; % Passo da malha;
yi = 1;% Dado inicial do PVI;
tol = 0.00001; % Tolerncia do erro no Mtodo de
Newton;
inte = 10; % numero de iteraes mximas
Mtodo de Newton:
function raiz = newton(xn, yn, xnmais1, h, tol, inte)
inti = 1; % Parmetro para o numero de iteraes;
% Chute inicial para o mtodo de Newton usando o
mtodo de Euler explicito;
yin = yn + h*efe(xn, yn);
yf = yin;
erro=2*tol; % Parmetro para o erro;
while (abs(erro)>tol) & (inti<inte) % Requisitos para
o Mtodo de Newton (erro e iteraes);
% Mtodo de Newton
yf = yin-((fnewton(yf, yn, xnmais1, h))/dfnewton(yf,
yn, xnmais1, h));
erro = (yf-yin);
yin = yf;
inti =i nti+1;
end
raiz = yf; % Parmetro de sada
Funo do Mtodo de Newton:
function saida = fnewton(z, yn, xnmais1, h)
sada = z yn h*efe(xnmais1, z); % z incgnita
Derivada da Funo do Mtodo de Newton na
varivel z:
function saida=dfnewton(z, yn, xnmais1, h) % z
incognita
saida = 1 - h*defe(xnmais1,z);
Funo do PVI:
function f=efe(x,y)
f ;
Derivada da funo do PVI em relao a varivel y:
function df = defe(x,y)
df ;
Vamos ilustrar os resultados obtidos pelos Mtodos de Euler Explcito e Implcito para resolver
numericamente o seguinte PVI:
) 3 . 1 ( .
1 ) 0 (

'

y
y x y
A soluo exata do PVI
x
e x x y

+ 2 1 ) ( , que por sua vez foi utilizada na comparao da
eficincia dos mtodos para x entre 0 e 1 e com h = 0,1. Veja comparao na tabela:
Soluo exata:
x 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
y 1,0 0,9097 0,8375 0,7816 0,7406 0,7131 0,6976 0,6932 0,6987 0,7131 0,7358
Soluo Numrica: Mtodo de Euler Explcito
x 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
y 1,0 0,9000 0,8200 0,7580 0,7122 0,6810 0,6629 0,6566 0,6609 0,6748 0,6974
Soluo Numrica: Mtodo de Euler Implcito
x 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
y 1,0 0,9182 0,8529 0,8026 0,7660 0,7418 0,7289 0,7263 0,7330 0,7482 0,7711
Graficamente obtivemos :
Tambm usamos o mtodo das diferenas centradas para obter a soluo numrica do PVI (1.3).
Mtodo das Diferenas Centradas:
clear; % Apaga os dados anteriores;
clc; % Apaga os comandos da tela;
p=1; % Parametro para utilizar os dados iniciais;
[a,b,h,y1,]=dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
x(1) = a; % primeiro valor de x
y(1) = y1; % dado inicial
% primeiro passo de inicializacao
y(2)=y(1)+h*efe(x(1),y(1)); % por euler explicito
k=2;
x(2)=x(1)+h;
while k < (kmax+h) % numero de pontos a ser
calculados
x(k+1) = x(k) + h;
%Metodo Euler Centrado
y(k+1)=y(k-1)+2*h*efe(x(k),y(k));
k=k+1;
end
f% Grafico da solucao aproximada
plot(x,y, 'b');
dados(p)
% Dados Iniciais:
function [a,b,h,yi] = dados(p)
a ; % Extremo inferior de onde x esta definido;
b ; % Extremo superior de onde x esta definido;
h ; % Passo da malha;
yi ;% Dado inicial do PVI;
function w=eulerex(a,b,h,yi)
% Metodo de Euler Explicito
p = 1;
[a,b,h,w(1),tol,inte] = dados(p);
kmax = (b-a)/h;
k = 1;
x(1) = a;
while k < (kmax+h)
w(k+1)=w(k)+h*efe(x(k),w(k));
x(k+1)=x(k)+h;
k=k+1;
end
Funo do PVI:
function f = efe(x,y)
f ;
Os resultados com esse mtodo foram:
x 0,0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9 1,0
y 1,0 0,9000 0,8200 0,7580 0,7122 0,6810 0,6629 0,6566 0,6609 0,6748 0,6974
Graficamente obtivemos:
Outros dois mtodos estudados para soluo numrica de PVIs foram os mtodos dos Trapzios e o
de Runge-Kutta.
Comparando o Mtodo de Euler Explcito e Implcito com a soluo exata, observamos que enquanto o
Mtodo Explcito erra por falta o Mtodo Implcito erra por excesso. O Mtodo dos Trapzios consiste em
uma combinao linear (mdia aritmtica) dos mtodos de Euler Explcito e Implcito, afim de que os erros
se cancelem e se tenha, portanto uma melhor aproximao.
Equao de diferenas pelo Mtodo dos Trapzios:
..., , 2 , 1
)) , ( ) , ( (
2
1 1 1
N i
y x f y x f
h
y y
i i i i i i

+
+ + +
O Mtodo dos Trapzios implcito, dessa forma utilizamos duas formas de aproximar a soluo do PVI
utilizando esse mtodo. A primeira forma foi pelo Mtodo de Newton e a segunda foi utilizando iteraes
pelo Mtodo de Euler Explcito.
Agora mostraremos as duas formas usadas para encontrar a soluo numrica do PVI (1.1) pelo
Mtodo dos Trapzios.
Mtodo dos Trapzios (Interativo pelo Mtodo de Euler Explcito):
Programa Principal: Mtodo dos Trapzios
clear; % Apaga os dados anteriores;
clc; % Apaga os comandos da tela;
p = 1; % Parmetro para utilizar os dados iniciais;
[a,b,h,y(1)] = dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
k = 1;
x(1) = a; % primeiro valor de x
while k < (kmax+h) % numero de pontos a ser
calculados
x(k+1) = x(k) + h;
%Mtodo do Trapzio por Euler Interativo
y(k+1) = teuler(x(k), y(k), x(k+1), h, tol, inte);
k = k+1;
end
dados(p)
% Dados Iniciais:
function [a,b,h,yi]=dados(p)
a ; % Extremo inferior de onde x esta definido;
b ; % Extremo superior de onde x esta definido;
h ; % Passo da malha;
yi ; % Dado inicial do PVI;
figure(1)
plot(x,y,'g') %Grfico da soluo aproximada
grid on
hold
z = exp(-x.*x); %Soluo Exata (Gaussiana)
plot(x,z,'b');
e = abs(z-y); % Erro entre a soluo exata e a
numrica
figure(2)
plot(x,e,'g') % Grfico do erro
Mtodo Interativo:
function raiz = teuler(xn, yn, xnmais1, h, tol, inte)
yin = yn + h*efe(xn, yn);% Chute inicial para o
mtodo do Trapzio usando o mtodo de Euler
explcito;
erro = 2*tol;
inti = 1; % Parmetro para o numero de iteraes;
while (abs(erro)>tol) & (inti<inte);% Requisitos para
o Mtodo do Trapzio utilizando as iteraes de
Euler explicito (erro e iteraes);

% Mtodo Interativo usando Euler Explicito
y f = yn + (h/2)*(efe(xn,yn) + efe(xnmais1,yin));
erro = (yf-yin);
yin = yf;
inti = inti+1;
end
raiz=yf;
Funo do PVI:
function f=efe(x,y)
f ;
Mtodo dos Trapzios (Mtodo de Newton):
Programa Principal: Mtodo dos Trapzios:
clear; % Apaga os dados anteriores;
clc; % Apaga os comandos da tela;
p = 1; % Parmetro para utilizar os dados iniciais;
[a,b,h,y(1),tol,inte] = dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
k = 1;
x(1) = a; % primeiro valor de x
while k < (kmax+h) % numero de pontos a ser
calculados
x(k+1) = x(k) + h;
%Mtodo do Trapzio pelo Mtodo de Newton
y(k+1) = tnewton(x(k), y(k), x(k+1), h, tol, inte);
k = k+1;
end
figure(1)
plot(x,y,'g') %Grfico da soluo aproximada
grid on
hold
z = exp(-x.*x); %Soluo Exata (Gaussiana)
plot(x,z,'b');
e = abs(z-y); % Erro entre a soluo exata e a
numrica
figure(2)
plot(x,e,'g') % Grfico do erro
dados(p)
% Dados Iniciais:
function [a,b,h,yi,tol,inte] = dados(p)
a ; % Extremo inferior de onde x esta definido;
b ; % Extremo superior de onde x esta definido;
h ; % Passo da malha;
yi ; % Dado inicial do PVI;
tol ; % Tolerncia do erro no Mtodo de Newton;
inte ; % numero de iteraes mximas
Mtodo de Newton
function raiz = tnewton(xn, yn, xnmais1, h, tol, inte)
% Chute inicial para o mtodo de Newton usando o
mtodo de Euler explicito;
yin = yn + h*efe(xn, yn);
yf = yin;
erro = 2*tol;
inti = 1; % Parmetro para o numero de iteraes;
while (abs(erro)>tol) & (inti<inte)% Requisitos para o
Mtodo de Newton (erro e iteraes);
%Mtodo de Newton
yf = yin - ((tfnewton(xn,yf, yn, xnmais1,
h))/tdfnewton(xn,yf, yn, xnmais1, h));
erro = (yf-yin);
yin = yf;
inti = inti + 1;
end
raiz=yf;
Funcao do Metodo de Newton para regra dos
trapzios:
% y_(i+1)-y_(i)=(h/2)*(f((x_(i),y_(i))+f(x_(i+1),y_(i+1))
function saida = tfnewton(xn, z, yn, xnmais1, h)
saida = z - yn - (h/2)*(efe(xn,yn) + efe(xnmais1, z));
Derivada da funcao do metodo de newton na
variavel z:
function saida=tdfnewton(xn,z, yn, xnmais1, h) % z
incgnita
saida = 1 - h*(defe(xn,yn)+defe(xnmais1,z));
Funo do PVI:
function f=efe(x,y)
f ;
Derivada da funo do PVI em relao a y
function df = defe(x,y)
df ;
Com esse mtodo comparamos as solues numricas com a soluo exata do seguinte PVI :
(1.4)
25 , 6 ) 5 , 2 (
2

'



y
xy y
No qual tem como soluo exata: ) exp(
2
x y . Assim foi gerado o seguinte grfico de erro:
O ltimo mtodo estudado para a soluo numrica de PVIs foi o Mtodo de Runge-Kutta de Quarta
Ordem. A vantagem deste mtodo, assim como outros mtodos de Runge-Kutta, que alm de fornecer
uma preciso muito boa so explcitos. Ele est baseado na seguinte frmula de recorrncia:
). 2 2 (
6
1
4 3 2 1 1
k k k k y y
n n
+ + + +
+
onde
). , (
);
2
1
,
2
(
);
2
1
,
2
(
); , (
3 4
2 3
1 2
1
k y h x hf k
k y
h
x hf k
k y
h
x hf k
y x hf k
n n
n n
n n
n n
+ +
+ +
+ +

Esse mtodo tambm foi utilizado na implementao do PVI (1.4). O erro entre a soluo numrica e a
soluo exata pode ser verificado a seguir:
Mostraremos agora o programa do Mtodo de Runge-Kutta:
Programa Principal:
clear; % Apaga os dados anteriores;
clc; % Apaga os comandos da tela;
p=1; % Parmetro para utilizar os dados iniciais;
[a,b,h,y1] = dados(p); % Dados iniciais;
kmax = (b-a)/h; % Malha
k = 1;
x(1) = a; % primeiro valor de x
y(1) = y1; % dado inicial
while k < (kmax+h) % numero de pontos a ser
calculados
x(k+1) = x(k) + h;
%Mtodo de Runge Kutta
y(k+1) = y(k)+(1/6)*(frugen1(x(k),y(k),h) +
2*frugen2(x(k),y(k),h) + 2*frugen3(x(k),y(k),h) +
dados(p)
% Dados Iniciais:
function [a,b,h,yi] = dados(p)
a = -2.5; % Extremo inferior de onde x esta definido;
b = 2.5; % Extremo superior de onde x esta definido;
h = 0.01; % Passo da malha;
yi = exp(-6.25); % Dado inicial do PVI;
frugen4(x(k),y(k),h));
k=k+1;
end
plot(x,y, 'r'); % Grfico da soluo aproximada
hold
z = exp(-x.*x);
erro = abs(z-y);
plot(x,erro,'b') % Grfico do erro
Funo 1:
function f1 = frugen1(x,y,h)
f1 = h*efe(x,y);
Funo 2:
function f2 = frugen2(x,y,h)
f1 = frugen1(x,y,h);
f2 = h*efe(x + (h/2),y + 0.5*f1);
Funo 3:
function f3 = frugen3(x,y,h)
f2 = frugen2(x,y,h);
f3 = h*efe(x + (h/2),y + 0.5*f2);
Funo 4:
function f4 = frugen4(x,y,h)
f3 = frugen3(x,y,h);
f4 = h*efe(x + h,y + f3);

2. Estimativas de Erro e Convergncia do Mtodo de Euler
Por simplicidade decidimos estudar o erro gerado pelo mtodo de Euler Explcito.
Desejamos estimar a grandeza do erro devido ao truncamento
n
e que definido por:
). (
n n n
x y y e ( 2.1 )
Onde ) (
n
x y a verdadeira soluo da equao diferencial em
n
x e
n
y a soluo aproximada
atravs do Mtodo.
Iremos considerar
1
y exato e, portanto 0
1
e .
Admitindo que existam as derivadas apropriadas, podemos expandir
) (
1 + n
x y
para
n
x x
usando o
Teorema de Taylor com resto:
), (
2
) ( ) ( ) (
1
2
1 + +
+ +
n n n n n n n
x x y
h
x y h x y x y ( 2.2 )
A quantidade ) (
2
2
n
y
h
denominada o erro de truncamento local, o erro cometido na nica etapa
de
n
x para
1 + n
x , admitindo que
y
e y
sejam conhecidos,exatamente em
n
x x .
Haver tambm um erro de arredondamento ao ser calculado
1 + n
y
atravs do computador, usando a
frmula:
). , (
1 n n n n
y x hf y y +
+
( 2.3 )
Subtraindo ( 2.3 ) de ( 2.2 ) e usando ( 2.1 ), temos:
). (
2

))] ( , ( ) , ( [
2
1
n
n n n n n n
y
h
x y x f y x f h e e

+ +
+
( 2.4 )
Pelo Teorema do Valor Mdio existe ) ), ( (
n n n
y x y y , tal que
. ) , (
)) ( ( ) , ( )) ( , ( ) , (
n n n y
n n n n y n n n n
e y x f
x y y y x f x y x f y x f


Onde segue de ( 2.4 ):
). (
2
) , (
2
1 n n n n y n n
y
h
e y x f h e e +
+
Vamos supor que ao longo do intervalo
) ), ( (
n n
y x y
temos:
L (x,y f
y
< )
e
, K y <

onde
L
e
K
so constantes positivas.
Assim temos,
.
2
) 1 (
2
2 2
1
K
h
e L h K
h
e L h e e
n n n n
+ + + +
+
( 2.5 )
Mostraremos agora, por induo, que a soluo da equao diferena:
,
2
) 1 (
2
1
K
h
L h
n n
+ +
+
( 2.4 )
com 0
1
supera a soluo ; ou seja
.
n n
e
Note que, para 1 n temos
. 0
1 1
e
Seja

n n
e
. Temos ento
,
2
) 1 (
2
) 1 (
1
2 2
1 + +
+ + + +
n n n n
K
h
L h K
h
e L h e
em resumo

1 1 + +

n n
e
.
Temos que
.
2
) 1 (
2
) 1 (
2
1
2
1
K
h
L h K
h
L h
n n n n
+ + +
+ +

Pela teoria das equaes diferenas (CONTE, 1977), temos que a soluo da equao anterior ser:
.
2
) 1 (
2 L
K h
L h
L
K h
n
n
+ ( 2.7 )
Do clculo diferencial bsico sabemos da aproximao de Mac-Laurin que
...
! 3 ! 2
1 ) exp(
3 2
L h L h
L h L h + + +
Segue-se, portanto, que ) exp( 1 L h L h + e, tambm, que ) exp( ) 1 ( L h n L h
n
+ .Usando esta
expresso em ( 2.7 ) conclumos que
], 1 ) ) [exp((
2
] 1 ) [exp(
2
1 1

+
L x x
L
K h
L h n
L
K h
n n

onde usamos a igualdade


1 1
x x h n
n

+
. Uma vez que
n n
e
provamos o seguinte teorema.
Teorema 2.1: Seja
n
y a soluo aproximada de (1.1) gerada pelo Mtodo de Euler Explcito. Se a
soluo exata ) (x y de (1.1) possui uma derivada de segunda ordem contnua no intervalo
] , [
1 1 + n
x x
, e
se neste intervalo as desigualdades
L (x,y f
y
< )
e
K x y < ) (
forem satisfeitas para constantes positivas
L
e
K
limitadas, ento o erro ) (
n n n
x y y e limitado
como segue:
] 1 ) ) [exp((
2

1 1

+
L x x
L
K h
e
n n
.

3. PROBLEMAS DE VALORES DE CONTORNO EM EQUAES ORDINRIAS
Agora apresentaremos um mtodo para obter a soluo aproximada do problema de valor de contorno
(PVC) a seguir:
3.1) ( ,
) ( ) (
) ( ) (
) ( ) ( ) ( ) ( ) (
2 1
2 1

'

+
+
+ +
d b y b b y b
c a y a a y a
x q y x g x y x f x y
onde
] , [ b a
o intervalo que est definida a varivel independente do problema,
1
a ,
2
a ,
1
b ,
2
b , c ,
d so constantes e
) (x f
,
) (x g
,
) (x q
so funes de
x
contnuas no intervalo
] , [ b a

satisfazendo com
0 ) ( < < x g
em
] , [ b a
.
Para discretizar o PVC (3.1) usamos o mtodo das diferenas finitas centradas para aproximar as
derivadas no interior do domnio, diferenas progressivas no contorno inferior e diferenas regressivas no
contorno superior usando uma malha uniforme com N+1 pontos e passo h > 0 satisfazendo a condio de
estabilidade
1 ) (
2
x f
h
em
] , [ b a
.
Assim, no interior da malha temos que a equao ) ( ) ( ) ( ) ( ) ( x q y x g x y x f x y + +
tem a
seguinte discretizao:
) ( ) (
2
) )( ( 2
1 1
2 1
2
1 2
n n n
n n n n n n
x q y x g
h
y y x f
h
y y y
+

+
+
+ +
+ + + +
, com
1 ,..., 1 N n
.
Ou seja,
1
2
2 1 1 1
2
1
)) (
2
1 ( )) ( 2 ( )) (
2
1 (
+ + + + + +
+ + + +
n n n n n n n
q h y x f
h
y x g h y x f
h
, com
1 ,..., 1 N n
.
Usando as frmulas progressivas no extremo a e regressivas no extremo b as condies de
contorno em ( 3.1 ) tm as seguintes discretizaes:
. ) (
; ) (
2 1 2 1
2 2 1 2 1
d h y b y b b h
c h y a y a a h
N N
+
+
+
Mostraremos agora o programa implementado para calcular numericamente a soluo do PVC:
Mtodo das diferenas finitas para PVC ( 3.1 ):
Programa Principal
clear
clc
p=1; % parametro de entrada dos dados
[a,b,a1,a2,b1,b2,h,N,c,d] = dadosPSL(p); %dados
x = [a:h:b]; % Malha
%Construo da matriz dos coeficientes do sistema
Ay=B
A = zeros(N+1,N+1);
dadosPSL(p)
%Dados Iniciais:
function [a,b,a1,a2,b1,b2,h,N,c,d] = dados(p)
%Todos os dados devem ser fornecidos e
representam valores de sada.
a ; % Extremo Inferior do intervalo [a,b]
b ; % Extremo Superior do intervalo [a,b]
a1 ;%Coeficiente da condio esquerda
a2 ;%Coeficiente da condio esquerda
A(1,1) = h*a1-a2;
A(1,2) =a2;
for i = 2:N
A(i,i-1) = 1 - (h/2)*f(x(i+1));
A(i,i) = -2 + (h^2)*g(x(i+1));
A(i,i+1) = 1 + (h/2)*f(x(i+1));
end
A(N+1,N) = -b2;
A(N+1,N+1) = h*b1+b2;
%construo da matriz dos termos independentes
B = zeros(N+1,1);
B(1,1) = c*h;
for i = 2:N
B(i,1) = (h^2)*q(x(i+1));
end
B(N+1,1) = d*h;
% Soluo do Sistema Ay=B
y = A\B; % Resoluo no interior da malha (y=A^(-
1)*B)
b1 ; %Coeficiente da condio direita
b2 ; %Coeficiente da condio direita
c ; % condio de contorno inferior
d ;% condio de contorno superior
h ; % Passo da malha
N = floor((b-a)/h); % Nmero de pontos
h = (b-a)/N; % Passo da malha recalculado
Funo f:
function f=f(x)
f ;
Funo g:
function g=g(x)
g;
function q=q(x)
q ;
O esquema numrico est ilustrado para os dois exemplos a seguir.
Exemplo 1:
) 3.2 (
) 25 exp( 9 ) 5 ( ) 5 (
) 25 exp( 11 ) 5 ( ) 5 (
) exp( 4 2 2
2

'

+
+
+
y y
y y
x y y x y
cuja soluo exata ) exp(
2
x y .
Testamos o mtodo das diferenas finitas para PVC ( 3.2 ) no intervalo
] 5 , 5 [
, com passo
01 , 0 h
,
1
1
a , 1
2
a , 1
1
b , 1
2
b ,
) 25 exp( 11 c
e
) 25 exp( 9 d
:
O grfico da soluo numrica est exibido a seguir:
Exemplo2:
) 3.3 ( .

3
13
cos
3
13
exp
3
13
exp
3
13
exp
2
1
6
13
6
13

6
cos
3
exp
3
exp
2
1
6 6
) cos( ) 2 exp( ) 4 ( ) ( sen ) 2 exp( ) 2 3 (
2 2

'

,
_

,
_

+
,
_

+
,
_


,
_

+
,
_

,
_

,
_

+
,
_


,
_

+
,
_

+


y y
y y
x x x x x x x y x y x y
cuja soluo exata
) ( sen ) 2 exp( x x y
.
Neste caso executamos o mtodo das diferenas finitas para o PVC ( 3.3 ) no intervalo ]
6
13
,
6
[

,
com passo
001 , 0 h
, 1
1
a , 1
2
a , 1
1
b , 1
2
b e com

,
_

,
_

+
,
_

6
cos
3
exp
3
exp
2
1
c e
,
_

,
_

+
,
_

+
,
_

3
13
cos
3
13
exp
3
13
exp
3
13
exp
2
1
d
Cujo o grfico da soluo numrica est exibido a seguir :
CONCLUSES
Diante dos resultados obtidos neste trabalho conclumos que:
O melhor mtodo numrico em termos de preciso, para o clculo de solues aproximadas de
PVIs foi o mtodo de Runge-Kutta;
No Mtodo de Euler Explcito conseguimos estabelecer a convergncia do mtodo, fornecendo um
limite superior para o erro.
No Mtodo das Diferenas Finitas para PVC o mtodo implementado usando diferenas centradas
no interior da malha e diferenas progressivas e regressivas no contorno proporcionou resultados
numricos com tima concordncia com as solues analticas.
AGRADECIMENTOS
Ao CNPq pela bolsa de Iniciao Cientfica atravs do Proc. 504274/2007-4.
.
REFERNCIAS BIBLIOGRFICAS
CONTE, S.D. Elementos de Anlise Matemtica, 3 Edio. Editora Globo, 1977. p. 244-317.
CUMINATO, J.A.; MENEGUETTE, M.J. DISCRETIZACO DE EQUAES DIFERENCIAIS PARCIAIS:
Tcnicas de Diferenas Finitas. Disponvel em: <http://www.icmc.usp.br/~jacumina/> Acesso em: 27
jul. 2009.
MATSUMOTO, E.Y. MATLAB6: FUNDAMENTOS DE PROGRAMAO. So Paulo, Editora rica, 2001.

Você também pode gostar