Compare a solução numérica com a solução analítica de um sistema massa-mola viscosamente amortecido com
e
. Considere que as consições iniciais são dadas por
e
. Plote na mesma figura as soluções numérica e analítica.
Passo 1
O que o enunciado pede e o que foi dado.
- Pedido: comparar a solução numérica com a solução analítica do sistema massa-mola amortecido e plotar as duas soluções na mesma figura.
- Dados do sistema:
- Condições iniciais:
- O objetivo prático aqui será:
- Obter a solução analítica
do problema homogêneo amortecido com essas condições iniciais. - Resolver numericamente a mesma equação diferencial e comparar (visual + métrica de erro).
- Gerar um gráfico com as duas curvas sobrepostas.
- Obter a solução analítica
Passo 2
Escrevendo a equação diferencial e interpretando as variáveis.
-
A equação do movimento para um sistema massa-mola com amortecimento viscoso éonde:
-
é o deslocamento (m), -
é a velocidade (m/s), -
é a aceleração (m/s²), -
é a massa (kg), -
é o coeficiente de amortecimento (kg/s), -
é a rigidez da mola (N/m).
-
-
Para resolver analiticamente, transformamos para a forma padrão e procuramos as raízes da equação característica (próximo passo).
Passo 3
Derivação da solução analítica (com aula rápida do método).
-
Equação característica:
supondo solução do tipo, substituindo na ODE obtemos Essa é uma equação quadrática em. -
Definições úteis (explicando o que significam):
- frequência natural (sem amortecimento)
Interpretação: quantas rad/s o sistema oscilaria se . - razão de amortecimento (damping ratio)
Interpretação: aponta para regime subamortecido (oscilações amortecidas), crítico, sobreamortecido (sem oscilações). - frequência amortecida (quando
) Interpretação: frequência angular real das oscilações amortecidas.
- frequência natural (sem amortecimento)
-
Caso aqui: se
(subamortecido), a solução geral é Aplicando as condições iniciaise obtemos: No nosso casoe , então: Logo a solução analítica é(essa fórmula é muito prática: quando deslocamento inicial é zero e só há velocidade inicial, a resposta é um seno amortecido com amplitude.)
Passo 4
Calcular os parâmetros numéricos (faça as contas passo a passo).
-
Calcule
: -
Calcule
: Observação:, então o sistema é subamortecido (esperamos oscilações amortecidas). -
Calcule
: -
Coeficiente da amplitude (usando
): -
Portanto, a solução analítica numérica é(Note que na exponencial podemos combinar
, então .)
Passo 5
Preparar a solução numérica: redução para sistema de 1ª ordem e método.
-
Transformação para sistema de primeira ordem:definacom .
-
Método numérico: use um solver de passo adaptativo de Runge–Kutta (por exemplo, RK45 via scipy.integrate.solve_ivp em Python) ou um RK4 fixo se preferir implementar manualmente. O método padrão ‘RK45’ é suficiente e eficiente aqui.]
Passo 6
Código exemplo (Python) para integrar numericamente, calcular a solução analítica e plotar ambas. Execute isso no seu computador (requere numpy, scipy, matplotlib).
import numpy as np
from scipy.integrate import solve_ivp
import matplotlib.pyplot as plt
# Parâmetros
m = 1361.0
k = 2.688e5
c = 3.81e3
v0 = 0.01 # velocidade inicial (m/s)
x0 = 0.0
# Parâmetros derivados
omega_n = np.sqrt(k / m)
zeta = c / (2.0 * np.sqrt(k * m))
omega_d = omega_n * np.sqrt(1.0 - zeta**2)
# Sistema de 1ª ordem
def rhs(t, y):
# y[0] = x, y[1] = xdot
return [y[1], -(c/m)*y[1] - (k/m)*y[0]]
# Condições iniciais
y0 = [x0, v0]
# Intervalo de tempo para plot (por exemplo 0 a 5 s)
t_span = (0.0, 5.0)
t_eval = np.linspace(t_span[0], t_span[1], 2000)
# Solução numérica
sol = solve_ivp(rhs, t_span, y0, t_eval=t_eval, method='RK45', atol=1e-9, rtol=1e-9)
# Solução analítica nos mesmos tempos
x_analytical = (v0 / omega_d) * np.exp(-zeta * omega_n * t_eval) * np.sin(omega_d * t_eval)
# Plot
plt.figure(figsize=(8,4.5))
plt.plot(sol.t, sol.y[0], label='Numérica (solve\\_ivp)', linewidth=1)
plt.plot(t_eval, x_analytical, '--', label='Analítica', linewidth=1)
plt.xlabel('t (s)')
plt.ylabel('x (m)')
plt.title('Comparação: solução numérica vs analítica (massa-mola amortecido)')
plt.legend()
plt.grid(True)
plt.tight_layout()
plt.show()
# Erro (diferença ponto a ponto)
err = sol.y[0] - x_analytical
print('Erro máximo absoluto entre numérica e analítica:', np.max(np.abs(err)))
print('Erro RMS:', np.sqrt(np.mean(err**2)))
- Comentários: ajustei
atolertolpara tolerâncias pequenas (Precisão boa).t_evalgarante que a solução numérica será avaliada nos mesmos instantes usados para a solução analítica, facilitando comparação.
Passo 7
O que observar ao comparar as soluções e como interpretar os resultados.
- Ao executar o código você deverá ver as duas curvas praticamente coincidentes (a linha pontilhada — analítica — sobreposta à curva numérica).
- O
printno final do código informa o erro máximo absoluto e o erro RMS entre as soluções; valores muito pequenos (por ex. da ordem de 1e-10 a 1e-6 dependendo das tolerâncias) significam boa concordância. - Se houver discrepância visível:
- aumente
atol/rtol(torne-os menores) para maior precisão, - certifique-se de que o
t_evalé suficientemente denso para resolver as oscilações (período aproximado).
- aumente
Passo 8
Dicas práticas rápidas (motivação e truques de prova):
- Na prova, memorize a forma geral da solução subamortecida:
e o caso especial quando . - Para cálculos rápidos sem calculadora, é suficiente estimar
e com 2–3 dígitos significativos e reconhecer regime (sub/crit/ sobreamortecido). - Respire fundo! a estrutura do problema segue sempre os mesmos passos: equação característica → identificar regime → aplicar condições iniciais → obter constantes.