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
- Professor: Saulo Bortolon