You are on page 1of 22

Resolu ca o Num erica de Equa co es Diferenciais Ordin arias

Diogo Pinheiro Fernandes Pedrosa


Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Engenharia de Computa ca o e Automa ca o http://www.dca.ufrn.br/

Introdu c ao

Uma Equa ca o Diferencial e uma equa ca o que envolve derivadas de uma ou mais fun co es. Elas servem para descrever o comportamento de sistemas din amicos e possuem enorme aplica ca o em a reas como engenharia (comportamento de um circuito el etrico ou do movimento oscilat orio de estruturas), biologia (crescimento de popula co es de bact erias) ou economia (aplica co es nanceiras). Elas s ao classicadas de acordo com o seu tipo, ordem e grau. Se uma equa ca o diferencial envolve derivadas de uma fun ca o de uma u nica vari avel independente, ela e dita ser Equa ca o Diferencial Ordin aria. Caso a equa ca o diferencial envolva as derivadas parciais de uma fun ca o de duas ou mais vari aveis independentes, ela e uma Equa ca o Diferencial Parcial. Uma equa ca o diferencial ordin aria (ou E.D.O.) de ordem n pode ser expressa na seguinte forma: dn y dy d2 y dn1 y (1) = G x, y, , , . . . , dx2 dx dx2 dxn1
d y , com onde x e a vari avel independente, y e uma fun ca o desta vari avel independente e d xk k = 1, 2, . . . , n s ao as derivadas de y em rela ca o a x. O problema a ser tratado em Equa co es Diferenciais Ordin arias consiste em encontrar uma fun ca o y (ou solu ca o) que satisfa ca a equa ca o 1. Esta solu ca o e uma fun ca o que n ao possui derivadas nem diferenciais e ela pode ser uma solu ca o geral ou particular. Uma solu ca o geral de uma E.D.O. de ordem n e uma solu ca o contendo n constantes de integra ca o independentes e arbitr arias, como:
k

f (y ) = f (x) + c1 + c2 + . . . + cn Uma solu ca o particular e obtida a partir da solu ca o geral, dando-se valores espec cos a `s constantes. Freq u entemente s ao dadas as seguintes condi co es que permitem encontrar os valores das constantes obtidas pelas integra co es: y (x0 ) = y0 y (x1 ) = y1 y (x2 ) = y2 . . . (n1) y (xn1 ) = yn1

M etodos Computacionais em Engenharia (DCA0304)

onde y0 e um n umero dado. Os problemas de valor inicial (P.V.I.s) de ordem superior podem ser reduzidos a sistemas de primeira ordem atrav es de vari aveis auxiliares, o que permite a utiliza ca o dos m etodos num ericos aqui apresentados. Para resolver numericamente uma E.D.O. com P.V.I. (equa ca o 2), sup oem-se que ela satisfaz a `s condi co es de exist encia e unicidade. Esta solu ca o num erica ser a encontrada para um conjunto nito de pontos (um intervalo fechado [a, b]) no eixo das abscissas. Tomando-se m subintervalos deste intervalo [a, b], sendo m 1, e poss vel determinar m + 1 pontos onde as solu co es num ericas devem ser calculadas. Estes pontos xj [a, b] s ao igualmente espa cados entre si por um fator h, onde xj = x0 + j h, sendo que x0 = a, xm = b, h = (b a)/m e j = 0, 1, 2, . . . , m. O conjunto {x0 , x1 , x2 , . . . , xm } obtido denomina-se rede ou malha de [a, b]. A solu ca o num erica e uma fun ca o linear por partes, ou seja, e aplicada a cada subintervalo, cujo gr aco apresenta-se como uma poligonal com v ertices nos pontos (xj , yj ), sendo que yj e calculado por algum m etodo a ser apresentado. Embora existam m etodos que apresentem uma boa precis ao, os m etodos num ericos sempre apresentar ao erros quando comparados com as solu co es exatas obtidas de uma solu ca o anal tica. A gura 1 ilustra como os erros afetam uma solu ca o num erica. Para facilitar a interpreta ca o dos m etodos, convenciona-se a seguinte nota ca o: y (xj ) e a solu ca o exata do P.V.I., obtida analiticamente; yj e a solu ca o num erica. H a tr es m etodos principais que ser ao vistos na seguinte seq u encia: 1. M etodo de Euler; 2. M etodos de Runge-Kutta; e 3. M etodos de Adams-Bashforth.

Nestes casos, se x0 = x1 = x2 = = xn1 ent ao o problema e dito ser de valor inicial. Caso contr ario, o problema e de valor de contorno. De uma maneira geral, a busca de uma solu ca o para uma equa ca o diferencial ordin aria com problema de valor inicial apresenta alguns problemas. Primeiro porque constata-se que os procedimentos para a busca de uma solu ca o anal tica n ao e trivial. O segundo problema e que, al em disso, muitas quest oes pr aticas n ao possuem solu ca o conhecida. Por m, em muitos casos os coecientes ou as fun co es existentes na equa ca o diferencial s ao dados somente na forma de um conjunto tabelado de informa co es experimentais, o que torna imposs vel o uso de um procedimento anal tico para determinar a solu ca o da equa ca o. Por isso h a a necessidade do uso de m etodos num ericos para equa co es diferenciais ordin arias. Ser ao tratados aqui m etodos num ericos para se conseguir os valores de y (x) em pontos iniciais, ou seja, problemas de valor inicial. Tais problemas ser ao abordados em sua forma mais simples que s ao as equa co es diferenciais ordin arias de primeira ordem: dy = f (x, y ) (2) dx y (x0 ) = y0

M etodos Computacionais em Engenharia (DCA0304)

Soluo exata

Soluo aproximada

y (x0 ) = y0

x0

x1

x2

xm

Figura 1: Compara ca o ilustrativa entre uma solu ca o exata e uma aproximada de uma Equa ca o Diferencial Ordin aria

1.1

S erie de Taylor de Fun c ao de uma Vari avel

Uma fun ca o f a uma vari avel x, cont nua e indenidademente deriv avel e aproximada em torno do ponto x = a, pode ser representada por uma s erie de pot encias da forma: f (x) = f (a) + f (a) (x a) (x a)2 (x a)n + f (a) + . . . + f (n) (a) +... 1! 2! n!

Nas aplica co es pr aticas da S erie de Taylor, onde se utiliza m etodos num ericos, n ao e poss vel computar todos os seus termos. O que se faz, ent ao, e considerar apenas um n umero nito deles, truncando a s erie ap os o n- esimo termo. Assim: (x a) (x a) (x a) + f (a) + . . . + f (n1) (a) + Rn (x) f (x) = f (a) + f (a) 1! 2! (n 1)! onde Rn (x) e o erro de truncamento que pode ser expressado da seguinte forma: Rn (x) = f (n) ( ) com a < < x. (x a)n n!
2 n1

M etodo de Euler

Seja uma Equa ca o Diferencial Ordin aria com Problema de Valor Inicial dada pela equa ca o 2. O que se deseja e encontrar as aproxima co es y1 , y2 , . . ., ym para as solu co es exatas y (x1 ), y (x2 ), . . ., y (xm ). Sendo que o ponto inicial (x0 , y0 ) e fornecido pelo problema, o primeiro passo ent ao e a busca de y1 . Para isto, aproximando-se a solu ca o y (x) por uma S erie de Taylor no ponto x = x0 e truncando no segundo termo, tem-se: y (x) = y (x0 ) + y (x0 ) (x x0 )

M etodos Computacionais em Engenharia (DCA0304)

Para x = x1 tem-se: y (x1 ) = y (x0 ) + (x1 x0 ) y (x0 ) Lembrando que, como os valores exatos y (xj ) s ao desconhecidos, s ao utilizados os valores aproximados yj e que x1 x0 = h e y (x0 ) = f (x0 , y0 ), onde h e a dist ancia entre os pontos xj , ent ao: y1 = y0 + h f (x0 , y0 ) Para encontrar y2 na abscissa x = x2 adota-se o mesmo procedimento. Assim, a solu ca o aproximada e: y2 = y1 + h f (x1 , y1 ) Como e poss vel vericar, pode-se aplicar a formula ca o de Taylor para todos os pontos dos subintervalos, o que permite denir uma regra geral para o M etodo de Euler: yj +1 = yj + h f (xj , yj ) com j = 0, 1, 2, . . . , m 1. Exemplo 1 Achar a solu ca o num erica para: y =xy+2 y (0) = 2 na malha de [0, 1] com h = 0.1. Como e uma equa ca o diferencial ordin aria com problema de valor inicial ent ao, pelas condi co es iniciais dadas: x0 = 0 e y0 = 2. Sendo o intervalo [0, 1] e o espa camento igual a 0.1, ent ao a quantidade de subintervalos na malha e: m= o que implica em j = 0, 1, 2, . . . , 9. Assim, para j = 0 tem-se: y1 = y0 + h f (x0 , y0 ) sabido que y = f (x, y ) = x y + 2. Assim: E y1 = y0 + h (x0 y0 + 2) Substituindo os valores tem-se: y1 = 2 + 0.1 (0 2 + 2) = 2 Para j = 1, calcula-se primeiramente o x1 : xj = x 0 + j h x1 = 0 + 1 0.1 x1 = 0.1 ba 10 = = 10 h 0.1

M etodos Computacionais em Engenharia (DCA0304)

para, em seguida, encontrar a aproxima ca o y2 : y2 = y1 + h (x1 y1 + 2) y2 = 2 + 0.1 (0.1 2 + 2) y2 = 2.01 Os c alculos prosseguem com este mesmo procedimento at e j = 9. Como o trabalho apresenta-se longo e rotineiro, torna-se vi avel a elabora ca o de um programa computacional para resolv e-lo. Assim, a listagem mostrada no ap endice A.1 apresenta o programa de resolu ca o deste exemplo implementado em linguagem C. O resultado apresentado por este programa foi: Digite o valor do x inicial: 0 Digite o valor do y inicial: 2 Digite o valor do espacamento h: 0.1 Digite o n umero de subintervalos m: 10 Os valores de x e y sao: 0.000000, 2.000000; 0.100000, 2.000000; 0.200000, 2.010000; 0.300000, 2.029000; 0.400000, 2.056100; 0.500000, 2.090490; 0.600000, 2.131441; 0.700000, 2.178297; 0.800000, 2.230467; 0.900000, 2.287421; 1.000000, 2.348679; A solu ca o anal tica para esse problema e y (x) = ex + x + 1. Para visualizar o seu comportamento pode-se utilizar o Scilab. Assim, dendo-se a malha do intervalo [a, b]: --> x = [0:0.1:1]; e calculando-se o valor exato de y (x) por: -->for i=1:11, y(i) = exp(-x(i))+x(i)+1; end; uma vez que ser ao encontrados m + 1 pontos, o resultado obtido e: -->y y = ! ! ! ! 2. 2.0048374 2.0187308 2.0408182 ! ! ! !

M etodos Computacionais em Engenharia (DCA0304)

! ! ! ! ! ! !

2.07032 2.1065307 2.1488116 2.1965853 2.249329 2.3065697 2.3678794

! ! ! ! ! ! !

e, por m, para contruir o gr aco no Scilab basta digitar na linha de comando: -->plot2d(x,y) A gura 2 mostra uma compara ca o gr aca entre o resultado num erico obtido pelo m etodo de Euler (atrav es do programa escrito em C) e o resultado anal tico (calculado no Scilab).
2.4

2.3

2.2

y
2.1

2.0

1.9 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

x Figura 2: Compara ca o entre o resultado anal tico (linha tracejada) e o M etodo de Euler (linha s olida). Embora seja simples, o M etodo de Euler tem o problema de apresentar erros, uma vez que as aproxima co es para o valor exato y (xj ) s ao dependentes de aproxima co es anteriores. De certa forma, e poss vel ter uma id eia deste erro. Como foi utilizado a S erie de Taylor para deduzir o M etodo de Euler, ent ao o erro de truncamento e dado por: ej +1 = R2 (xj ) = y ( ) h2 2!

com xj < < xj +1 . Este erro e chamado de erro local de truncamento. Nota-se que ele depende do espa camento h.

M etodos Computacionais em Engenharia (DCA0304)

Dessa forma, pode-se armar que o M etodo de Euler sofre com o erro local de truncamento citado e pelo fator de propaga ca o deste erro, uma vez que as aproxima co es, em cada itera ca o, dependem dos valores das aproxima co es calculadas anteriormente. Uma maneira de reduzir estes erros e diminuir o valor do espa camento h, por em, dependendo da aplica ca o, isto aumentaria o esfor co computacional. Outra alternativa e utilizar a seguinte regra para o M etodo de Euler: yj +1 = yj + h (xj , yj , h) com j = 0, 1, 2, . . . , m 1. Esta regra diz que no lugar da fun ca o y = f (x, y ) deve-se utilizar uma outra fun ca o (x, y, h) que envolva tamb em o espa camento h. Como a S erie de Taylor foi utilizada para denir o M etodo de Euler ent ao, para encontrar esta fun ca o (), basta apenas expressar a aproxima ca o yj +1 utilizando tr es termos da S erie. Isto resulta na seguinte f ormula: yj +1 = yj + h y (xj ) + Sendo y (xj ) = f (xj , yj ), ent ao: y (xj ) = f (xj , yj ) + f (xj , yj ) f (xj , yj ) x y h2 y (xj ) 2

Para encontrar a solu ca o basta aplicar o m etodo normalmente utilizando esta f ormula apresentada. Resolvendo o exemplo anterior por este m etodo, tem-se como resultado: Digite o valor do x inicial: 0 Digite o valor do y inicial: 2 Digite o valor do espacamento h: 0.1 Digite o n umero de subintervalos m: 10 Os valores de x e y sao: 0.000000, 2.000000; 0.100000, 2.005000; 0.200000, 2.019025; 0.300000, 2.041218; 0.400000, 2.070802; 0.500000, 2.107076; 0.600000, 2.149403; 0.700000, 2.197210; 0.800000, 2.249975; 0.900000, 2.307227; 1.000000, 2.368541; cujo gr aco, comparado com o resultado anal tico, e apresentado na gura 3. Percebese que, para esta metodologia, o gr aco do m etodo num erico sobrep oe-se ao gr aco do m etodo anal tico.

M etodos Computacionais em Engenharia (DCA0304)


2.4

2.3

2.2

y
2.1

2.0

1.9 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

