Escolar Documentos
Profissional Documentos
Cultura Documentos
'
) 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
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
'
+
+
+ +
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.