Ementa:
Erros. Soluções de equações algébricas e transcendentes. Resolução de sistemas de equações lineares. Integração numérica. Interpolação. Ajuste de curvas. Métodos numéricos para solução de equações diferenciais.

Objetivos Específicos:
Estudar e implementar algoritmos numéricos para solucionar problemas, modelados matematicamente, nas mais diversas áreas do conhecimento humano.


Conteúdo Programático:

A) INTRODUÇÃO (8 horas)

 - Modelagem Matemática e Resolução de Problemas de Engenharia

 - Programação e Software: Planilhas, Octave, Python (Numpy/Scipy), C++ (Eigen)

 - Aproximações e Erros de Arredondamento: algarismos significativos; exatidão e precisão; definições de erros; 

 - Representação numérica:  representação em base binária; transformação binário-decimal e decimal-binário; representação em ponto flutuante; padrão IEEE 754 (2008), representação em ponto-fixo, arredondamento estocástico, 

 - Erros de truncamento e séries de Taylor: série de Taylor; propagação de Erros; Erro numérico total; enganos, erros de formulação e incerteza nos dados


B)  SOLUÇÃO DE SISTEMAS DE EQUAÇÕES  (10 horas)

- Equações Não-Lineares: Métodos Gráficos;  Método da Bisecção;  Método de Newton-Raphson; Raízes Múltiplas;  Sistemas de Equações Não Lineares.  Implementação em planilhas e em Python; Exemplos de problemas e soluções; Estudos de caso


- Equações Lineares: Eliminação de Gauss Ingênua; Armadilhas nos Métodos de Eliminação; Técnicas para Melhorar Soluções; Decomposição LU;  A Matriz Inversa; Análise de Erro e Condicionamento do Sistema; Matrizes Especiais;  Gauss-Seidel; Autovalores e autovetores; Implementação usando Scipy e Eigen ; Exemplos de problemas e soluções; Estudos de Casos

==== PROVA 1 : 2 HORAS =========== 



C) AJUSTES DE CURVAS (12 horas)

- Regressão por Mínimos Quadrados (MQ): Regressão Linear (incluindo linearização de regressões não-lineares);  Regressão Polinomial;  MQ com pesos; MQ recursivo; MQ total.


- Interpolação: interpolação linear, quadrática e polinomial; diferenças divididas de Newton; polinômios interpoladores de Lagrange; interpolação por splines cúbicos;  Filtro Savitsky-Golay; Interpolação usando funções de base radiais (RBF). 


- Implementação em planilhas, Python e Scipy; Exemplos de problemas e soluções;


D) INTEGRAÇÃO E DERIVAÇÃO NUMÉRICAS (8 horas)

- Fórmulas de Integração de Newton-Cotes: regras do trapézio, de 1/3 de Simpson e de 3/8 de Simpson;  integrais múltiplas, Integração por Monte-Carlo

- Derivação Numérica com fórmulas de alta acurácia (fórmulas progressivas, regressivas, assimétricas e centrada usando 5 pontos); 

- Implementação em planilhas, Octave; Exemplos de problemas e soluções; Estudos de casos


E) EQUAÇÕES DIFERENCIAIS ORDINÁRIAS (10 horas)

- Métodos de Runge-Kutta: Métodos de Euler, Heun, do Ponto Médio, de 4a Ordem Clássico; RK em sistemas de equações diferenciais e em equações diferenciais de ordem superior; RK adaptativo

- Métodos gerais para problemas de contorno: diferenças finitas

- Implementação em planilhas e em Octave; Exemplos de problemas e soluções;

- Estudos de casos: problemas predador-presa; deformação elástica em vigas apoiadas/engastadas.


=========== PROVA 2 === 2 HORAS 


F) EQUAÇÕES DIFERENCIAIS PARCIAIS (8 horas)

 - Método das Diferenças Finitas para solução de Equações Elípticas; Equação de Laplace; Técnicas de Solução (stencil uni, bi e tridimensional); Condições de Contorno. Deformação de lajes.