x Figura 3: Compara ca o entre o resultado anal tico (linha tracejada) e o M etodo de Euler denido pela S erie de Taylor com tr es termos (linha s olida). A grande desvantagem e que em aplica co es pr aticas n ao h a o conhecimento da forma anal tica de f (x, y ). Assim, n ao e poss vel utilizar derivadas de ordem mais elevada nem estimar o erro local de truncamento para tais casos. A op ca o ent ao e utilizar m etodos que tenham uma boa precis ao mas que n ao necessite das derivadas de ordem superior. A pr oxima se ca o apresentar a estes m etodos.

M etodos de Runge-Kutta

com j = 0, 1, 2, . . . , m 1. Este m etodo e chamado de Euler Melhorado. O segundo

Mesmo utilizando recursos para diminuir o erro, o M etodo de Euler n ao e utilizado na pr atica. Em seu lugar aplica-se recursos que possuem uma precis ao satisfat oria e dispensem as derivadas de ordem superior de f (x, y ). Estes recursos s ao chamados de M etodos de Runge-Kutta. H a v arios m etodos que s ao diferenciados por sua ordem. O mais simples e o RungeKutta de primeira ordem que concorda com o m etodo de Euler, ou seja, e o pr oprio m etodo de Euler. H a tamb em os M etodos de Runge-Kutta de segunda ordem. Eles podem assumir diferentes formatos. Os dois principais s ao: (K1 + K2 ) yj +1 = yj + h 2 K1 = f (xj , yj ) K2 = f (xj + h, yj + h K1 )

M etodos Computacionais em Engenharia (DCA0304)

m etodo e:

