Modelagem de Pêndulos Acoplados em MATLAB
Introdução
Os sistemas de pêndulos acoplados, também conhecidos como pêndulos duplos, representam uma excelente porta de entrada para o estudo de dinâmica não linear, caos determinístico e simulações numéricas. Além de terem aplicações em engenharia mecânica e aeroespacial, eles são fundamentais para a compreensão de fenômenos complexos em sistemas dinâmicos.
Neste artigo, você aprenderá como modelar um pêndulo duplo em MATLAB, utilizando o toolbox simbólico para extrair os pontos de equilíbrio, linearizar o sistema e, por fim, integrar numericamente as equações diferenciais com o solver ode45.
1. Sistema de Equações Diferenciais do Pêndulo Duplo
Vamos considerar o sistema clássico de dois pêndulos conectados, com massas
e
, comprimentos
e
, sujeitos à gravidade -g. Os ângulos
e
são medidos da vertical para cada haste, com sentido positivo horário.
As equações diferenciais não lineares que governam o movimento são:
![]()
![Rendered by QuickLaTeX.com \[B =\frac{-2\sin(\theta_1 - \theta_2)m_2 \left( \dot{\theta}_2^2 L_2 + \dot{\theta}_1^2 L_1 \cos(\theta_1 - \theta_2) \right)}{L_1 \left( 2m_1 + m_2 - m_2 \cos(2\theta_1 - 2\theta_2) \right)}\]](https://digitalinformacao.com/wp-content/ql-cache/quicklatex.com-14445a66fedc31d4cbe00cdb2fe82cfa_l3.png)
![]()
![Rendered by QuickLaTeX.com \[\ddot{\theta}_2 =\frac{2 \sin(\theta_1 - \theta_2) \left(\dot{\theta}_1^2 L_1 (m_1 + m_2)+ g(m_1 + m_2)\cos(\theta_1)+ \dot{\theta}_2^2 L_2 m_2 \cos(\theta_1 - \theta_2)\right)}{L_2 \left( 2m_1 + m_2 - m_2 \cos(2\theta_1 - 2\theta_2) \right)}\]](https://digitalinformacao.com/wp-content/ql-cache/quicklatex.com-07f4198f2dfb2b6373ac9ea4b1b7ae4d_l3.png)
2. Pontos de Equilíbrio e Linearização Simbólica no MATLAB
Com o Symbolic Math Toolbox, podemos encontrar os pontos de equilíbrio do sistema e realizar a linearização ao redor desses pontos.
Pontos de equilíbrio
Usando o MATLAB:
syms theta1 theta2 dtheta1 dtheta2 ddtheta1 ddtheta2 real
syms m1 m2 L1 L2 g real
% Equações do pêndulo duplo (não lineares)
delta = theta1 - theta2;
eq1 = ddtheta1 == ...
(-g*(2*m1 + m2)*sin(theta1) ...
- m2*g*sin(theta1 - 2*theta2) ...
- 2*sin(delta)*m2*(dtheta2^2*L2 + dtheta1^2*L1*cos(delta))) ...
/ (L1*(2*m1 + m2 - m2*cos(2*delta)));
eq2 = ddtheta2 == ...
(2*sin(delta)*(dtheta1^2*L1*(m1 + m2) ...
+ g*(m1 + m2)*cos(theta1) ...
+ dtheta2^2*L2*m2*cos(delta))) ...
/ (L2*(2*m1 + m2 - m2*cos(2*delta)));
% Encontrar os pontos de equilíbrio com velocidades e acelerações nulas
% (condição: sistema em repouso e sem movimento angular)
eq1_rhs = rhs(eq1);
eq2_rhs = rhs(eq2);
sol = solve([eq1_rhs == 0, eq2_rhs == 0, dtheta1 == 0, dtheta2 == 0], [theta1, theta2]);
disp(sol)Um dos principais pontos de equilíbrio é:
,
(ambos os pêndulos na posição vertical para baixo).
Linearização
Expandimos a equação ao redor do ponto de equilíbrio utilizando série de Taylor de primeira ordem (aproximação linear):
A = jacobian([dtheta1; dtheta2; eq1; eq2], [theta1; theta2; dtheta1; dtheta2]);
A_eq = subs(A, {theta1, theta2, dtheta1, dtheta2}, {0, 0, 0, 0});Assim, obtemos o sistema linearizado:
![]()
Com ![]()
3. Integração com ode45 no MATLAB
Agora, vamos integrar numericamente o sistema original sem ser linearizado para os seguintes parâmetros:
kg
m

Código MATLAB:
function dtheta = pendulo_duplo(t, theta)
% Parâmetros do sistema
m1 = 1; m2 = 1;
L1 = 0.5; L2 = 0.5;
g = 9.81;
% Estados do sistema
theta1 = theta(1);
theta2 = theta(2);
dtheta1 = theta(3);
dtheta2 = theta(4);
delta = theta1 - theta2;
% Denominador comum
denom = 2*m1 + m2 - m2*cos(2*delta);
% Equações diferenciais completas (não linearizadas)
ddtheta1 = ( ...
-g*(2*m1 + m2)*sin(theta1) ...
- m2*g*sin(theta1 - 2*theta2) ...
- 2*sin(delta)*m2*(dtheta2^2*L2 + dtheta1^2*L1*cos(delta)) ...
) / (L1*denom);
ddtheta2 = ( ...
2*sin(delta)*( ...
dtheta1^2*L1*(m1 + m2) ...
+ g*(m1 + m2)*cos(theta1) ...
+ dtheta2^2*L2*m2*cos(delta) ...
) ...
) / (L2*denom);
% Sistema de primeira ordem
dtheta = [dtheta1; dtheta2; ddtheta1; ddtheta2];
end
% Script de simulação
% Condições iniciais: [theta1; theta2; dtheta1; dtheta2]
theta0 = [pi/6; 0; 0; 0];
tspan = [0 10];
% Integração com ode45
[t, theta] = ode45(@pendulo_duplo, tspan, theta0);
% Plotagem dos resultados
figure
plot(t, theta(:,1), 'r', 'LineWidth', 1.5)
hold on
plot(t, theta(:,2), 'b', 'LineWidth', 1.5)
legend('\theta_1(t)', '\theta_2(t)')
xlabel('Tempo (s)')
ylabel('Ângulo (rad)')
title('Resposta temporal dos pêndulos acoplados (não linear)')
grid on
Conclusão
Neste artigo, você aprendeu como modelar, linearizar e simular numericamente o comportamento de um pêndulo duplo usando MATLAB. A análise mostrou como sistemas mecânicos aparentemente simples podem apresentar comportamentos complexos e sensíveis às condições iniciais, destacando a riqueza da dinâmica não linear.
