Um sistema que vibra tem as seguintes condições iniciais:
. Determine a equação de movimento quando a)
; b)
; e c)
. Faça um único gráfico em Python com cada uma dessas condições, tal que o eixo das abcissas seja
e o eixo das ordenadas,
.
Passo 1
O enunciado descreve um sistema massa-mola-amortecedor com razão de amortecimento
e frequência natural
, sujeita às condições iniciais
Precisamos encontrar
para três casos de
:
a) (sobreamortecido),
b) (criticamente amortecido) e
c) (subamortecido).
Em seguida, faremos um único gráfico em Python do deslocamento normalizado
a)
b)
c)
Em seguida, faremos um único gráfico em Python do deslocamento normalizado
versus o tempo normalizado
Passo 2
A equação diferencial é
Da teoria de sistemas de 2º ordem homogêneos temos:
- Se
, raízes reais e
- Se
, raiz dupla e
- Se
, raízes complexas com e
Aplicando
e
obtemos as constantes e as formas normalizadas abaixo.
Passo 3
Caso
(sobreamortecido):
A solução particular com as condições iniciais é
e o deslocamento normalizado fica
Passo 4
Caso
(criticamente amortecido):
logo
Passo 5
Caso
(subamortecido):
Normalizando:
Passo 6
Segue um script em Python usando matplotlib para plotar as três curvas em um único gráfico, com abscissa
e ordenada
:
import numpy as np
import matplotlib.pyplot as plt
# domínio em tau = \(omega_n\) * t
tau = np.linspace(0, 8, 400)
# zetas
zetas = [2.0, 1.0, 0.5]
labels = ['ζ=2 (sobreamort.)', 'ζ=1 (crítico)', 'ζ=0.5 (subamort.)']
X = []
# caso ζ>1
z \(=2.0\)
r\(1=\) -(z - np.sqrt(z**2 - 1))
r\(2=\) -(z + np.sqrt(z**2 - 1))
X.append((1/(2*np.sqrt(z**2-1))) * (np.exp(r1*tau) - np.exp(r2*tau)))
# caso \(\zeta=1\)
X.append(tau * np.exp(-tau))
# caso ζ<1
z \(=0.5 omega_d\) = np.sqrt(1 - z**2)
X.append((1/\(omega_d\)) * np.exp(-z*tau) * np.sin(\(omega_d\)*tau))
# plot
plt.figure(figsize=(8,5))
for Xi, lab in zip(X, labels):
plt.plot(tau, Xi, labe\(l=l\)ab)
plt.xlabel(r'\(\tau=\omega_n t\)')
plt.ylabel(r'\(X(\tau)=\displaystyle\frac{x\,\omega_n}{v_0}\)')
plt.title('Resposta livre amortecida para diferentes ζ')
plt.legend()
plt.grid(True)
plt.show()
Resposta
a) Para
:
b) Para
:
c) Para
: