matlabで振り子

matlabで振り子を動かしてみる

運動方程式などの細かい話は次回

% パラメータ設定
g = 9.81;  % 重力加速度 (m/s^2)
L = 1.0;   % 振り子の長さ (m)
theta0 = 0.1;  % 初期角度 (ラジアン)
omega0 = 0;    % 初期角速度 (rad/s)
dt = 0.01;     % タイムステップ (秒)
T = 10;        % シミュレーション時間 (秒)

% 時間ベクトル
t = 0:dt:T;

% 初期条件
theta = zeros(size(t));
omega = zeros(size(t));
theta(1) = theta0;
omega(1) = omega0;

% 振り子運動のシミュレーション (オイラー法)
for i = 1:length(t)-1
    % 運動方程式の差分方程式
    theta(i+1) = theta(i) + dt * omega(i);
    omega(i+1) = omega(i) - (g / L) * sin(theta(i)) * dt;
end

% アニメーションの作成
figure;
hold on;
axis equal;
xlim([-1.2*L 1.2*L]);
ylim([-1.2*L 1.2*L]);
lineHandle = line([0 0], [0 0], 'LineWidth', 2);
pendulumHandle = plot(0, 0, 'o', 'MarkerSize', 10, 'MarkerFaceColor', 'r');

for i = 1:length(t)
    % 振り子の位置を計算
    x = L * sin(theta(i));
    y = -L * cos(theta(i));
    
    % 振り子の位置を更新
    set(lineHandle, 'XData', [0 x], 'YData', [0 y]);
    set(pendulumHandle, 'XData', x, 'YData', y);
    
    % アニメーションを更新
    drawnow;
    
    % 一時停止(アニメーションの速度調整)
    pause(dt);
end

コメント

タイトルとURLをコピーしました