Use o software python ou Matlab para graficar a resposta de vibração de:
Um sistema massa-mola submetido a amortecimento de Coulomb com \mathrm{m}=5 \mathrm{~kg}, \mathrm{k} =100 \mathrm{~N} / \mathrm{m}, \mu=0.5, \mathrm{x}_{0}=0.4 \mathrm{~m}, \dot{\mathrm{x}}_{0}=0.
Passo 1
Enunciado e dados (o que o problema pede e o que foi dado):
Pedem para “graficar a resposta de vibração” de um sistema massa-mola com amortecimento de Coulomb (atrito seco).
Dados numéricos fornecidos:m = 5\\ \mathrm{kg},\qquad k = 100\\ \mathrm{N/m},\qquad \mu = 0{,}5,\qquad x_0 = 0{,}4\\ \mathrm{m},\qquad \dot{x}_0 = 0.
Não foi especificado se o atrito é vertical ou horizontal; vou assumir o caso clássico horizontal onde a força de atrito de Coulomb tem magnitude F_c=\mu m g e age sempre oposta à velocidade, com g=9{,}81\\ \mathrm{m/s^2}.
Objetivo prático: produzir um gráfico x(t) (e opcionalmente \dot x(t)) usando Python ou MATLAB que mostre como o sistema se comporta com esse atrito de Coulomb.
Passo 2
Modelo físico e equação do movimento (explicando a teoria devagarinho):
O atrito de Coulomb (atrito seco) é modelado como uma força de módulo constante que se opõe ao sentido do movimento. Em forma matemática usamos a função sinal:\text{sign}(\dot x)=\begin{cases} +1, & \dot x>0,\\\\ -1, & \dot x<0,\\\ \text{indeterminado (ou 0)}, & \dot x=0. \end{cases}
A equação do movimento com atrito de Coulomb cinético (constante) ém\ddot x + k x + F_c\,\text{sign}(\dot x)=0,ondeF_c=\mu m g.Aqui:
m é a massa (kg),
k é a constante da mola (N/m),
\ddot x é a aceleração (m/s²),
x é o deslocamento (m),
F_c é a magnitude da força de atrito (N).
Há um detalhe prático importante: se a velocidade ficar nula (\dot x=0) e a força de mola |k x| for menor ou igual a F_c, então a mola não consegue vencer o atrito estático e o corpo fica “preso” (sticking). Na prática, implementações assumem que o atrito estático tem magnitude igual ou maior que F_c e que, nesse caso, \ddot x=0 e x fica constante.
Antes de sair calculando, é sempre bom checar se o sistema irá realmente oscilar ou se vai travar sem completar um ciclo.
Passo 3
Verificações iniciais (vai se mover? vai cruzar o equilíbrio?):
Primeiro calculemos F_c:F_c=\mu m g = 0{,}5\cdot 5\cdot 9{,}81 = 24{,}525\\ \mathrm{N}.
A força da mola no ponto inicial é k x_0:k x_0 = 100\cdot 0{,}4 = 40\\ \mathrm{N}.Como k x_0 = 40\\ \mathrm{N} > F_c = 24{,}525\\ \mathrm{N}, ao soltar a massa ela começa a mover-se (a mola inicialmente vence o atrito).
Mas isso não garante que a massa atravesse o ponto de equilíbrio x=0. Para saber se ela chega a x=0, compare a energia inicial com o trabalho que o atrito precisa fazer para levar a massa de x_0 até 0:
Energia potencial inicial (na posição de amplitude x_0):E_{p0}=\tfrac{1}{2}k x_0^2 = \tfrac{1}{2}\cdot 100\cdot (0{,}4)^2 = 8\\ \mathrm{J}.
Trabalho necessário contra o atrito para ir de x_0 até 0 éW_{fric}=F_c\cdot x_0 = 24{,}525\cdot 0{,}4 = 9{,}81\\ \mathrm{J}.
Como E_{p0}=8\\ \mathrm{J} < W_{fric}=9{,}81\\ \mathrm{J}, a massa NÃO tem energia suficiente para chegar a x=0. Portanto ela começa a mover-se em direção a zero, mas para antes de cruzar o equilíbrio — ou seja, não completa uma meia-oscilação.
Comentário amigo: isso é um ponto que muita gente erra na prova — olhar só para as forças instantâneas k x_0 vs F_c não basta; a energia decide se o corpo chega ao outro lado.
Passo 4
Calcular a posição final de repouso usando conservação de energia (desenvolvimento passo a passo):
Suponha que a massa parte de x_0 com velocidade zero e venha a parar em x_s (aqui 0\le x_s \le x_0, já que não chega a zero). Pelo balanço de energia:\tfrac{1}{2}k x_0^2 = \tfrac{1}{2}k x_s^2 + F_c (x_0 - x_s).O lado esquerdo é a energia potencial inicial; o lado direito é a energia potencial final mais o trabalho dissipado pelo atrito ao percorrer a distância x_0-x_s.
Reescrevendo e fatorando:x_0^2 - x_s^2 = \frac{2F_c}{k}\,(x_0 - x_s).
(x_0 - x_s)(x_0 + x_s) = \Delta (x_0 - x_s),
onde definimos
\Delta \equiv \frac{2F_c}{k}.
Se x_0 - x_s \neq 0 podemos dividir por esse fator e obterx_0 + x_s = \Delta \quad\Rightarrow\quad x_s = \Delta - x_0.(A solução x_s=x_0 corresponderia a não haver movimento; aqui não é o caso porque já verificamos que k x_0>F_c.)
Verificação final: na posição x_s a força da mola vale k x_s = 100\cdot 0{,}0905 = 9{,}05\\ \mathrm{N}, que é menor que F_c. Isso significa que, ao chegar em x_s com velocidade zero, o atrito é suficiente para impedir sentido oposto do movimento — a massa fica presa aí (sticking). Consistência confirmada.
Interpretação curta e animadora: com esses parâmetros a massa não oscila; ela sai de 0{,}4\\ \mathrm{m}, recua para 0{,}0905\\ \mathrm{m} e para (repousa).
Passo 5
Como plotar isso no Python (código pronto e explicadinho):
Vou apresentar um código Python simples que integra a equação com um passo explícito pequeno e aplica a condição de “sticking” quando |k x|\le F_c e |v| é praticamente zero. Esse método é robust para demonstrar o comportamento e gerar o gráfico x(t) e \dot x(t).
Código Python (copie e cole em um arquivo .py ou em um Jupyter Notebook):
import numpy as np
import matplotlib.pyplot as plt
# parâmetros
m = 5.0 # kg
k = 100.0 # N/m
mu = 0.5
g = 9.81 # m/s^2
Fc = mu * m * g # força de atrito de Coulomb
# condições iniciais
x0 = 0.4 # m
v0 = 0.0 # m/s
# parâmetros de integração
dt = 1e-4
Passo 6
tmax = 2.0 # tempo total para simular (2 s é mais que suficiente aqui)
nsteps = int(tmax / dt)
vetores para armazenar
t = np.linspace(0, tmax, nsteps+1)
x = np.zeros_like(t)
v = np.zeros_like(t)
condições iniciais
x[0] = x0
v[0] = v0
tol_v = 1e-6 # tolerância para considerar v ~ 0 (sticking)
for i in range(nsteps):
xi = x[i]
vi = v[i]
# verificar condição de "sticking": se a velocidade é praticamente zero
# e a força da mola é menor ou igual ao atrito, então permanece parado
if abs(vi) < tol_v and abs(k*xi) <= Fc:
x[i+1] = xi
v[i+1] = 0.0
# depois de ficar preso, permanece preso; podemos preencher o resto do vetor
x[i+1:] = xi
v[i+1:] = 0.0
break
# força de atrito (oposta ao sentido da velocidade)
if vi > 0:
F_fric = -Fc
elif vi < 0:
F_fric = +Fc
else:
# se vi==0, determinar sentido da força de atrito a partir da tendência:
# aqui assumimos que o atrito mantém sinal contrário da aceleração que forçaria movimento;
# prática comum: se a mola puxa para x<0 (force_spring<0) e sua magnitude > Fc, o movimento começa
F_spring = -k * xi
if abs(F_spring) > Fc:
F_fric = -np.sign(F_spring) * Fc
else:
F_fric = -F_spring # atrito estático cancela a força da mola (não há movimento)
x[i+1] = xi
v[i+1] = 0.0
x[i+1:] = xi
v[i+1:] = 0.0
break
# aceleração
ai = (-k*xi + F_fric) / m
# integração simples (symplectic/explicit Euler-Cromer style)
v_new = vi + ai*dt
x_new = xi + v_new*dt
x[i+1] = x_new
v[i+1] = v_new
plot
plt.figure(figsize=(8,4))
plt.plot(t, x, label=‘x(t)’)
plt.axhline(0, color=‘k’, linewidth=0.5)
plt.xlabel(‘t (s)’)
plt.ylabel(‘x (m)’)
plt.title(‘Resposta do sistema massa-mola com atrito de Coulomb’)
plt.grid(True)
plt.legend()
plt.show()
Explicação do código, passo a passo, como se eu estivesse te guiando:
- Calculamos \(F_c=\mu m g\).
- Usamos um integrador explícito simples (Euler-Cromer): atualizamos velocidade com a aceleração (que depende do atrito) e depois a posição. Esse método é estável para pequenos passos e educativo.
- A parte chave é a gestão do ponto de "sticking": se a velocidade é praticamente zero e a força da mola não consegue vencer o atrito (\(|k x| \le F_c\)), então definimos \(v=0\) e mantemos \(x\) constant daí em diante.
- O código contém uma brecha para caso \(v\) seja exatamente zero: então verificamos se a mola exerceria força suficiente para arrancar o corpo; se não, assumimos que o atrito estático cancela a força da mola e travamos a partícula.
- Para estes parâmetros você verá no gráfico que \(x(t)\) sai de \(0{,}4\\ \mathrm{m}\) e decresce até cerca de \(0{,}0905\\ \mathrm{m}\) e então fica constante (sem oscilar).
Se preferir MATLAB, posso te passar o mesmo algoritmo em m-script — é praticamente a mesma lógica (um loop com passo pequeno e a condição de sticking).
Passo 7
Interpretação final do gráfico e dicas para a prova:
Resultado qualitativo: aqui NÃO haverá oscilações sucessivas. A massa só se desloca um pouco em direção ao equilíbrio e para em x_s porque a energia inicial não é suficiente para vencer o atrito até a posição x=0.
Fórmula útil para lembrar na prova (quando há movimento apenas numa direção até parar):x_s = \frac{2F_c}{k} - x_0,desde que a solução caia no intervalo [0,x_0] e k x_0 > F_c (ou seja, o corpo inicia movimento).
Se em outro problema você tiver x_0 maior e \Delta = 2F_c/k menor que x_0, aí sim a massa pode cruzar para o outro lado e as amplitudes decrescem por pedaços de valor \Delta por meia-oscilação, até que a amplitude fique menor que F_c/k e então pare.
Força aí — você já tem a intuição e o código para gerar o gráfico e mostrar que o sistema para em 0{,}0905\\ \mathrm{m}.