29.01.2014 Views

Cálculo Numérico - 05/2 Trabalho Computacional Soluç˜ao de ...

Cálculo Numérico - 05/2 Trabalho Computacional Soluç˜ao de ...

Cálculo Numérico - 05/2 Trabalho Computacional Soluç˜ao de ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Cálculo Numérico - <strong>05</strong>/2<br />

Prof.: Leonardo Muniz <strong>de</strong> Lima - tel.: 3335 2138 (lmuniz@inf.ufes.br)<br />

Homepage do curso: www.inf.ufes.br/~lmuniz<br />

<strong>Trabalho</strong> <strong>Computacional</strong><br />

Solução <strong>de</strong> Problemas <strong>de</strong> Valor no Contorno<br />

Bidimensionais<br />

1 Introdução<br />

Equações diferenciais parciais, aparecem com freqüência na solução <strong>de</strong> problemas em diversas<br />

áreas do conhecimento. Sendo assim, vamos estudar o processo <strong>de</strong> discretização pelo método<br />

das diferenças finitas <strong>de</strong> equações do tipo:<br />

( )<br />

∂ 2 u<br />

−<br />

∂x + ∂2 u<br />

+ a ∂u<br />

2 ∂y 2 ∂x + b∂u + cu = f(x, y) em Ω (1)<br />

∂y<br />

consi<strong>de</strong>rando que a, b, c e f(x, y) são conhecidas e que u(x, y) é conhecida no contorno <strong>de</strong><br />

Ω. Deseja-se obter a solução u(x, y) no interior <strong>de</strong> um domínio retangular <strong>de</strong> dimensões<br />

(x 0 , x (N+1) ) × (y 0 , y (M+1) ), sendo conhecida a solução no contorno do retângulo (condições <strong>de</strong><br />

Dirichlet). Consi<strong>de</strong>re uma subdivisão do domínio em células retangulares, sendo N + 1 divisões<br />

na horizontal e M + 1 divisões na vertical, respectivamente, <strong>de</strong> dimensões h x e h y .<br />

Como exemplo, na equação (1), tomando a = 0, b = 0, c = 0 e f(x, y) = 0, temos a<br />

conhecida equação diferencial <strong>de</strong> Laplace:<br />

( )<br />

∂ 2 u<br />

−<br />

∂x + ∂2 u<br />

= 0 (2)<br />

2 ∂y 2<br />

Essa equação aparece em diversos problemas tais como:<br />

• Condução <strong>de</strong> Calor.<br />

• Campo <strong>de</strong> potencial eletrostático.<br />

• Escoamento irrotacional <strong>de</strong> um fluido perfeito (sem viscosida<strong>de</strong>).<br />

• Torção <strong>de</strong> uma barra prismática.<br />

Além <strong>de</strong> muitos outros problemas práticos. O termo u refere-se a gran<strong>de</strong>za envolvida.<br />

2 Objetivo<br />

Discretizar a equação (1) pelo método das diferenças finitas e resolver o sistema linear resultante<br />

através do método <strong>de</strong> eliminação gaussina e método <strong>de</strong> Gauss-Sei<strong>de</strong>l com relaxação sucessiva<br />

SOR (Veja a <strong>de</strong>finição do método <strong>de</strong> Gauss-Sei<strong>de</strong>l com SOR no anexo 1). Implementar todos<br />

algoritmos em Matlab (Octave) e em alguma das seguintes linguagens <strong>de</strong> programação: C,<br />

Fortran ou Pascal. Fazer uma análise compartiva dos métodos <strong>de</strong> solução <strong>de</strong> sistemas lineares<br />

entre si e da uso do Matlab (Octave) versus o uso da linguagem <strong>de</strong> programação escolhida (C,<br />

Fortran ou Pascal).


3 Etapas do trabalho<br />

3.1 Implementação<br />

Faça um programa em computacional modularizado (divido em procedimentos e funções) em<br />

Matlab e outro na linguagem <strong>de</strong> programação escolhida (C, Fortran, Pascal) para resolver a<br />

equação bidimensional (1) pelo método das diferenças finitas utilizando alguns conceitos que<br />

serão <strong>de</strong>senvolvidos em sala <strong>de</strong> aula. O programa principal <strong>de</strong>ve ter a seguinte estrutura:<br />

• Um procedimento ou função para leitura dos dados feitas <strong>de</strong> duas formas alternativas:<br />

