Mecânica Elementar com Python

Resenha 

Há um livro da editora Springer, que adquiri o PDF dele numa liberação de download que a editora fez no período da pandemia do COVID, chamado "Elementary Mechanics Using PythonAnders Malthe-Sørenssen". A proposta do livro é ensinar os fundamentos de física 1 (mecânica elementar) ao mesmo tempo que ensina Python.

Disponível apenas em inglês (a princípio), o livro foi desenvolvido como um livro texto para o curso "Introdução a Mecânica" na Universidade de Oslo em 2007. Por esse motivo do ano, ele é escrito em Python 2, algumas alterações sutis nos scripts apresentados devem ser feitos para passar para Python 3. Algumas ferramentas foram descontinuadas nessa transição do Python, como "Hold" veja mais.

O grande trunfo do livro é reunir no mesmo material técnicas analíticas e numéricas, dois livros em um. Além disso ele explica o porque do uso das técnicas utilizadas, como a vetorização em cálculos com loop. Servindo tanto pra alguém que apenas quer aprender física 1, ou Python com enfoque científico. Por fim, ao final do livro há um apêndice com as solução das questões. No restante desta publicação mostrarei como eu resolvi algumas questões interessantes, bem como alguns exemplos.

Cap. 2 - Começando a programar

A partir de agora, nas soluções exemplos apresentados, a importação de:
  • import numpy as np
  • import matplotlib.pyplot as plt 
  • import math
Estarei utilizando o Jupyter.

Ex. 2.3 - Ângulo

Neste exercício ele pede pra escrever uma função que ao fornecer dois pontos, dê o ângulo entre eles, o que eu quero mostrar aqui é uma maneira de fazer um loop que percorra duas variáveis de uma função de duas variáveis ao mesmo tempo, Isso pode ser feito facilmente ao criar uma lista de listas, com i[0] retornando em um loop os valores correspondentes a coordenada do eixo x, e i[1] correspondendo a coordenada do eixo y.

Para calcular a função arco tangente em Python, devemos fazê-la com o uso da biblioteca math, com math.atan(x,y). Pessoalmente, depois que entendi o loop for o uso sempre que possível, ele é útil e tem uma sintaxe mais compactada que o loop while, principalmente quando sabemos onde começa e termina nossos valores, que é o caso de uma lista. Esse script pode ainda ser mais compactado ainda, lx e ly não precisariam ser declarados, bastaria colocar o i[0] e i[1] na chamada da função angulo dentro do print.

Mas tá meio estranho né, dificil de visualizar, de fazer uma relação lógica entre a expressão matemática e o código. Bem pra ficar mais fácil de "ver", podemos compactar a nossa lista uma a funcionalidade zip. Dessa forma:

li = [1, -1, -1, 1]
lj = [1, -1, -1, -1]
for i,j in zip(li, lj):
    print(angulo(i,j))

Por fim, sobre a escrita do texto ali em modo matemático, basta trocar no Jupyter, ali ao lado de run,  de Code para Markdown e utilizar tags html, como <h2></h2> para seções, <br> para quebra de linha e para expressão matemática, escrevemos ela em LaTex entre $, por exemplo para a letra grega theta, fazemos $\theta$.

Comentários

Postagens mais visitadas deste blog

Animações gráficas com Python (Manim)