- Método das Diferenças Finitas para solução de Equações Parabólicas; Equação de Condução de Calor; Método implícito simples; Método de Crank-Nicolson; Equações parabólicas em duas dimensões espaciais;



=============================================================================================

METODOLOGIA

O conteúdo programático é dividido em 6 unidades (A-F), cada uma delas incluindo aulas expositivas de teoria e exercícios, baseando-se em capítulos dos livros-texto e em artigos científicos, com resolução de problemas-exemplo através de planilhas openOffice Calc e programas Python e/ou C++. 

 

A) Aula expositiva teórica

   Será apresentado o conteúdo de partes do livro-texto (Chapra & Canale), adicionando-se eventualmente algum material extra dos livros de  H.P.Langtangen & S.Linge (implementações Octave e Python) e estudo de código nestas linguagens. Problemas serão resolvidos em sala de aula utilizando-se planilha,  Octave e Python. Cada problema proposto será lido, modelado matematicamente e implementado.


 B) Trabalhos Computacionais

 Três trabalhos computacionais, a serem desenvolvidos em grupos de até 3 alunos, serão disponibilizados no início do semestre letivo e devem ser entregues ao professor através do email bortolon@inf.ufes.br.

============================================================================

A nota será calculada pela seguinte fórmula:


  MP =   0,7  * ( média de 2 provas parciais )

            + 0,3 * ( média dos 3 trabalhos computacionais )


   Caso MP < 7,00, o aluno deverá fazer a Prova Final (PF). A Média Final (MF) será calculada assim: 

   

  MF = (MP + PF ) / 2


O aluno é aprovado se MP >= 7,00 ou se MF > 5.0.

O aluno é reprovado por nota se MP < 7,00 e MF < 5.0.

================================================================

Bibliografia Básica

CHAPRA, Steven C.; CANALE, Raymond P. Métodos numéricos para engenharia. 5. ed. São Paulo: McGraw-Hill, 2008.

CAMPOS, Frederico Ferreira. Algoritmos numéricos. 2. ed. Rio de Janeiro: LTC, 2007

RUGGIERO, Márcia A. Gomes; LOPES, Vera Lúcia da Rocha. Cálculo numérico: aspectos teóricos e computacionais. 2. ed. São Paulo: Pearson Education do Brasil, 2013


Bibliografia Complementar
FRANCO, Neide Maria Bertoldi. Cálculo numérico. São Paulo: Pearson Prentice Hall, 2007

CUNHA, M. Cristina C. Métodos numéricos. 2. ed. rev. e ampl. - Campinas: Ed. da Unicamp, 2003

KIUSALAAS, Jaan. Numerical methods in engineering with MATLAB. Cambridge, [England]; New York: Cambridge University Press, 2005.

DALCIDIO, Moraes Cláudio.; MARTINS, Jussara Maria. Cálculo Numérico. Editora Atlas. 1994

SPERANDIO, Décio; MENDES, João Teixeira; SILVA, Luiz Henry Monken e. Cálculo numérico: características matemáticas e computacionais dos métodos numéricos. São Paulo: Pearson Prentice Hall, 2003


Observações: 


Nos últimos anos, um conjunto de excelentes livros, publicados dentro de variadas licenças Creative Commons

Em português,  por exemplo, são úteis aos cursos de Programação / Algoritmos Numéricos capítulos  e seções dos seguintes livros:


- SEIFFERT, Gabriel Pamplona; CHIQUETTI, Renata . ÁVILA, Sérgio Luciano. Cálculo numérico aplicado à engenharia elétrica com PYTHON. Florianópolis: Publicações do IFSC, 2021.disp. em https://bit.ly/3RzgE85 

ou em https://github.com/PECCE-IFSC/CALCULO_NUMERICO_PYTHON . Licença CC-BY-ND.


- JUSTO, Dagoberto Adriano Rizzoto et al. Cálculo Numérico: Um livro colaborativo. Universidade Federal do Rio Grande do Sul, 2017..  Disp. em https://www.ufrgs.br/reamat/CalculoNumerico/livro-py/main.html ou em  https://github.com/reamat/CalculoNumerico. Licença CC-BY-SA.