tamb em com j = 0, 1, 2, . . . , m 1, mas e chamado de Euler Modicado. O modo como estas f ormulas foram obtidas encontra-se no livro texto [1]. Os m etodos de Runge-Kutta de segunda ordem possuem erro local de truncamento igual a: h3 y ( ) ej = 3! sendo xj 1 < < xj . Nota-se que este erro e menor que o apresentado pelo M etodo de Euler mais simples e igual ao erro que o m etodo de Euler possui se for utilizado a f ormula obtida pela S erie de Taylor at e o terceiro termo. Dentre os m etodos de Runge-Kutta, o mais popular e o de 4a ordem, que e bastante difundido nas rotinas de c alculo computacional [1]. A sua formula ca o geral e: (K1 + 2K2 + 2K3 + K4 ) yj +1 = yj + h 6 K1 = f (xj , yj ) K2 = f (xj + h , yj + h K ) 2 2 1 h h , y + K ) K = f ( x + j j 2 2 2 3 K4 = f (xj + h, yj + h K3 ) com erro local de truncamento igual a: ej = e xj 1 < < xj . Exemplo 2 Resolver o exemplo anterior utilizando o M etodo de Runge-Kutta de quarta ordem. O exemplo anterior diz que a equa ca o diferencial ordin aria com problema de valor inicial e dada por: y =xy+2 y (0) = 2 na malha de [0, 1] com h = 0.1. Destas informa co es, e poss vel identicar que x0 = 0, y0 = 2 e que a quantidade de subintervalos e igual a 10. Assim, o ndice j varia de 0 at e 9. Para j = 0: K1 = = = = f (x0 , y0 ) x0 y 0 + 2 02+2 0 h5 (v) y ( ) 5!

yj +1 = yj + h K2 K1 = f (xj , yj ) K2 = f (xj + h , yj + 2

h 2

K1 )

M etodos Computacionais em Engenharia (DCA0304)

10

h h K2 = f (x0 + , y0 + K1 ) 2 2 0.1 0.1 ,2+ 0) = f (0 + 2 2 = f (0.05, 2) = 0.05 2 + 2 = 0.05 h h K3 = f (x0 + , y0 + K2 ) 2 2 0.1 0.1 ,2+ 0.05) = f (0 + 2 2 = f (0.05, 2.0025) = 0.05 2.0025 + 2 = 0.0475

K4 = = = = = O valor da aproxima ca o e: y1 = y 0 +

f (x0 + h, y0 + h K3 ) f (0 + 0.1, 2 + 0.1 0.0475) f (0.1, 2.00475) 0.1 2.00475 + 2 0.09525

h (K1 + 2K2 + 2K 3 + K4 ) 6 0.1 = 2+ (0 + 2 0.05 + 2 0.0475 + 0.09525) 6 = 2.0048375

Este procedimento deve ser repetido at e que j = 9. Como e um procedimento cansativo para se fazer manualmente, ent ao ser a utilizado o programa escrito em C, que foi aplicado para este mesmo exemplo por em com o M etodo de Euler, com algumas modica co es. Estas mudan cas podem ser vistas no ap endice A.2. Os resultados apresentados foram: Os valores de x e y sao: 0.000000, 2.000000; 0.100000, 2.004838; 0.200000, 2.018731; 0.300000, 2.040818; 0.400000, 2.070320; 0.500000, 2.106531; 0.600000, 2.148812; 0.700000, 2.196585; 0.800000, 2.249329; 0.900000, 2.306570; 1.000000, 2.367880;

M etodos Computacionais em Engenharia (DCA0304)

11

Se comparada com o resultado anal tico v e-se que o resultado e bastante satisfat orio. Na gura 4 as curvas das solu co es exata e num erica se sobrep oem.
2.4

2.3

2.2

y
2.1

2.0

1.9 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

x Figura 4: Compara ca o dos resultados obtidos analiticamente (linha tracejada) e da solu ca o a num erica por Runge-Kutta de 4 ordem (linha s olida).

M etodos de Adams-Bashforth

Os m etodos de Adams-Bashforth s ao baseados em integra ca o num erica. Eles fazem parte dos m etodos de passo m ultiplo, ou seja, s ao m etodos que precisam de mais de um valor calculado anteriormente para determinar a aproxima ca o yj +1 (diferentemente dos M etodos de Euler e Runge-Kutta, que precisam somente de um valor calculado anteriormente). Um m etodo e dito ser de passo k se ele precisar de k resultados anteriores. Por deni ca o, uma solu ca o exata de uma E.D.O. de primeira ordem com problema de valor inicial e: x+q y (x + q ) = y (x) +
x

f (, y ( )) d

para quaisquer pontos x e x + q no intervalo [a, b]. O termo e uma vari avel de integra ca o. Os m etodos de Adams-Bashforth baseiam-se na id eia de substituir a fun ca o f (x, y (x)), que e desconhecida, por um polin omio interpolador que assuma valores fj = f (xj , yj ) num conjunto de pontos xj , onde yj j a foi obtido ou est a sendo calculado. Assim, calcula-se a sua integral e aceita-se o seu valor como incremento para calcular yj +1 , atrav es de:
xj +1

yj +1 = yj +
xj

f (x, y ) dx

(3)

M etodos Computacionais em Engenharia (DCA0304)

12

4.1

Adams-Bashforth de Passo Dois

Por ser de passo dois, este m etodo necessita de dois valores calculados anteriormente. Sendo uma Equa ca o Diferencial Ordin aria (E.D.O.) com Problema de Valor Inicial (P.V.I.), tem-se o valor do primeiro ponto (x0 , y0 ). Atrav es de algum m etodo de passo simples, calcula-se a aproxima ca o y1 , obtendo o segundo ponto (x1 , y1 ). Tendo agora estes dois valores, e poss vel utilizar o M etodo de passo dois para encontrar y2 . Assim, utilizando a equa ca o 3:
x2

y2 = y 1 +
x1

f (x, y ) dx

(4)

Como os valores f (x0 , y0 ) = f0 e f (x1 , y1 ) = f1 s ao conhecidos ent ao pode-se aproximar a fun ca o f (x, y ) pelo polin omio interpolador de primeiro grau P1 (x). Desse modo: P1 (x) = b0 p0 (x) + b1 p1 (x) onde: p0 (x) = x x1 p1 (x) = x x0 f0 b0 = x0 x 1 f1 b1 = x1 x 0 Substituindo este polin omio na equa ca o 4 e lembrando que x1 x0 = h, ent ao: y2 = y 1 f0 h
x2

p0 (x) dx +
x1

f1 h

x2

p1 (x) dx
x1

Integrando esta equa ca o e rearranjando os termos, o resultado ca: y2 = y 1 + h (3f1 f0 ) 2

Para calcular y3 adota-se o mesmo procedimento, por em lembrando que somente devem ser utilizados os pontos (x1 , y1 ) e (x2 , y2 ): y3 = y 2 + h (3f2 f1 ) 2

Como este procedimento tamb em e utilizado para j = 3, 4, . . . , m 1, ent ao pode-se utilizar a seguinte regra: h yj +1 = yj + (3fj fj 1 ) 2 com j = 1, 2, 3, . . . , m 1. Salienta-se ainda que y1 deve ser calculado por Euler ou Runge-Kutta.

M etodos Computacionais em Engenharia (DCA0304)

13

4.2

Adams-Bashforth de Passo Quatro

Tem os mesmos princ pios do m etodo de passo dois, por em utiliza quatro pontos previamente calculados: (x0 , y0 ), (x1 , y1 ), (x2 , y2 ) e (x3 , y3 ). Por utilizar estes quatro pontos, o polin omio interpolador deve ser de terceiro grau. Assim:
xj +1

yj +1 = yj +
xj

P3 (x) dx

com: P3 (x) = b0 p0 (x) + b1 p1 (x) + b2 p2 (x) + b3 p3 (x) que integrando resulta em: h (55fj 59fj 1 + 37fj 2 9fj 3 ) 24 sendo j = 3, 4, 5, . . . , m 1. Os termos y1 , y2 e y3 devem ser calculados por m etodos de passo simples ou por Adams-Bashforth de passo dois. yj +1 = yj +

4.3

M etodo de Adams-Bashforth-Moulton de Passo Quatro

Este m etodo tamb em e chamado de Preditor-Corretor. Neste caso tem-se cinco pontos conhecidos mas apenas quatro s ao utilizados: (x1 , y1 ), (x2 , y2 ), (x3 , y3 ) e (x4 , y4 ). O que se deseja ent ao e melhorar a precis ao da aproxima ca o y4 . Assim, utilizando-se um polin omio interpolador de terceira ordem para aproximar a fun ca o f (x, y ), tem-se:
x4

y4 = y 3 +
x3

P3 (x) dx

h (9f4 + 19f3 5f2 + f1 ) (5) 24 poss E vel perceber uma incoer encia nesta equa ca o pois para calcular a aproxima ca o y4 necessita-se de f4 = f (x4 , y4 ), que tamb em necessita de y4 . Este problema pode ser contornado se a equa ca o 5 for usada apenas para corre ca o, enquanto o valor de y 4 foi obtido atrav es de uma predi ca o. Portanto, e poss vel adotar a seguinte nota ca o: y4 = y 3 +
C y4 = y3 +

cujo resultado e:

h P (9f4 + 19f3 5f2 + f1 ) 24

P P sendo f4 = f (x4 , y4 ). Este valor predito pode ser obtido por Adams-Bashforth de passo quatro: h P (55f3 59f2 + 37f1 9f0 ) y4 = y3 + 24 Escrevendo de uma forma generalista: P yj +1 = yj +

fjP +1
C yj +1

h (55fj 59fj 1 + 37fj 2 9fj 3 ) 24 P = f (xj +1 , yj +1 ) h (9fjP = yj + +1 + 19fj 5fj 1 + fj 2 ) 24

com j = 3, 4, . . . , m 1. Para resolver um problema de valor inicial com o par Preditor-Corretor tem-se que seguir tr es fases:

M etodos Computacionais em Engenharia (DCA0304)

14

1. Calculam-se y1 , y2 e y3 por um m etodo de passo simples de quarta ordem;


P 2. Calcula-se o valor predito y4 ;

3. Corrige-se este valor predito:


P (a) Calcula-se f4 ; C (b) Calcula-se y4 ; P P C (c) Atualiza-se y4 , isto e, y4 y4 ; P (d) Calcula-se novamente f4 com o valor atualizado; C (e) Calcula-se novamente y4 com o valor atualizado.

A aproxima ca o y4 ser a este u ltimo valor calculado. Para as aproxima co es seguintes (y5 , y6 , . . . , ym ) deve-se utilizar os mesmos procedimentos das fases 2 e 3. Exemplo 3 Obter as aproxima co es para a equa ca o diferencial ordin aria com problema de valor inicial: y (x) = x 2xy 1 x2 y (1) = 0 O m umero de subintervalos a ser calculado e: m= 21 = 100 0.01

na malha de [1, 2] com espa camento igual a 0.01.

Dessa forma, utilizando o programa listado no ap endice A.3, tem-se as seguintes aproxima co es: 1.000000, 1.010000, 1.020000, 1.030000, 1.040000, 1.050000, 1.060000, 1.070000, 1.080000, 1.090000, 1.100000, 1.110000, 1.120000, 1.130000, 1.140000, 1.150000, 1.160000, 1.170000, 1.180000, 1.190000, 0.000000; 0.000049; 0.000192; 0.000424; 0.000740; 0.001134; 0.001602; 0.002140; 0.002743; 0.003409; 0.004132; 0.004910; 0.005740; 0.006618; 0.007541; 0.008507; 0.009512; 0.010556; 0.011635; 0.012746;

M etodos Computacionais em Engenharia (DCA0304)

15

1.200000, 1.210000, 1.220000, 1.230000, 1.240000, 1.250000, 1.260000, 1.270000, 1.280000, 1.290000, 1.300000, 1.310000, 1.320000, 1.330000, 1.340000, 1.350000, 1.360000, 1.370000, 1.380000, 1.390000, 1.400000, 1.410000, 1.420000, 1.430000, 1.440000, 1.450000, 1.460000, 1.470000, 1.480000, 1.490000, 1.500000, 1.510000, 1.520000, 1.529999, 1.539999, 1.549999, 1.559999, 1.569999, 1.579999, 1.589999, 1.599999, 1.609999, 1.619999, 1.629999, 1.639999, 1.649999, 1.659999, 1.669999,

0.013889; 0.015060; 0.016259; 0.017483; 0.018730; 0.020000; 0.021290; 0.022599; 0.023926; 0.025269; 0.026627; 0.028000; 0.029385; 0.030782; 0.032190; 0.033608; 0.035035; 0.036470; 0.037912; 0.039361; 0.040816; 0.042277; 0.043741; 0.045210; 0.046682; 0.048157; 0.049634; 0.051113; 0.052593; 0.054074; 0.055556; 0.057037; 0.058518; 0.059998; 0.061477; 0.062955; 0.064431; 0.065905; 0.067377; 0.068846; 0.070312; 0.071776; 0.073236; 0.074692; 0.076145; 0.077594; 0.079039; 0.080480;

M etodos Computacionais em Engenharia (DCA0304)

16

1.679999, 1.689999, 1.699999, 1.709999, 1.719999, 1.729999, 1.739999, 1.749999, 1.759999, 1.769999, 1.779999, 1.789999, 1.799999, 1.809999, 1.819999, 1.829999, 1.839999, 1.849999, 1.859999, 1.869999, 1.879999, 1.889999, 1.899999, 1.909999, 1.919999, 1.929999, 1.939999, 1.949999, 1.959999, 1.969999, 1.979999, 1.989999, 1.999999,

0.081916; 0.083348; 0.084775; 0.086197; 0.087615; 0.089027; 0.090435; 0.091837; 0.093233; 0.094625; 0.096011; 0.097391; 0.098765; 0.100134; 0.101497; 0.102855; 0.104206; 0.105551; 0.106891; 0.108224; 0.109552; 0.110873; 0.112188; 0.113497; 0.114800; 0.116097; 0.117388; 0.118672; 0.119950; 0.121222; 0.122487; 0.123747; 0.125000;

Este resultado pode ser plotado no Scilab (gura 5). Observa c ao 1 Intervalo de varia ca o do espa camento h para garantir a estabilidade do m etodo. M etodo Euler RK2 RK4 ABM4 Intervalo (0, 2) (0, 2) (0, 2.78) (0, 0.9)

Observa c ao 2 Uma equa ca o diferencial ordin aria com problema de valor inicial pode ser solucionada numericamente atrav es de uma fun ca o pr opria do Scilab chamada ode. Para saber mais sobre ela, deve-se digitar na linha de comando do Scilab: -->help ode

M etodos Computacionais em Engenharia (DCA0304)


0.14

17

0.12

0.10

0.08

0.06

0.04

0.02

0 1.0

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

2.0

x Figura 5: Resultado apresentado pelo m etodo Preditor-Corretor.

5
1.

Exerc cios
Achar as aproxima co es, por M etodo de Euler, para os seguintes problemas de valor inicial: y (x) = x y + 2 y (0) = 2 na malha [0, 1] com h = 0.05 e h = 0.01 (sugest ao: criar um programa em alguma linguagem de prefer encia e resolver este problema). y (x) = y 2x y (b) y (0) = 1 na malha de [0, 1] com h = 0.2. y (x) = 1 x (c) y (1) = 0 na malha de [1, 2] com h = 0.1. (a)

2.

Achar as aproxima co es para os problemas a seguir utilizando os M etodos de RungeKutta. (a) y (x) = x y + 2 y (0) = 2 na malha de [0, 1] com h = 0.1, utilizando o Euler Melhorado.

M etodos Computacionais em Engenharia (DCA0304)

18

(b)

(c)

(d)

(e)

y (x) = 1 x y (1) = 0 na malha de [1, 2] com h = 0.1, usando o Euler Modicado. y (x) = y 2x y y (0) = 1 na malha de [0, 1] com h = 0.1, usando o Runge-Kutta de quarta ordem. y (x) = x 2xy 1 x2 y (1) = 0 na malha de [1, 2] com h = 0.1, usando o Runge-Kutta de quarta ordem. 2 y (x) = y 1 x2 + 1 y (0) = 1 na malha de [0, 1], usando o Euler Melhorado, com h = 0.1 e h = 0.05. Comparar os resultados com a solu ca o exata: y (x) = 1x 1+x

3.

Obter as aproxima co es para os problemas a seguir utilizando os M etodos de AdamsBashforth-Moulton: 2 y (x) = y 1 (a) x2 + 1 y (0) = 1 na malha de [0, 1] com h = 0.1, usando o Preditor-Corretor. (b)

y (x) = xy 2 y (1) = 2 na malha de [1, 2] com h = 0.1, usando o Runge-Kutta de quarta ordem e o Preditor-Corretor. Compare os resultados plotando os gr acos.

4.

Conhecidos os pares (x0 , y0 ), (x1 , y1 ) e (x2 , y2 ), obter o M etodo Preditor-Corretor de passo dois.

Refer encias
[1] C alculo Num erico (com aplica co es) ; Le onidas C. Barroso, Magali M. A. Barroso, Frederico F. Campos, M arcio L. B. Carvalho, Miriam L. Maia; Editora Harbra; Segunda edi ca o; 1987. [2] Matem atica para Economia e Administra ca o ; Jean E. Weber; Editora Harbra; Segunda edi ca o; 2001. [3] C alculo Num erico - Caracter sticas Matem aticas e Computacionais dos M etodos Num ericos ; D ecio Sperandio, Jo ao T. Mendes, Luiz H. Monken e Silva; PrenticeHall; 2003.

M etodos Computacionais em Engenharia (DCA0304)

19

A
A.1

Listagem de Programas
M etodo de Euler

// Inclus~ ao das bibliotecas do C (possuem fun co ~es necess arias ao // programa) #include <math.h> #include <stdio.h> // Declara ca ~o da fun ca ~o (derivada) float dy(float, float); int main() { // Declara ca ~o das vari aveis float x0, y0, h; int m, j; // Entrada de dados printf("Digite o valor do x inicial: \n"); scanf("%f",&x0); printf("Digite o valor do y inicial: \n"); scanf("%f",&y0); printf("Digite o valor do espacamento h: \n"); scanf("%f",&h); printf("Digite o n umero de subintervalos m: \n"); scanf("%d",&m); // C alculo de x e y pelo M etodo de Euler float x[m+1], y[m+1]; x[0] = x0; y[0] = y0; for(j=0;j<m;j++) { x[j+1] = x[j] + h; y[j+1] = y[j] + h*dy(x[j],y[j]); } // Exibi ca ~o dos valores de x e y printf("Os valores de x e y sao:\n"); for(j=0;j<=m;j++) printf("%f, %f; \n",x[j], y[j]); return(0); } // Escopo da fun ca ~o (derivada) float dy(float x, float y) { return(x-y+2); }

M etodos Computacionais em Engenharia (DCA0304)

20

A.2

Runge-Kutta de Quarta Ordem

#include <math.h> #include <stdio.h> float dy(float, float); int main() { float x0, y0, h; float K1, K2, K3, K4; int m, j; printf("Digite o scanf("%f",&x0); printf("Digite o scanf("%f",&y0); printf("Digite o scanf("%f",&h); printf("Digite o scanf("%d",&m); valor do x inicial: \n"); valor do y inicial: \n"); valor do espacamento h: \n"); n umero de subintervalos m: \n");

float x[m+1], y[m+1]; x[0] = x0; y[0] = y0; for(j=0;j<m;j++) { K1 = dy(x[j], y[j]); K2 = dy(x[j]+h/2, y[j]+(h/2)*K1); K3 = dy(x[j]+h/2, y[j]+(h/2)*K2); K4 = dy(x[j]+h, y[j]+h*K3); x[j+1] = x[j] + h; y[j+1] = y[j] + (h/6)*(K1 + 2*K2 + 2*K3 + K4); } printf("Os valores de x e y sao:\n"); for(j=0;j<=m;j++) printf("%f, %f; \n",x[j], y[j]); return(0); } float dy(float x, float y) { return(x-y+2); }

