29.01.2014 Views

1 Objetivos 2 O Problema de Sturm-Liouville

1 Objetivos 2 O Problema de Sturm-Liouville

1 Objetivos 2 O Problema de Sturm-Liouville

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.

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

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

Saved successfully!

Ooh no, something went wrong!