MS 211 – Calculo Numérico Projeto Data de entrega: 16/06/2015 Observações para apresentação do projeto • A nota do projeto comporá a média final. • O projeto pode ser desenvolvido em grupo, com no máximo dois alunos. Não será permitido projetos com três ou mais alunos. • O projeto deverá ser entregue no formato impresso, e não será aceito após a data de entrega 16/06. • As rotinas computacionais utilizadas também deverão ser anexadas ao projeto no formato impresso, independentemente da linguagem de programação utilizada. • A nota do projeto será composta da avaliação dos resultados apresentados (teóricos e computacionais). Soluções “soltas” ou “desconexas” não serão consideradas. • Todos os métodos numéricos utilizados e que estejam cobertos pela ementa da disciplina deverão ser implementados. Sugestões para elaboração do projeto • Justifique todas as etapas do desenvolvimento do projeto. • Faça um resumo dos métodos numéricos utilizados. • Utilize recursos gráficos para auxiliar o desenvolvimento do projeto. • Apresente os algoritmos dos métodos numéricos utilizados. • Inclua as listagens dos programas. • Apresente claramente os resultados numéricos obtidos fazendo uma análise objetiva. • Apresente conclusão e bibliografia. 1 Atividade 01 Um pêndulo simples é um sistema composto de uma massa pontual acoplada em um fio de massa desprezível e de comprimento L. O fio está preso a uma extremidade permitindo um movimento oscilatório da massa. Quando a gravidade é a única força agindo sobre o pêndulo, sua oscilação pode ser modelada segundo a equação diferencial não-linear (1) g sin (θ(t)) (1) L onde θ(t) é o ângulo que a massa faz com a vertical, assumindo que θ = 0 é a posição de equilíbrio. Note que a equação diferencial dada por (1) é uma equação não-linear. Tome L = 0.3 m e g = 9.82 m/s2 , e imponha como condição inicial θ(0) = θ0 e θ0 (0) = 0. Se o ângulo inicial θ0 está próximo de zero, então é possível usar a seguinte aproximação sin (θ(t)) ≈ θ(t), simplificando a equação (1), obtendo a equação linearizada θ00 (t) = − g θ00 (t) = − θ(t), L (2) que é uma equção mais simples de se resolver. a) Calcule o período de oscilação, T0 , do pêndulo para a equação simplificada (2); b) Caso o valor de θ0 não seja tão pequeno, a simplificação não faz sentido, e portanto o período de oscilação do pêndulo se torna s L K(sin2 (θ0 /2)), g T (θ0 ) = 4 onde K(s2 ) é uma integral elíptica do primeiro tipo, dada por Z 1 dt 2 √ √ K(s ) = . 2 1 − s t2 1 − t2 0 Calcule numericamente uma aproximação e grafique T (θ0 ) para diferentes valores de θ0 , entre [0, 0.999π], usando métodos de quadratura e algum outro método de integração numérica, com uma tolerância de 10−6 para o erro. c) Verifique que, para pequenos valores de θ0 as equações (1) e (2) tem aproximadamente o mesmo período. Estime o maior valor de θ0 tal que os períodos de oscilação tenham uma diferença relativa de no máximo 10−1 . Estude o que acontece com a razão T0 /T (θ0 ) quando θ0 → π. d) Aproxime numericamente as soluções para o modelo não linear para diversos valores de θ0 , tanto próximos de 0 quanto de π. Grafique seus resultados. 2 Atividade 02 Neste problema, vamos apresentar um outro método de resolução de um Problema de Valor de Contorno (PVC), utilizando splines cúbicas por partes. Para isto, antes de introduzir o problema, apresentaremos tipo de função que irá servir como base para o espaço das funções de classe C 2 [a, b] (funções contínuas que tem a primeira e a segunda derivadas contínuas no intervalo dado), onde vamos querer encontrar a solução do PVC. [10] Considere uma partição do intervalo dado por [a, b], em n subintervalos igualmente espaçados, π : a = t0 < t1 < · · · < tn = b, tal que tı − tı−1 = h, para todo ı = 1 : n. A B-spline B (t) associada ao ponto t ( = 1 : n) é construída impondo-se as seguintes condições • é uma função cúbica por partes; • tem suporte compacto, isto é, assumem valores não nulos em apenas um subintervalo. No caso das splines cúbicas, este suporte tem comprimento 4h; • B (t) ∈ C 2 [a, b] Além disso, as B-splines são construídas a partir de um sistema, criado das condições impostas. Escreva de maneira simplificada (não precisa resolver!) o sistema associado a uma B-spline [8]. Entretanto, os valores da função e de suas derivadas em alguns nós são dados na Tabela 1. Desenvolva a expressão para uma B-spline usando os dados da tabela, e faça um gráfico da função por partes obtida. Tabela 1: Valores para a constução das B-splines t−2 t−1 t0 t1 t2 B(t) 0 1 4 1 0 B 0 (t) 00 B (t) 0 3/h 0 2 −3/h 0 2 −12/h 6/h 2 6/h 0 0 As funções obtidas formam o conjunto B = {B−1 (t), B0 (t), . . . , Bn+1 (t)}. Mostre que essas funções são linearmente independentes em [a, b]. Se temos apenas n + 1 pontos, por que tivemos que adicionar mais duas funções? Explique e faça uma representação geométrica. Agora, o PVC considerado está mostrado em (3). y 00 (t) + p(t)y 0 (t) + q(t)y(t) = f (t) y(a) = α (3) y(b) = β, onde as funções p(t), q(t) e f (t) são funções dadas, p(t) e q(t) são contínuas e a < b, α e β são números reais. Para a aproximação, fazemos n+1 X y(t) ≈ ck Bk (t). k=−1 Impondo as condições no PVC (3), e lembrando que a B-spline tem suporte compacto (vale zero fora do intervalo que contém os cinco pontos que a define) encontre o sistema de equações que deve ser resolvido para encontrar os coeficientes ck . Por último, resolva o PVC abaixo usando o método encontrado, aproveitando ao máximo a estrutura do sistema a ser resolvido. Altere o número de nós e grafique o resultado, comparando com a solução exata do PVC. 3 2 y 00 (t) + 4ty 0 (t) + 4π 2 y(t) = −2e−t y(0) = 0 y(1) = e−1 , 2 cuja solução exata é dada por y(t) = te−t cos(2πt). 4 2t3 + t cos(2πt) + 2π sin(2πt) (4) Atividade 03 No século XIX, o matemático A. Cayley publicou artigos sobre o método de Newton para encontrar os zeros de uma função complexa. Ele tentou dividir o plano em regiões tal que, dada uma aproximação incial z0 , o método convergisse para uma determinada raiz da equação considerada. Ele conseguiu determinar as regiões para uma classe específica de funções (da forma f (z) = z 2 − c), porém não obteve sucesso para outras funções, em decorrência dos cálculos de grande complexidade pra época. Já no início do século XX, outros dois autores se dedicaram ao problema, G. Julia e P. Fatou, provando que, dependendo da função considerada, existem sequências que convergem, outras que divergem ou então tem um comportamento periódico. Atualmente, é conhecido que o método de Newton, quando aplicado a algumas funções complexas pode ter um comportamento fractal. Boas referências para este tópico podem ser encontradas em [4, 6, 11]. Note ainda que, aplicar o método de Newton em uma função com uma variável complexa é equivalente a aplicar o método de Newton para resolver um sistema não linear, de duas variáveis (verifique!). Para o conjunto de funções abaixo faça o que se pede nos itens a seguir • Encontre a solução do sistema não linear usando o software de sua preferência; • Escolha um retângulo no plano que contenha algumas raízes do sistema; • Discretize esse retângulo em uma malha m × n (podendo ter m = n); • Escreva um algoritmo em alguma linguagem de programação para resolver um sistema não linear usando o método de Newton; • No seu programa, associe uma cor a cada raiz, ou seja, se o chute inicial convergiu para uma raiz, pinte o ponto (chute inicial) com a cor da raiz obtida. Associe também uma cor à falha do método; • Rode seu programa para todos os pontos da malha, gerando uma figura; • Se necessário, reduza o retângulo escolhido, para uma melhor visualização do fractal. Não se esqueça dos critérios de parada necessários na implementação: Um número máximo de iterações e também uma tolerância para se declarar que a raiz foi atingida. ( 2 − 2x + x3 − 3xy 2 = 0 1. −2y + 3x2 y − y 3 = 0 ( 5 x − 10x3 y 2 + 9x2 y + 5x2 + 5xy 4 − 4xy + 3x − 3y 3 − 5y 2 + 1 = 0 2. 5x4 y − 3x3 − 10x2 y 3 + 2x2 + 9xy 2 + 10xy + y 5 − 2y 2 + 3y = 0 ( sin (x) cosh (y) = 0 3. cos (x) sinh (y) = 0 Crie algum sistema de equações e tente encontrar algum fractal interessante. 5 Atividade 04 A seca que atinge o estado de São Paulo é um assunto bastante explorado pela mídia ultimamente, principalmente quando se trata dos níveis do sistema Cantareira. A intenção deste exercício é estudar um pouco o comportamento do nível do reservatório da Cantareira nos últimos anos. Diariamente é publicado no site da SABESP [1] o nível das represas, assim como o índice pluviométrico diário e os acumulados por mês. O arquivo [2] disponibiliza a data (no formado AAAAMMDD). Carregue o arquivo e faça um gráfico dos dias pelo nível do reservatório (que é dado em porcentagem). Fixe um intervalo e aplique uma transformação nos dias para que eles se encaixem no intervalo. Qual transformação você usou? a) Primeiramente, ajuste (via quadrados mínimos) uma reta aos dados tabelados e depois um polinômio de grau 4. Para cada um dos casos, responda: 1. Qual o valor do resíduo obtido? 2. Este ajuste está refletindo bem o comportamento do nível da represa? b) Proponha agora algum outra curva para o ajuste dos dados. Responda as questões acima para a curva que você escolheu. c) Note que, no ano de 2013 o nível da represa apresentou queda na maior parte do ano, e em 2014 foi feito uso de uma cota do volume morto no sistema Cantareira. Selecione do arquivo os dados a partir de 01 de janeiro de 2013 e restrinja seus dados aos dias antes do uso do volume morto. Ajuste um polinômio de grau quatro a estes dados. Se não fosse possível fazer uso do volume morto, quando o sistema ficaria com 0% de capacidade? Resolva numericamente com um método para zeros de função. Compare a data obtida com os dados, ou seja, subtraia a porcentagem adicionada (correspondente à primeira cota do volume morto) e encontre o dia que a capacidade zeraria. d) Pegue os dados a partir da data em que foi acionada a segunda cota do volume morto (segundo “salto” dos dados). Ajuste os dados por uma reta (sempre no sentido de Quadrados Mínimos) e encontre a data em que a represa atingiria a capacidade de 0%. 6 Atividade 05 Considere uma barra homogênea de comprimento L, de forma que a largura da barra seja desprezível com relação ao seu comprimento. Seja u(x, t) uma função que descreve a temperatura do ponto x ∈ [0, L] no instante t > 0. Se colocarmos uma fonte de calor no ponto x = 0, como deve se comportar a temperatura na barra com o passar do tempo? Ou então, considerando que existe uma função que descreve a temperatura da barra em um tempo inicial, com ou sem fonte de calor, como se comporta a temperatura em relação ao tempo? O problema proposto acima pode ser modelado como uma equação diferencial. Entretanto, temos mais de uma variável, e assim temos um problema de uma Equação Diferencial Parcial, pois queremos avaliar o comportamento da função u(x, t) tanto em relação ao tempo quanto ao espaço. Pode ser demonstrado que a função u(x, t) deve ser solução da seguinte equação diferencial ∂ 2u ∂u (x, t) = γ 2 (x, t) + ψ(x, t), ∂t ∂x (5) onde γ é o coeficiente de condução de calor e ψ(x, t) é uma função que representa a fonte de calor. Além disso, devemos impor condições iniciais e de contorno sobre o problema. u(x, 0) = f (x) u(0, t) = p(t) u(L, t) = q(t). Este tipo de condição inicial dado é chamado de Condição de Dirichlet. Se, por exemplo, um dos lados da barra estiver isolado e não conduzir calor, trocarmos a condição de contorno correspondente por uma condição do tipo ux (x, t) = 0 (ux é a derivada de u(x, t) com relação a x), chamada de Condição de Neumann. Uma maneira simples de se resolver problemas deste tipo é usando um esquema de diferenças finitas, fazendo discretizações no tempo e no espaço [7]. Para isto, use u(xi , tn ) ≈ uni . 1. Aproxime, usando diferenças finitas, as derivadas temporal e espacial do problema, utilizando: • diferenças avançadas no tempo. • diferenças atrasadas no tempo. Solução: • Para aproximar a derivada temporal usando diferenças avançadas, fazemos uj+1 − uji i , ut (xi , tj ) ≈ k (6) onde k é o passo associado à variável temporal, e j = 0, 1, . . . . Agora, a derivada espacial será sempre aproximada por uji+1 − 2uji + uji−1 uxx (xi , tj ) ≈ , h2 onde h é tal que xı = ıh, para ı = 0, 1, . . . , m, sendo m um inteiro positivo. Assim, podemos substituir (7) e (6) em (5) e obter uj − 2uji + uji−1 uj+1 − uji i = γ i+1 + ψij . k h2 7 (7) Podemos, então, explicitar uj+1 em termo das outras variáveis, encontrando i uj+1 i = k k 1 − 2 2 γ uji + γ 2 (uji+1 + uji−1 ) + kψij , i = 1, . . . , m, j > 0 h h (8) • Para aproximar a derivada temporal usando diferenças atrasadas, fazemos ut (xi , tj ) ≈ uji − uj−1 i , k (9) Substituindo (7) e (9) em (5), temos uj − 2uji + uji−1 uji − uj−1 i = γ i+1 + ψij . k h2 Podemos, então, isolar uij−1 e escrevê-la em termo das outras variáveis, encontrando uij−1 + kψij k j k k = −γ 2 ui−1 + 1 + 2 2 γ uji − γ 2 uji+1 , i = 1, . . . , m, j > 0 h h h (10) Note que, pelo primeiro método (chamado de método explícito), conhecidas as aproximações uji para j fixo, podemos obter facilmente as aproximações para o passo de tempo seguinte (uj+1 ). Já pelo segundo método i (chamado de método implícito), se conhecemos uj−1 , precisamos resolver um sistema linear para obter uji . i 2. Escreva as condições inicial e de contorno de Dirichlet em termos da sua discretização. Solução: A condição incial nos dá que u(x, 0) = f (x), ou seja, u0i = f (xi ), i = 0, . . . , m. Assim, dado um valor para h = L/m, temos um vetor inicial u0 , cuja componente i é o valor uji , de dimensão m − 1. Note ainda que, a medida que h → 0, temos que m → ∞ e portanto todos os pontos do intervalo [0, L] tendem a ser atingidos. Para as condições de contorno (do tipo Dirichlet), temos que uj0 = p(tj ) e ujm = q(tj ). 3. Escreva as equações obtidas na forma matricial. Solução: Para o primeiro caso, quando temos um esquema explícito, não obtemos um sistema linear. Conseguimos representar o vetor uj+1 como a seguinte equação matricial uj+1 = Auj + kψ j , onde A é a matriz 1 − 2λ λ 0 ··· λ 1 − 2λ λ 0 0 λ 1 − 2λ λ A= .. .. .. .. . . . . 0 0 ··· 0 (11) ··· ··· ··· .. . 0 0 0 .. . λ 1 − 2λ , e λ = γk/h2 . Para que este método seja estável a seguinte relação deve ser satisfeita (veja em [3]): γ 1 k < . 2 h 2 Agora, para o segundo caso, temos que resolver um sistema linear, cuja forma matricial é dada por 8 Auj = uj−1 + kf j , onde A é a matriz 1 + 2λ −λ 0 ··· −λ 1 + 2λ −λ 0 0 −λ 1 + 2λ −λ A= .. .. .. .. . . . . 0 0 ··· 0 (12) ··· ··· ··· .. . 0 0 0 .. . −λ 1 + 2λ , j +λq j )> . Este segundo método tem a vantagem de ser incondicionalmente e f j = (ψ1j +λpj , ψ2j , . . . , ψm−1 estável (veja [3]). Aplique cada um dos métodos descritos acima para resolver numericamente o seguinte problema do calor: ∂u ∂ 2u (x, t) = (x, t) + 2 ∂t ∂x2 u(x, 0) = sin (πx) + x(1 − x) u(0, t) = 0 u(1, t) = 0 x ∈ [0, 1]. a) Para o método explícito, dado h = 10−2 , use dois valores para k: um tal que a condição de estabilidade seja satisfeito e outro em que não seja. b) Para o método implícito, use h = 10−3 e k = 10−3 , e resolva o sistema linear usando um método direto (fatoração LU ou uma variante que aproveite a estrutura da matriz) e algum método iterativo (Gauss-Seidel, por exemplo). Compare os resultados obtidos. Para cada um dos itens, grafique a solução para alguns valores de tempo. 9 1.4 1.4 1.2 1.2 1.0 1.0 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0.0 0.2 0.4 0.6 0.8 1.0 0.0 (a) Solução para t = 0 s 1.4 1.2 1.2 1.0 1.0 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0.2 0.4 0.6 0.8 1.0 0.0 (c) Solução para t = 0.1 s 1.4 1.2 1.2 1.0 1.0 0.8 0.8 0.6 0.6 0.4 0.4 0.2 0.2 0.2 0.4 0.6 0.8 0.6 0.8 1.0 0.2 0.4 0.6 0.8 1.0 (d) Solução para t = 0.2 s 1.4 0.0 0.4 (b) Solução para t = 0.03 s 1.4 0.0 0.2 1.0 0.0 (e) Solução para t = 0.5 s 0.2 0.4 0.6 0.8 (f) Solução para t = 1 s 10 1.0 Referências [1] http://www2.sabesp.com.br/mananciais/DivulgacaoSiteSabesp.aspx. último acesso em 28-012015. [2] http://www.ime.unicamp.br/~ms211-cursao/exercicios. último acesso em 25-02-2015. [3] M. C. C. Cunha, Métodos Numéricos, Editora da Unicamp, 2000. [4] A. L. S. da Cunha Freitas, Um estudo do método de newton fractal para resolução de equações, Revista da Graduação, 4 (2011). [5] G. Dahlquist and A. Björk, Numerical Methods, Prentice-Hall, Englewood Cliffs, NJ, 1974. [6] L. T. dos Santos, Sistemas não lineares e fractais, Matemática Universitária, 15 (1993), pp. 102–116. [7] R. J. LeVeque, Finite difference methods for ordinary and partial differential equations: steady-state and time-dependent problems, Siam, 2007. [8] P. M. Prenter, Splines and Variational Methods, A Wiley-Interscience Publication, New York, 1989. [9] M. A. G. Ruggiero and V. L. d. R. Lopes, Cálculo numérico: aspectos teóricos e computacionais, Makron Books do Brasil, 1997. [10] M. H. Schultz, Spline analysis, Prentice-Hall Englewood Cliffs, NJ, 1973. [11] S. Tatham. http://www.chiark.greenend.org.uk/~sgtatham/newton/. último acesso em 04-02-2015. 11