- DOWNEY, Allen B.; EM PYTHON, Pense. pense como um cientista da computação. São Paulo: Novatec, 2016.  https://penseallen.github.io/PensePython2e/ . Licença CC-NC 


- GSEVERANCE, Charles R. Python para todos. 2011. Disponível em https://bit.ly/3dcQGbA. Licença CC-BY-NC-SA. 


- KONZEN, Pedro HA. Minicurso de Python para Matemática. 2022. Disponível em https://bit.ly/3RD67sF . Licença CC-BY-SA


Além dos livros, também com licença CC-BY-SA, são muito úteis os Jupyter Notebooks como ferramenta de aprendizagem. Em língua portuguesa recomendam-se os seguintes Notebooks:


- MENDONÇA, Melissa Weber. CALLICORE: A Classroom-oriented open programming curriculum for math teachers. 2019.  Disponível em https://bit.ly/3DeJuXh 

  Nota: este curso destina-se principalmente à formação em programação Python para professores de

  matemática para alunos do ensino médio.


-  SCHUCH, Felipe N. Dinâmica dos Fluidos Computacional com Python. 2019. Original por Barba, Lorena A., and Forsyth, Gilbert F. (2018). CFD Python: the 12 steps to Navier-Stokes equations. Journal of Open Source Education, 1(9), 21, https://doi.org/10.21105/jose.00021. Notebook disponível em https://github.com/fschuch/CFDPython-BR 


Já na língua inglesa há várias opções de livros com licenças Creative Commons sobre Python (ou sobre Computação Científica usando Python). Por exemplo, é mantida uma página a respeito de tais livros na web em https://bit.ly/3eFTHBI. 


