Você está na página 1de 4

Trabalho de Algoritmos Numéricos DI/CT/UFES

Fı́sica, Eng. Mecânica, Eng. Elétrica, Ciência da


Computação e Estatı́stica

Resolução de um sietema de equações diferencias ordinárias


(EDO) de 1a ordem via de Runge Kutta de 4a ordem

1 Objetivos
O objetivo deste trabalho é implementar o método de Runge Kutta de 4a ordem e
aplicá-lo para resolver um sistema de EDO de 1a ordem.

2 Sistemas de equações diferencias ordinárias de


1a ordem
Sistemas de EDO de 1a ordem aparecem, com frequência, nas ciências exatas pois
são “ferramentas” adequadas para modelar diversos fenômenos do nosso mundo real.
Os sistemas mais simples são aqueles formados por duas equações de 1a ordem.
Seja o sistema de duas equaçõe diferencias, com valores inicais tais como definidos
abaixo:  0
y = f1 (x, y1 , y2 )
 10


y2 = f2 (x, y1 , y2 )

 y1 (a) = y1a
y2 (a) = y2a

A solução analı́tica, em D = [a, b], é o par de funções y1 (x) e y2 (x) que satizem às
equações diferenciais e às condições iniciais y1 (a) = y1a e y2 (a) = y2a em D = [a, b].
A obtenção da solução analı́tica, é, no entanto, muita vezes, difı́cil de ser deter-
minada. Diversos métodos existem (ver no livro do Chapra E Canale, por exemplo)
para obter a solução numericamente. Um deles é o método de Runge Kutta de 4a
ordem.

3 O método de Runge Kutta de 4a ordem para


sistemas de duas equações
No método de Runge Kutta de 4a ordem para sistemas é uma extensão direta do
método Runge Kutta de 4a ordem que resolve uma equação. Quando há duas
equacões as aproximações para y1 (x) e y2 (x) são calculadas, sincronizadamente,
para y1 (x) e y2 (x), a cada passo da discretização do domı́nio, isto é, neste método,
calcula-se aproximações para y1 (x(i + 1)) e para y2 (x(i + 1)) via y1 (i + 1) e y2 (i + 1),
que são obtidos por

y1 (i + 1) = y1 (i) + h/6 ∗ (k11 + 2k21 + 2k31 + k41 )


y2 (i + 1) = y2 (i) + h/6 ∗ (k12 + 2k22 + 2k32 + k42 )
onde os valores de k11 , k21 , k31 , k41 são as 4 declividades de y1 , dadas por

k11 = f1 (x(i), y1 (i), y2 (i))


k21 = f1 (x(i) + h/2, y1 (i) + h(k11 )/2, y2 (i) + h(k12 )/2)
k31 = f1 (x(i) + h/2, y1 (i) + h(k21 )/2, y2 (i) + h(k22 )/2)
k41 = f1 (x(i) + h, y1 (i) + hk31 , y2 (i) + hk32 )

e os valores de k12 , k22 , k32 , k42 são as 4 declividades de y2 , dadas por

k12 = f2 (x(i), y1 (i), y2 (i))


k22 = f2 (x(i) + h/2, y1 (i) + h(k11 )/2, y2 (i) + h(k12 )/2)
k32 = f2 (x(i) + h/2, y1 (i) + h(k21 )/2, y2 (i) + h(k22 )/2)
k42 = f2 (x(i) + h, y1 (i) + hk31 , y2 (i) + hk32 )

4 Implementações
Implementar o método de Runge Kutta de 4a ordem para sistemas de duas equações.
Os dados fornecidos pelo usuário devem ser a, b, y1a , y2a e m, onde m é o tamanho
da partição do domı́nio. As funções f1 (x, y1 , y2 ) e f2 (x, y1 , y2 ) devem que estar
definidas diretamente no programa, em uma rotina especı́fica para a sua avaliação.
Os valores das soluções numéricas (ou seja, referentes às funções y1 (x) e y2 (x)) devem
ser gravados em um dois vetores, um para cada função.
A implementação do programa deve ser tal que resolva os seguintes problemas:

1. Resolução de um problema de validação.


Determinar a solução de
 0
y = f1 (x, y1 , y2 ) = y2
 10


y2 = f2 (x, y1 , y2 ) = 2y1 + y2 − x2

 y1 (0) = 1
y2 (0) = 0

em D = [0, 1], com m = 5 e em seguida com m = 20. Observe que a solução


exata deste problema é fornecida no livro de Algoritmos Numéricos, Campos
2007, na pag 346.

2. Resolução do PVI dado abaixo.


Determinar a solução de
 0
y = f1 (x, y1 , y2 ) = y1 + y2 + 3x
 10


y2 = f2 (x, y1 , y2 ) = 2y1 − y2 − x

 y1 (0) = 0
y2 (0) = −1

em D = [0, 2], com m = 10 e com m = 40.

3. Resolução de um problema especı́fico da área.


Cada grupo terá um problema de sua área. Será fornecido via email, para
cada grupo.
5 Menu de entrada e valores de saı́da
Seu programa deve exibir, na tela, um menu para o usuário, similar à mostrada
abaixo:
Digite uma opção:
1 - Resolver o problema do exemplo inicial (da validação).
2 - Resolver o problema do exemplo 2.
2 - Resolver o problema da área.
3 - Sair
Escolha:

Após a escolha da opção, o usuário deve fornecer os dados necessários para a


resolução do problema (ou seja, a, b, y1a , y2a e m). Fornecidos os dados de entrada,
deve-se, em seguida, exibir, na tela, a solução numérica do problema escolhido, com
a partição estabelecida (exibir os valores de x(i) , y1 (i) e y2 (i)).

6 Relatório
1. Introdução: apresentar uma sı́ntese do trabalho (o que se propõe, o que foi
feito, objetivos gerais).

2. Método numérico: explicar a ideia do método numérico implementado.

3. Problemas tratados: 1) apresentar o problema da validação, mostrando a sua


solução exata; 2) apresentar o problema 2 3) apresentar o problema da sua
área.

4. Resultados: apresentar, para cada um dos problemas, as soluções obtidas.


Para o problema da validação, traçar a solução numérica (para os dois valores
de m e também a solução exata, em um par de eixos cartesianos. Para o
problema da sua área, calcular a solução com os dois valores distintos de
subintervalos, ou seja, para dois valores de m distintos, esolhidos pelo grupo.
Traçar a solução numérica, em um par de eixos cartesianos, para um dos
valores de subintervalos.

5. Código: explicar como rodar o programa e imprimir, no final do relatório, o


código.

7 Condições de entrega
7.1 Grupo:
Este trabalho deverá ser realizado em grupos de no máximo 2 alunos. Não serão
aceitos grupos com mais componentes. OBS: Escreva os nomes dos componentes no
código fonte do seu programa.
7.2 Como entregar:
• Envie o código até dia terça feira, 25 de novembro de 2014, às 23:59h.

• Envie o código fonte do seu trabalho por e-mail para galarda@inf.ufes.br.

• O assunto do e-mail deverá ser o seguinte (somente o que está entre aspas
duplas):“algnum:nome1:nome2”. Substitua nome1, nome2 pelo primeiro nome
e o último sobrenome de cada integrante do grupo, separados por espaços.

• Envie o arquivo o código fonte (em C, Fortran, Python ou octave) anexado.


NÃO coloque o seu código no corpo do e-mail. O nome código deve os nomes
dos dois integrantes do grupo.

• O relatório deverá ser apenas entregue impresso. Deve ser entregue até
quarta feira, 26 de novembro de 2014, às 17:00h.

• Trabalhos iguais terão suas notas divididas pelo número de grupos que apre-
sentarem os mesmos trabalhos.

Um exemplo, do e-mail de envio do trabalho, com um grupo com 2 integrantes:

Para: galarda@inf.ufes.br
De: Ana Silva
Assunto: algnum:Ana Silva:Joao Moraes
Anexo: AnaJoao.c

Você também pode gostar