através do teclado ou através <strong>de</strong> um arquivo <strong>de</strong> entrada. (Deve ser dada ao usuário essa<br />

opção <strong>de</strong> escolha).<br />

• Um procedimento ou função para a montegem do sistema esparso resultante.<br />

• Um procedimento ou função para tratar as condições <strong>de</strong> contorno.<br />

• Um procedimento ou função para solução do sistema linear resultante pelo método <strong>de</strong><br />

eliminação <strong>de</strong> Gauss.<br />

• Um procedimento ou função para solução do sistema linear resultante pelo método <strong>de</strong><br />

Gauss-Sei<strong>de</strong>l com dispositivo SOR.<br />

• Um procedimento ou função para imprimir os resuldos em um arquivo <strong>de</strong> saída do tipo<br />

texto ou alternativamente imprimir o resultado na tela.<br />

3.2 Validação dos algoritmos implementados<br />

Teste o seu programa consi<strong>de</strong>rando um problema simples: condução <strong>de</strong> calor em uma placa<br />

plana com condições <strong>de</strong> contorno constantes e iguais. Em condições i<strong>de</strong>ais <strong>de</strong> condutivida<strong>de</strong> a<br />

variação da temperatura T (x, y) em uma placa retangular satisfaz a equação <strong>de</strong> Laplace (caso<br />

particular da equação (1)):<br />

( )<br />

∂ 2 T<br />

−<br />

∂x + ∂2 T<br />

= 0 em (x 2 ∂y 2 0 , x (N+1) ) × (y 0 , y (M+1) ) (3)<br />

consi<strong>de</strong>rando que a temperatura T (x, y) = T 0 em todos os lados da placa, os valores no interior<br />

da placa <strong>de</strong>vem ser aproximadamente iguais em todos os pontos da discretização.<br />

3.3 Testes<br />

Os testes visam medir o tempo gasto para efetuar a solução da equação (1) por diferenças<br />

finitas utilizando os dois métodos <strong>de</strong> solução <strong>de</strong> sistemas lineares mencionados e as diferentes<br />

implementações em Matlab (Octave) e na outra linguagem escolhida (C, Fortran, Pascal).<br />

Consi<strong>de</strong>rando a equação (1) em Ω = {(x, y) : 0 ≤ x, y ≤ 1} on<strong>de</strong> a = 60, b = 80, c = −40 e<br />

f(x, y) é tal que u(x, y) = xe xy sen(πx)cos(πy), <strong>de</strong>verão ser medidos e apresentados em tabelas<br />

os tempos <strong>de</strong> processamento em Matlab (Octave) e na outra linguagem <strong>de</strong> programação (C,<br />

Fortran, Pascal) para os seguintes casos <strong>de</strong> malhas: 8 × 8, 16 × 16, 32 × 32, 64 × 64, 128 × 128<br />

e 256 × 256.


3.4 Gráficos<br />

Devem ser apresentados pelo menos um gráfico referente a solução do problema <strong>de</strong> validação<br />

da Seção 3.2 e outro refente a solução do problema da seção <strong>de</strong> testes. Os gráficos <strong>de</strong>vem ser<br />

obtidos a partir dos arquivos <strong>de</strong> saída (arquivo texto da solução) e gerados com o auxílio do<br />

Matlab ou do Gnuplot.<br />

4 Estrutura do relatório<br />

O relatório <strong>de</strong>verá ser escrito em Word ou Latex e a partir <strong>de</strong>sse <strong>de</strong>ve ser gerado um arquivo<br />

em formato pdf. Também <strong>de</strong>vem ser obe<strong>de</strong>cidas as normas do padrão ABNT. A divisão do<br />

relatório <strong>de</strong>ve ser <strong>de</strong> acordo com as seguintes seções:<br />

• Introdução: on<strong>de</strong> o grupo <strong>de</strong>verá sintetizar o conteúdo do trabalho e os objetivos.<br />

• Códigos: on<strong>de</strong> serão apresentados os códigos em Matlab (ou Octave) e da outra linguagem<br />

escolhida (C, Fortran, Pascal) referentes aos algoritmos implementados.<br />

• Testes: on<strong>de</strong> serão apresentados os exemplos testes utilizados pelo grupo, tanto as entradas<br />

para os programas bem como tabelas e gráficos das repectivas saídas geradas pelas<br />

soluções.<br />

• Conclusão: on<strong>de</strong> serão discutidos os resultados obtidos.<br />

5 Consi<strong>de</strong>rações gerais sobre o trabalho<br />

