Cálculo Numérico Do Movimento-2024

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 4

Cálculo Numérico do Movimento

Em Dinâmica, o movimento é regido pela 2ª lei de Newton (vamos assumir unidimensional)

𝐹𝑅 = 𝑚. 𝑎,

onde 𝑚 é a massa, 𝑎 a aceleração e 𝐹𝑅 a força resultante. Esta pode ser função da posição 𝑥, da velocidade 𝑣 e
do tempo 𝑡, ou seja, 𝐹𝑅 = 𝐹𝑅 (𝑥, 𝑣, 𝑡). Por integração, obtemos a velocidade e posição:
𝐹𝑅 𝑑𝑣 𝑡
𝑎= 𝑚
= 𝑑𝑡
→ 𝑣 𝑡 = 𝑣0 + 𝑜
𝑎 𝑡 𝑑𝑡,

𝑡
𝑑𝑥
𝑣= → 𝑥 𝑡 = 𝑥0 + 𝑣 𝑡 𝑑𝑡 .
𝑑𝑡 𝑜

Com isto, deve-se ser capaz de, sabendo-se 𝐹𝑅 (𝑥, 𝑣, 𝑡) e as condições iniciais do problema (𝑥 e 𝑣 em 𝑡 = 0),
calcular toda a evolução temporal 𝑥(𝑡) e 𝑣(𝑡). Faremos isto numericamente.

Procedimento numérico
Vamos discretizar o tempo

𝑡 → 𝑡𝑗 = 𝑗. Δ𝑡, 𝑗 = 0, 1, 2 … . 𝑁

e igualmente as grandezas calculadas nestes instantes,

𝑎 𝑡 → 𝑎𝑗

𝑣 𝑡 → 𝑣𝑗

𝑥 𝑡 → 𝑥𝑗 .

Iremos propagar estas variáveis de um instante 𝑗 a um instante posterior 𝑗 + 1. Assuma que no instante 𝑗
sabemos a posição 𝑥, então
𝑡 𝑡 𝑗 +Δ𝑡
𝑥 𝑡 = 𝑥0 + 𝑣 𝑡 𝑑𝑡 → 𝑥𝑗 +1 = 𝑥𝑗 + 𝑣 𝑡 𝑑𝑡 .
𝑜 𝑡𝑗

Esta integral, para Δ𝑡 pequeno, pode ser dada pela área do gráfico de 𝑣 𝑡 entre 𝑡𝑗 e 𝑡𝑗 + Δ𝑡. Assumindo que
esta área é aproximadamente um trapézio de base Δ𝑡, podemos usar a altura média do trapézio como
Δ𝑡
𝑣(𝑡𝑗 + ), logo
2

Δ𝑡
𝑥𝑗 +1 = 𝑥𝑗 + 𝑣 𝑡𝑗 + Δ𝑡.
2

Note que a posição posterior 𝑥𝑗 +1 depende da posição anterior 𝑥𝑗 e da velocidade intermediária (calculada em
Δ𝑡
𝑡𝑗 + 2
, como na figura).
Δ𝑡
Precisamos, agora, determinar esta velocidade intermediária 𝑣(𝑡𝑗 + 2
). Isto é feito usando-se a aceleração
𝐹𝑅 𝑑𝑣
𝑎= 𝑚
= 𝑑𝑡
. Numericamente, a derivada de uma função num ponto 𝑗 pode ser feita pela inclinação da reta
tangente usando ou o ponto anterior 𝑗 − 1, ou o posterior 𝑗 + 1. Porém, é mais preciso usar a média entre as
inclinações calculadas entre esses pontos, ou seja,

𝑑𝑣(𝑡) 1 𝑣𝑗 − 𝑣𝑗 −1 𝑣𝑗 +1 − 𝑣𝑗 𝑣𝑗 +1 − 𝑣𝑗 −1
𝑎𝑗 = ≅ + = ,
𝑑𝑡 2 Δ𝑡 Δ𝑡 2Δ𝑡

→ 𝑣𝑗 +1 = 𝑣𝑗 −1 + 𝑎𝑗 . 2 Δ𝑡.

Δ𝑡
Como precisamos de 𝑣(𝑡𝑗 + 2
), vamos fazer a substituição Δ𝑡 → Δ𝑡/2 na expressão acima. Antes, veja que
esta equação é, na verdade,
Δ𝑡→Δ𝑡/2 Δ𝑡 Δ𝑡
𝑣 𝑡 + Δ𝑡 = 𝑣 𝑡 − Δ𝑡 + 𝑎 𝑡 . 2 Δ𝑡 𝑣 𝑡+ =𝑣 𝑡− + 𝑎 𝑡 . Δ𝑡 .
2 2

Logo,

Δ𝑡
𝑣𝑗 +1 ≡ 𝑣 𝑡𝑗 + ≅ 𝑣𝑗 + 𝑎𝑗 Δ𝑡 .
2
Δ𝑡
Note que as velocidades {𝑣𝑗 } são todas calculadas nos instantes intermediários { 𝑡𝑗 + 2
}.

Precisamos agora saber a aceleração 𝑎 𝑡 = 𝑎𝑗 . Esta vem da 2ª lei de Newton calculada para a posição 𝑥𝑗 e a
Δ𝑡
velocidade (intermediária) anterior 𝑣𝑗 ≡ 𝑣(𝑡𝑗 − 2
),

𝐹𝑅 𝑥𝑗 , 𝑣𝑗 , 𝑡𝑗
𝑎𝑗 = .
𝑚

Lógica de programação

