Métodos Numéricos

Introdução

Quando estudamos calculo na universidade, vemos diversos conceitos novos e aplicáveis no dia a dia. Desde aplicações em problemas simples de física até em problemas avançados como mecânica dos fluidos.

Contudo, fazemos diversas hipóteses para resolver os problemas, tais como considerar que as funções que trabalhamos são funções compostas de funções simples ou assumir que EDOs são de coeficientes constantes e de que EDOs são lineares, o que na maioria das vezes não é verdade. Tais hipóteses frequentemente não são boas para os nossos problemas e abrimos mão de obtermos uma solução analítica(seja porque é dificil, seja porque é impossível) e aceitamos ter valores aproximados.

Para isso serve Calculo Numérico: Utilizar os conceitos aprendidos em Calculo e aplicar em algoritmos que resolvam e achem soluções para os problemas, mesmo que aproximadas. Devido aos métodos serem aplicáveis no computador, existem erros envolvidos(aproximação numérica e truncamento devido ao hardware) e quanto mais precisão ser necessária, maior o custo computacional.

Devido à necessidade de aumentar a precisão implicar em aumentar o custo computacional, melhorar os algoritmos para que não aumente tanto o custo computacional é uma boa ideia e devido a isso existe uma grande teoria matemática que envolve o Calculo Numérico. Estudando esses algoritmos e analisando os erros envolvidos é possível escolher o melhor para cada aplicação.

Os livros de Calculo Numérico normalmente apresentam os algoritmos em pseudocódigos ou em Fortran: uma linguagem pouca utilizada atualmente embora seja muito eficiente para calculo numérico. Por estarmos lidando com algoritmos para fins didáticos, optou-se por uma linguagem de sintaxe simples(Fortran não é simples) e então foi escolhida a linguagem Python em que prioriza a legibilidade do código sobre a velocidade ou expressividade.

Não é objetivo desse wiki conter toda a teoria de como os algoritmos são constuidos, suas falhas ou como melhorar, pois esse é o objetivo do livro e caso seja isso a sua necessidade, procure um. O livro que explica muitos dos algoritmos aqui presentes será o livro Análise Numérica de Richard L. Burden e J. Douglas Faires. No repositório e dentro de cada pasta contém READMEs que explicam apenas a organização das pastas e informam pouco sobre os algoritmos, pois o necessário de utilização está contido neste wiki.