Particularmente, os de autoria do Prof. Langtangen (ver biografia em https://bit.ly/3d7noLG ) assim como os livros derivados a partir dos dele, todos com licença CC-BY-SA, têm capítulos / seções que serão aproveitados ao longo do curso:


-  LINGE, Svein; LANGTANGEN, Hans Petter. Programming for Computations-Python: A Gentle Introduction to Numerical Simulations with Python 3.6. Springer Nature, 2020.  https://library.oapen.org/handle/20.500.12657/23103 


- LINGE, Svein; LANGTANGEN, Hans Petter. PROGRAMMING FOR COMPUTATIONS-MATLAB/OCTAVE: A Gentle Introduction to Numerical Simulations... with Matlab/octave. SPRINGER, 2018. 


- SUNDNES, Joakim. Introduction to scientific programming with Python. Springer Nature, 2020. Disponível em https://bit.ly/3qAB2d6 


- LANGTANGEN, Hans Petter; LINGE, Svein. Finite difference computing with PDEs: a modern software approach. Springer Nature, 2017. https://library.oapen.org/bitstream/handle/20.500.12657/27809/1002196.pdf?sequence=1 


- LANGTANGEN, Hans Petter; MARDAL, Kent-Andre. Introduction to numerical methods for variational problems. Springer Nature, 2019. Disponível em https://bit.ly/3Djoaju 


Baseando-se neste (e em outros livros) foram construídos (ainda em língua inglesa) Jupyter notebooks que estão publicamente disponíveis também com licenças CC-BY-SA:

-  FERREETTI, Michele; READES, Jon; MILLINGTON, James.  CodeCamp 2019 Disponível em https://github.com/kingsgeocomp/code-camp 

      Code Camp' was developed as an easy introduction for geographersor anyone learning to code 

        for the first timeto the basics of programming in Python using Jupyter notebooks. 

 

        covered include: variables, operators, errors, lists, dictionaries, and functions. This should take no

        more than about 14 hours for a complete novice, making it a suitable 'summer school' type foundation

        for students who are about to embark on a fuller introduction to programming course.


- WEED, Ethan. NAVARRO, Danielle. Learning Statistics with Python. 2021. Disponível em https://ethanweed.github.io/pythonbook/landingpage.html  


 O próprio livro-texto dos autores Chapra & Canale tem disponível Python Companions distribuídos com licenças CC-BY-SA: 

   https://tbc-python.fossee.in/book-details/932/ 

https://github.com/asukumari/Numerical-Methods 


 área de  algoritmos numéricos apresenta sempre novos desenvolvimentos a cada ano. O uso de artigos científicos apresentando tutoriais  / revisões possibilita ir além dos conceitos presentes nos livros introdutórios. Também permite apresentar aplicações em áreas de conhecimento específicas:


 - Sobre derivadas numéricas:

-   LI, Jianping. General explicit difference formulas for numerical differentiation. Journal of Computational and Applied Mathematics, v. 183, n. 1, p. 29-52, 2005. Disponível em https://bit.ly/3eDlraa . (Ver seção 5 : Comparison with other finite difference approximations)


- para derivadas numéricas com várias ordens diferentes de acurácia, é possível utilizar a tabela disponível na wikipedia (https://en.wikipedia.org/wiki/Finite_difference_coefficient)

Que, por sua vez, foi retirada de Fornberg, Bengt (1988), "Generation of Finite Difference Formulas on Arbitrarily Spaced Grids", Mathematics of Computation, 51 (184): 699706, doi:10.1090/S0025-5718-1988-0935077-0, ISSN 0025-5718.



- Sobre o filtro de Savitsky-Golay: 

- SCHAFER, Ronald W. What is a Savitzky-Golay filter?[lecture notes]. IEEE Signal processing magazine, v. 28, n. 4, p. 111-117, 2011.


- Sobre Mínimos Quadrados:

NIEVERGELT, Yves. A tutorial history of least squares with applications to astronomy and geodesy. Journal of Computational and Applied Mathematics, v. 121, n. 1-2, p. 37-72, 2000. https://bit.ly/3d7Icm2 


- BOYD, Stephen; VANDENBERGHE, Lieven. Introduction to applied linear algebra: vectors, matrices, and least squares. Cambridge university press, 2018. http://vmls-book.stanford.edu/vmls.pdf 


- TEN BERGE, Jos MF. Least squares optimization in multivariate analysis. Leiden: DSWO Press, Leiden University, 1993. http://kiers.webhosting.rug.nl/leastsquaresbook.pdf 


- YOUNG, Peter C. Recursive estimation and time-series analysis: an introduction. Springer Science & Business Media, 2012.


- ZHANG, Zhengyou. Parameter estimation techniques: A tutorial with application to conic fitting. Image and vision Computing, v. 15, n. 1, p. 59-76, 1997. https://bit.ly/3KXwkjf 


- Sobre interpolação bidimensional sem grades pré-definidas:


CAMARGO, Eduardo Celso Gerbi; FUCKS, Suzana Druck; CÂMARA, Gilberto. Análise espacial de superfícies. Análise espacial de dados geográficos. Planaltina: Embrapa Cerrados, p. 79-122, 2004. Disponível em https://bit.ly/3RRE5cI 


FAZIO, Vinícius Sousa et al. Interpolação espacial: uma comparação analítica entre redes RBF e Krigagem. 2013. Disponivel em https://bit.ly/3U3Q6ha 


- Sobre Total Least Squares:

  - GOLUB, Gene H.; VAN LOAN, Charles F. An analysis of the total least squares problem. SIAM journal on numerical analysis, v. 17, n. 6



- DE GROEN, Pieter PN. An introduction to total least squares. arXiv preprint math/9805076, 1998.  https://arxiv.org/pdf/math/9805076.pdf 


- MUÑOZ, Leonardo Romero; VILLANUEVA, Moisés García; SUÁREZ, Cuauhtémoc Gómez. A tutorial on the total least squares method for fitting a straight line and a plane. Revista de Ciencia e Ingen. del Institute of Technology, Superior de Coatzacoalcos, v. 1, p. 167-173, 2014. https://bit.ly/3L2Bevf