- Definimos os parâmetros: 𝑚 , Δ𝑡

- Discretizamos o tempo: 𝑡𝑗 = 𝑗. Δ𝑡

- Definimos as condições iniciais: 𝑥 0 = 𝑥0 , 𝑣 0 = 𝑣0 .

- Calculamos a aceleração inicial:


𝐹𝑅 𝑥0 , 𝑣0 , 0
𝑎 0 = 𝑎0 =
𝑚

- Calculamos a nova velocidade :

Δ𝑡
Note que 𝑣𝑗 +1 ≡ 𝑣 𝑡𝑗 + 2
= 𝑣𝑗 + 𝑎𝑗 Δ𝑡 é válida para o avanço de 1Δ𝑡. No entanto, no primeiro
incremento de tempo, vamos avançar apenas Δ𝑡/2. Assim,

Δ𝑡 Δt
𝑣1 ≡ 𝑣 = 𝑣0 + 𝑎0
2 2

- Calculamos a nova posição :

𝑥1 = 𝑥0 + 𝑣1 Δ𝑡
- Recalculamos a aceleração:

𝐹𝑅 𝑥1 , 𝑣1 , 𝑡1
𝑎1 =
𝑚

-Repetimos tudo para 𝑗 = 2, . . . 𝑁

Δ𝑡
𝑣𝑗 ≡ 𝑣 𝑡𝑗 + = 𝑣𝑗 −1 + 𝑎𝑗 −1 Δ𝑡 (agora usando 1Δ𝑡 e não mais Δ𝑡/2)
2

𝑥𝑗 = 𝑥𝑗 −1 + 𝑣𝑗 Δ𝑡

𝐹𝑅 𝑥𝑗 , 𝑣𝑗 , 𝑡𝑗
𝑎𝑗 =
𝑚

Lógica - Implementação numa planilha de Excel

𝑗 𝑡𝑗 𝑥𝑗 𝑣𝑗 𝑎𝑗
0 0 𝑥0 (𝑒𝑛𝑡𝑟𝑎𝑑𝑎) 𝑣0 (𝑒𝑛𝑡𝑟𝑎𝑑𝑎) 𝐹𝑅 𝑥0 , 𝑣0 , 0
𝑎0 =
𝑚
(calculado)
1 Δ𝑡 𝑥1 = 𝑥0 + 𝑣1 Δ𝑡 Δt 𝐹𝑅 𝑥1 , 𝑣1 , 𝑡1
𝑣1 = 𝑣0 + 𝑎0 𝑎1 =
2 𝑚
No Excel,
selecionar a 2 2Δ𝑡 𝑥2 = 𝑥1 + 𝑣2 Δ𝑡 𝑣2 = 𝑣1 + 𝑎1 Δt 𝐹𝑅 𝑥2 , 𝑣2 , 𝑡2
𝑎2 =
linha e 𝑚
“puxar”

j 𝑗Δ𝑡 𝑥𝑗 = 𝑥𝑗 −1 + 𝑣𝑗 Δ𝑡 𝑣𝑗 = 𝑣𝑗 −1 + 𝑎𝑗 −1 Δ𝑡 𝐹𝑅 𝑥𝑗 , 𝑣𝑗 , 𝑡𝑗
𝑎𝑗 =
𝑚

Exemplo EXCEL – vide classroom – planilha fornecida

Exemplo – usando Python: Sistema massa-mola


# exemplo - Diâmica do movimento - PYTHON
# exemplo - força elástica F= -k x = m a -------

import numpy as np #importar biblioteca de vetores/matrizes


#import math #importar biblioteca de funções (não usada aqui)
import matplotlib.pyplot as plt #importar biblioteca de gráficos

nt = 10000 # número de intervalos de tempo


dt = 0.001 # Delta_t (s)
m = 1. # massa (kg)
k = 10. # const elástica (N/m)
km = k/m

# -------------- criando e zerando vetores


t = np.zeros(nt) # tempo discretizado
x = np.zeros(nt) # posição
v = np.zeros(nt) # velocidade
a = np.zeros(nt) # aceleração

#----------------- condições iniciais (t=0)


t[0] = 0.
x[0] = 0.5
v[0] = 0.
a[0] = - km * x[0]
# ----------------- evolução temporal ----
for it in range (1,nt): # (1,nt)=python: 1, 2,... nt-1.
t[it] = it * dt
if it == 1:
v[it] = v[it-1] + 0.5 * dt * a[it-1] # primeira interação (Dt/2)
else:
v[it] = v[it-1] + dt * a[it-1] # interações subsequentes (Dt)

x[it] = x[it-1] + v[it] * dt


a[it] = - km * x[it]
#--------- final da evolução ----------

# --- Resultados: gráficos ------


# setting a style to use
plt.style.use('fivethirtyeight')

# create a figure
fig = plt.figure()

# define subplots and their positions in figure


plt1 = fig.add_subplot(211) # (2,1…): 2= 2 linhas; 1= 1 coluna
plt2 = fig.add_subplot(212)

plt1.plot(t, x, color ='r')


plt1.set_title('$posição$')

# setting the labels


plt1.set_xlabel('tempo (s)')
plt1.set_ylabel('x (m)')

plt2.plot(t, v, color ='b')


plt2.set_title('$velocidade$')

# setting the labels


plt2.set_xlabel('tempo (s)')
plt2.set_ylabel('v (m/s)')

# adjusting space between subplots


plt.subplots_adjust(hspace=0.5)

# function to show the plot


plt.show()
#_______________________________________

Resultado:

Você também pode gostar