• O trabalho po<strong>de</strong>rá ser feito em grupo <strong>de</strong> no máximo 3 alunos.<br />

• Todos alunos do grupo <strong>de</strong>vem enten<strong>de</strong>r completamente a lógica utilizada, pois em cada<br />

grupo um aluno será sorteado para uma entrevista na qual prestará esclarecimentos sobre<br />

os procedimentos adotados. (Caso o aluno não tenha compreendido os procedimentos<br />

adotados, a nota do grupo ficará comprometida).<br />

• <strong>Trabalho</strong>s consi<strong>de</strong>rados iguais receberão nota zero.<br />

• O prazo final para a entrega do trabalho será 01/12/20<strong>05</strong>, sem qualquer chance <strong>de</strong> prorrogação.<br />

• A entrega do trabalho será conforme <strong>de</strong>scrito na seção a seguir.<br />

6 Como entregar<br />

• Envie o relatório e os códigos fonte do seu trabalho por e-mail para lmuniz@inf.ufes.br.<br />

• O assunto do e-mail <strong>de</strong>ve ser o seguinte (somente o que está entre aspas duplas): ”cn:trab1:<br />

nome1:nome2:nome3:”. Substitua nome1, nome2 e nome3 pelo primeiro nome e o ultimo<br />

sobrenome <strong>de</strong> cada integrante do grupo, separados por espaços.


• Compacte o seus arquivos .m, .c (ou .f, .pas) e relatório em pdf utilizando o formato zip<br />

e envie o arquivo compactado em anexo. NÃO coloque nada no corpo do e-mail.<br />

• Após o envio você receberá uma confirmação <strong>de</strong> recebimento do trabalho. Caso isso não<br />

aconteça, reenvie o seu trabalho para o mesmo en<strong>de</strong>reço.<br />

• O recebimento dos trabalhos é automatizado. Siga as instruções à risca pois algum erro<br />

na submissão po<strong>de</strong> inviabilizar a entrega do seu trabalho.<br />

Um exemplo <strong>de</strong> um e-mail <strong>de</strong> envio do trabalho:<br />

Para: lmuniz@inf.ufes.br<br />

De: Jo~ao da Silva, Maria dos Santos Moraes, Antonio Carlos Santos<br />

Assunto: cn:trab1:Joao Silva:Maria Moraes:Antonio Santos:<br />

Anexo: trab1.zip (contendo os códigos em Matlab ou Octave, C ou Fortran ou Pascal e o<br />

relatório)<br />

ATENÇÃO:<br />

• No assunto, a disciplina (cn) e a i<strong>de</strong>nticação do trabalho (trab1) <strong>de</strong>vem ser escritos todos<br />

em letras minúsculas.<br />

• NÃO escreva o seu nome com caracteres estendidos ( á, ç, etc).<br />

• NÃO utilize contas <strong>de</strong> e-mail do HOTMAIL, pois as mensagens enviadas por esse servidor<br />

não seguem o padrão normal. Assim, o programa <strong>de</strong> recebimento automático não consegue<br />

<strong>de</strong>tectar o seu e-mail.<br />

Anexo 1<br />

Uma técnica <strong>de</strong> aceleração <strong>de</strong> convergência dos métodos iterativos é conhecida com o nome<br />

<strong>de</strong> relaxação sucessiva ou SOR. Nesta técnica a aproximação na iteração k + 1 é <strong>de</strong>finida como<br />

uma média pon<strong>de</strong>ra entre o valor <strong>de</strong> x k obtido na iteração k e o valor <strong>de</strong> x k+1 , que seria obtido<br />

pelo método <strong>de</strong> Sei<strong>de</strong>l na iteração k + 1, que seria obtido pelo método <strong>de</strong> Sei<strong>de</strong>l na iteração<br />

k + 1, com fator <strong>de</strong> pon<strong>de</strong>ração w:<br />

x k+1<br />

SOR = (1 − w)xk SOR + wx k+1<br />

S<br />

on<strong>de</strong> os sub-índices SOR e S se referem às aproximações obtidas pelos métodos SOR e Sei<strong>de</strong>l,<br />

respectivamente. É possível <strong>de</strong>monstrar que o método SOR gera um procedimento convergente<br />

se 0 ≤ w < 2. Em alguns exemplos particulares é possível calcular o valor ótimo para w. Em<br />

geral o valor <strong>de</strong> w é obtido por experimentação.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!