1 Objetivos 2 O Problema de Sturm-Liouville
1 Objetivos 2 O Problema de Sturm-Liouville
1 Objetivos 2 O Problema de Sturm-Liouville
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Universida<strong>de</strong> Fe<strong>de</strong>ral do Espírito Santo DI<br />
Trabalho <strong>de</strong> Cálculo Numérico 2007/2<br />
Resolução do <strong>Problema</strong> <strong>de</strong> <strong>Sturm</strong> <strong>Liouville</strong> via método da diferenças finitas<br />
Data <strong>de</strong> entrega: Código via internet até 27/11/2007, relatórios impressos até 29/11/2007<br />
1 <strong>Objetivos</strong><br />
Implementar um programa para resolver equações diferenciais <strong>de</strong> 2 a or<strong>de</strong>m, com valores <strong>de</strong> Contorno<br />
(PVC), via métdo das diferenças finitas. O sistema linear tridiagonal resultante da discretização da<br />
equação diferencial <strong>de</strong>ve ser resolvido via método iterativo <strong>de</strong> Gauss Sei<strong>de</strong>l.<br />
2 O <strong>Problema</strong> <strong>de</strong> <strong>Sturm</strong>-<strong>Liouville</strong><br />
Sejam p(x), q(x) e r(x) funções contínuas <strong>de</strong>finidas em I = [a, b]. O problema <strong>de</strong> encontrar y(x) em<br />
I = [a, b] tal que<br />
y ′′ + p(x)y ′ + q(x)y = r(x)<br />
com valores <strong>de</strong> contorno y(a) = y a e y(b) = y b é conhecido como <strong>Problema</strong> <strong>de</strong> <strong>Sturm</strong>- <strong>Liouville</strong>.<br />
Po<strong>de</strong>-se mostrar que se q(x) < 0 em I = [a, b] há garantia da existencia <strong>de</strong> uma solução única.<br />
Para resolver tal PVC po<strong>de</strong>-se usar o método das diferenças finitas.<br />
O método das diferenças finitas consiste em obter aproximações numéricas para <strong>de</strong>rivadas <strong>de</strong> uma<br />
função, através da transformação do contínuo em discreto.<br />
Ao fazer tal discretização tem-se que<br />
y ′ ≈ y i+1 − y i−1<br />
2h<br />
y ′′ ≈ y i+1 − 2y i + y i−1<br />
h 2<br />
Discretizando o domínio [a, b] em n subintervalos <strong>de</strong> tamanho h = (b − a)/n tem-se n + 1 pontos<br />
x 0 = a, x 1 , x 2 , ..., x n = b e portanto para cada ponto x i do domínio passa a valer a seguinte equação<br />
y i+1 − 2y i + y i−1<br />
h 2<br />
+ p(x i ) y i+1 − y i−1<br />
2h<br />
+ q(x i )y i = r(x i )<br />
A solução numérica consiste em obter os y i nos n − 1 pontos internos à discretização resolvendo<br />
as n − 1 equações abaixo<br />
Agrupando os termos, e usando a notação p(x i ) = p i q(x i ) = q i , r(x i ) = r i temos para i = 1, (n − 1)<br />
:<br />
(1 − h 2 p i)y i−1 + (−2 + h 2 q i )y i + (1 + h 2 p i)y i+1 = h 2 r i<br />
Como y 0 e y n = y b são dados (valores <strong>de</strong> contorno) é possível obter os y i resolvendo o sistema<br />
linear.<br />
Para maiores <strong>de</strong>talhes sobre o método das diferenças finitas ler o texto fornecido em anexo refente<br />
ao assunto (páginas 173 a 177 do livro <strong>de</strong> Métdos Numéricos da Cristina Cunha colocado na xerox do<br />
CT III).<br />
1
3 Implementações<br />
Fazer o código modular, tendo no mínimo as seguintes rotinas:<br />
(1) rotina com o algoritmo <strong>de</strong> Gauss-Sei<strong>de</strong>l para resolver um sistema linear tridiagonal qualquer, <strong>de</strong> dimensão<br />
n, levando em consi<strong>de</strong>ração a estrutura especial da matriz. Fazer uma implementação usando<br />
unicamente os valores não nulos da matriz envolvida. Gravar o sistema usando apenas 4 vetores, 1<br />
para a diagonal principal, 2 outros para as 2 subdiagonais (inferior e superior) e um quarto vetor para<br />
os termos in<strong>de</strong>pen<strong>de</strong>ntes e usar apenas estes 4 vetores no algoritmo.<br />
(2) rotina que gere o sistema Ax = b triagonal resultante da discretição por difenreças finitas da<br />
equação do <strong>Problema</strong> <strong>de</strong> <strong>Sturm</strong>- <strong>Liouville</strong>. O sistema <strong>de</strong>ve ser armazenado usando os 4 vetores já<br />
<strong>de</strong>scritos. Os dados <strong>de</strong> entrada são a e b, y 0 e y n s e o tamanho da discretização. As funções p(x), q(x)<br />
e r(x) <strong>de</strong>vem ser colocadas em rotinas do tipo ’funcao’ (computacional).<br />
4 Validação do método Iterativo <strong>de</strong> Gauss Sei<strong>de</strong>l<br />
Ler, através <strong>de</strong> um arquivo texto, chamado matrizdados.txt, os dados <strong>de</strong> um sistema linear qualquer,<br />
com solução conhecida, on<strong>de</strong> <strong>de</strong>vem ser fornecidos e lidos : a dimensão em uma linha, a subdiagonal<br />
superior, a diagonal principal,a subdiagonal inferior, e o vetor b, nas outras linhas, nesta or<strong>de</strong>m.<br />
Seu programa <strong>de</strong>ve exibir para o usuário, 2 telas <strong>de</strong> menu, similares às mostradas abaixo:<br />
DADOS DE ENTRADA. D i g i t e uma opcao :<br />
1 − Carregar dados <strong>de</strong> um sistema para a v a l i d a c a o do metodo i t e r a t i v o<br />
2− Resolver o <strong>Problema</strong> <strong>de</strong> <strong>Sturm</strong>−L i o u v i l l e<br />
Escolha :<br />
Se escolher a opção 1, o usúario ainda <strong>de</strong>ve fornecer a precisão com que quer obter a sua solução.<br />
(exemplo ɛ = 10 −7 ).<br />
Se a escolha for 2, <strong>de</strong>vem ser pedidos os dados <strong>de</strong> entrada relativos ao problema: a e b, y 0 e y n<br />
e o número <strong>de</strong> subdivisões do dominio n (chamado comumente <strong>de</strong> tamanho da discretização). Estes<br />
valores <strong>de</strong>vem ser solicitados nesta or<strong>de</strong>m. O algoritmo iterativo <strong>de</strong>ve trabalhar com uma precisão<br />
fixa (por exemploɛ = 10 −7 ) já estabelecido no seu código (ou seja não será pedido ao usuário quando<br />
este rodar esta aplicação).<br />
Os resultados, em ambas opções, po<strong>de</strong>m ser exibidos na tela ou gravados em arquivo, sendo assim<br />
<strong>de</strong>ve-se criar um menu <strong>de</strong> saída similar ao mostrado abaixo.<br />
SAIDA . D i g i t e uma opcao :<br />
T − E x i b i r r e s u l t a d o s na t e l a<br />
A − Salvar r e s u l t a d o s em arquivo<br />
S − S a i r<br />
Escolha :<br />
Para a opção 1, <strong>de</strong>ve-se exibir a sequencia <strong>de</strong> vetores do processo iterativo, e o arquivo <strong>de</strong>ve-se<br />
chamar SolSistema.txt Para a escolha 2, <strong>de</strong>ve-se exibir a matriz gerada e o vetor solução (vetor da<br />
ultima iteração somente) e usar um arquivo com nome SolProbLioville.txt.<br />
5 <strong>Problema</strong> específico<br />
Resolver o seguinte problema<br />
y ′′ − y ′ + xy = e x (x 2 + 1)<br />
2
em I = [0, 1] com y(0) = 0 e y(1) = e.<br />
obs:entregar o seu código contendo as funções p(x), q(x) e r(x) <strong>de</strong>finidas para este problema<br />
6 Relatório<br />
Cada grupo <strong>de</strong>ve redigir um relatório, contendo os seguintes itens:<br />
1. Introdução: Apresentar uma síntese do trabalho (o que se propoẽ, o que foi feito, objetivos<br />
gerais). Explicar primeiro o problema que está sendo tratado, a idéia do método numérico<br />
envolvido, qual foi o problema usado para a validação e os diversos estudos realizados.<br />
2. Implementação: Explicar como rodar o programa e apresentar o código impresso (com letras e<br />
espaçamentos pequenos) da rotinas principais. Explicar como foram <strong>de</strong>senvolvidas as diversas<br />
rotinas e como elas estão relacionadas.<br />
3. Resultados: Exibir os resultados do problema específico, via gráficos.<br />
7 Condições <strong>de</strong> entrega<br />
Este trabalho <strong>de</strong>verá ser realizado em grupos <strong>de</strong> no máximo 2 alunos. Em hipótese alguma serão<br />
aceitos grupos com mais componentes. OBS.: Escreva os nomes no código fonte do seu programa.<br />
Como entregar:<br />
• Envie o código fonte do seu trabalho por e-mail para galarda@inf.ufes.br.<br />
• O assunto do e-mail <strong>de</strong>verá ser o seguinte (somente o que está entre aspas duplas):<br />
“cn:trab1:nome1:nome2:”. Substitua nome1, nome2 pelo primeiro nome e o último sobrenome<br />
<strong>de</strong> cada integrante do grupo, separados por espaços.<br />
• Compacte o seu arquivo utilizando o formato .zip e envie o arquivo compactado em anexo. NÃO<br />
coloque o seu código 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 aconteça,<br />
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 na<br />
submissão po<strong>de</strong> inviabilizar a entrega do seu trabalho.<br />
• O relatório <strong>de</strong>verá ser apenas entregue impresso.<br />
Um exemplo <strong>de</strong> um e-mail <strong>de</strong> envio do trabalho:<br />
Para: galarda@inf.ufes.br<br />
Assunto: cn:trab1:Ana Silva:Antonio Santos:<br />
Anexo: trab1.zip (contendo o arquivo trab1.f)<br />
ATENÇÃO:<br />
• No assunto, a disciplina (cn) e a i<strong>de</strong>ntificação do trabalho (trab1 ) <strong>de</strong>vem ser escritos todos em<br />
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 não<br />
seguem o padrão normal. Assim, o programa <strong>de</strong> recebimento automático não consegue <strong>de</strong>tectar<br />
o seu e-mail.<br />
3