M etodos Computacionais em Engenharia (DCA0304)

21

A.3

Preditor-Corretor de Passo Quatro

#include <math.h> #include <stdio.h> float dy(float, float); int main() { float x0, y0, h; float K1, K2, K3, K4; int m, j; FILE *arqv; // Defini ca ~o de um ponteiro para um arquivo (para gravar) // os dados printf("Digite o scanf("%f",&x0); printf("Digite o scanf("%f",&y0); printf("Digite o scanf("%f",&h); printf("Digite o scanf("%d",&m); valor do x inicial: \n"); valor do y inicial: \n"); valor do espacamento h: \n"); n umero de subintervalos m: \n");

// C alculo de x[0]->x[3] e y[0]->y[3] pelo m etodo RK4 float x[m+1], y[m+1]; x[0] = x0; y[0] = y0; for(j=0;j<3;j++) { K1 = dy(x[j], y[j]); K2 = dy(x[j]+h/2, y[j]+(h/2)*K1); K3 = dy(x[j]+h/2, y[j]+(h/2)*K2); K4 = dy(x[j]+h, y[j]+h*K3); x[j+1] = x[j] + h; y[j+1] = y[j] + (h/6)*(K1 + 2*K2 + 2*K3 + K4); } // C alculo dos outros elementos pelo Preditor-Corretor float yp, yc; for(j=3;j<m;j++) { x[j+1] = x[j] + h; yp = y[j] + (h/24)*(55*dy(x[j],y[j]) - 59*dy(x[j-1],y[j-1]) + 37*dy(x[j-2],y[j-2]) - 9*dy(x[j-3],y[j-3])); yc = y[j] + (h/24)*(9*dy(x[j+1],yp) + 19*dy(x[j],y[j]) 5*dy(x[j-1],y[j-1]) + dy(x[j-2],y[j-2])); y[j+1] = y[j] + (h/24)*(9*dy(x[j+1],yc) + 19*dy(x[j],y[j]) 5*dy(x[j-1],y[j-1]) + dy(x[j-2],y[j-2]));

M etodos Computacionais em Engenharia (DCA0304)

22

} // Grava ca ~o dos resultados em um arquivo do Scilab arqv = fopen("resultado.sci","w"); printf("Os valores de x e y estao em resultado.sci!\n"); for(j=0;j<=m;j++) { fprintf(arqv,"%f, %f; \n",x[j],y[j]); } fclose(arqv); printf("Numero de elementos: %d\n",j); return(0); } float dy(float x, float y) { return((x - 2*x*y -1)/powf(x,2)); }

You might also like