Disciplina oferecida no Programa de Pós-Graduação em Geofísica do Observatório Nacional.
Responsável: Vanderlei C. Oliveira Jr.
Aviso Legal: O material disponibilizado neste repositório está em constante desenvolvimento e o Observatório Nacional não tem nenhuma responsabilidade sobre o seu conteúdo.
Esta página é um repositório no GitHub. Mas que raio é isso? Pois é, muita gente ao redor do mundo tem utilizado o Git e o GitHub para fazer colaborações em suas pesquisas, divulgar a pesquisa, divulgar o material desenvolvido em disciplinas, palestras, seminários, etc. AO LONGO DESTE CURSO, NÃO SERÁ COBRADO O CONHECIMENTO SOBRE Git OU GitHub. Mas, como conhecimento nunca é demais, abaixo segue uma lista de links úteis sobre Git e GitHub:
Image source: BestWebSoft
Beleza, é possível que as informações acima tenham sido completamente inúteis para este curso. Sendo assim, vamos agilizar um pouco as coisas, afinal, você não quer ficar lendo um monte de baboseiras, tal como estas duas últimas frases que você acabou de ler :P Pois bem, a ideia é que você utilize este repositório apenas como uma página que contém todo o material do curso. Dessa forma, eu coloquei logo abaixo um print screen da parte superior desta página. O objetivo é apontar o que é útil pra você no meio desse monte de coisa. Eu optei por fazer assim porque, no início, o GitHub é meio assustador. Eu coloquei números para identificar os pontos importantes e, logo abaixo da imagem, estes pontos são descritos.
-
Disciplina-metodos-computacionais é o nome deste repositório no GitHub
-
birocoles é o meu nome no GitHub
-
Arquivo onde está escrito isso que você está lendo agora. O GitHub se encarrega de deixar as coisas bonitas. Se quiser saber mais, a notação utilizada para escrever estas coisas é o Markdown.
-
Esta pasta contém os códigos a serem utilizados neste curso. No item Visualização online dos Jupyter Notebooks, apresentado abaixo, há uma descrição de como acessar o conteúdo desta pasta.
Pronto, só isso. Agora, leia o conteúdo abaixo, com atenção. Há várias informações úteis sobre a disciplina.
A primeira coisa importante aqui é entender quando usar 'porque', 'por que', 'porquê' e 'por quê'. Certamente, isso é mais díficl do que o conteúdo deste curso.
Diferentemente de C ou Fortran, a linguagem Python é interpretada. Isso significa que o código não precisa ser previamente compilado e os comandos são executados imediatamente. De acordo com a Software Carpentry, quando estamos programando, o tempo total necessário para obtermos a solução desejada é determinado por duas coisas: o tempo gasto por você para desenvolver o código e o tempo gasto pelo computador para rodar o código. Estes fatores devem ser levados em consideração no momento da escolha de uma linguagem de programação. Para fins acadêmicos de pesquisa e ensino, a linguagem Python oferece algumas vantagens, dentre as quais eu destaco o fato de ser gratuita e distribuída livremente na internet, relativamente fácil de aprender e extremamente bem documentada.
Neste curso, usaremos a distribuição Python Anaconda 3.x e os códigos serão feitos com o Jupyter Notebook. Para instalar as coisas que usaremos aqui, vá até a seção Instalação do Python e de suas dependências apresentada abaixo.
O Jupyter Notebook é um
arquivo com extensão .ipynb
e permite combinar código, texto, equações feitas
em LaTeX, figuras e animações. Além disso, é gratuito e extremamente bem
documentado. Esta poderosa ferramenta computacional possibilita reunir (quase)
todas as etapas envolvidas no desenvolvimento de um código com fins acadêmicos,
desde a leitura e processamento dos dados até a visualização dos resultados.
Os Jupyter Notebooks estão armazenados dentro do diretório Content
e podem
ser visualizados como páginas estáticas no nbviewer. Para tanto, acesse o link
abaixo:
Neste link, é possível visualizar um determinado Jupyter Notebook apenas
clicando sobre ele, sem segredo. Por exemplo, para visualizar o Jupyter
Notebook dot.ipynb
, dentro da pasta Content
, acesse o link acima e,
em seguida, clique no arquivo.
Para quem leu alguma coisa sobre GitHub, note que o conteúdo do link acima reflete o branch master. Ao longo do curso, eu costumo trabalhar em um branch separado. Geralmente, o nome deste branch é o ano em que a disciplina está sendo ministrada porque eu sou muito criativo. O conteúdo deste branch é incorporado ao master ao longo do curso.
Note que, desta forma, os Jupyter Notebooks são vistos como páginas estáticas. Para executar um determinado Jupyter Notebook, é necessário baixa-lo e instalar os programas necessários de acordo com a seção Instalação do Python e de suas dependências.
Para instalar o Python Anaconda, sugiro acessar diretamente o site do Python Anaconda.
IMPORTANTE: Usaremos o Python 3.x!
Para checar se a instalação deu certo, abra uma janela do prompt de comando,
caso você esteja no Windows, ou um terminal, se estiver no Linux. Em seguida,
Digite o comando: conda list
. Este comando mostrará uma lista de coisas que
foram instaladas pelo Anaconda. Deve aparecer algo do tipo:
A lista de pacotes continua em ordem alfabética. Note que as informações
associadas ao pacote anaconda
são 2019.03
e py36_0
.
O diretório Content
contem os tópicos abordados durante o curso.
-
Graham, L., D. E. Knuth, and O. Patashnik (1994). Concrete mathematics: a foundation for computer science, 2 ed.: Addison-Wesley Publishing Company. ISBN 0-201-55802-5
-
Shewchuk, J. R. (1994). An introduction to the Conjugate Gradient Method without the agonizing pain, 1 1/4 ed.: School of Computer Science Carnegie Mellon, University Pittsburgh, versão pdf
-
Lawson, C. L,. and Hanson, R. J. (1995). Solving least squares problems. SIAM, ISBN 0-89871-356-0
-
Kelley, C. T. Iterative methods for optimization, SIAM, 1999, versão pdf
-
Yilmaz, Öz (2001). Seismic Data Analysis: Processing, Inversion, and Interpretation of Seismic Data, 2 ed.: Society of Exploration Geophysicists. ISBN 1-56080-098-4
-
Press, W. H., Teukolsky, S. A, Vetterling, W. T. e Flannery, B. P. Numerical recipes in C: The art of scientific computing, 3rd edition, Cambridge University Press, 2007, ISBN 978-0-511-33555-6, url: http://numerical.recipes/
-
Oppenheim, A. V., and Schafer, R., W. (2010). Discrete-Time Signal Processing, 3 ed.: Pearson. ISBN 0-13-198842-5
-
Kiusalaas, J. Numerical methods in engineering with Python 3, 3rd edition, Cambridge University Press, 2013, ISBN 978-1-107-03385-6
-
Golub, G. H. and Van Loan, C. F. Matrix computations, 4th edition, Johns Hopkins University Press, 2013, ISBN 978-1-4214-0859-0
-
Menke, W. and Menke, J. Environmental Data Analysis with MATLAB, 2nd edition, Academic Press, 2016, ISBN 978-0-12-804488-9
-
Menke, W. Geophysical Data Analysis: Discrete inverse theory, 4th edition, Academic Press, 2018, ISBN 978-0-12-813555-6
-
Aster, R. C., Borchers, B., and Thurber, C. H. Parameter Estimation and Inverse Problems, 3rd edition Elsevier Academic Press, 2019, ISBN: 978-0-12-804651-7
P.S.: This list may be updated along the course.