octave_mechanics_triplependulum
function out = octave_mechanics_triplependulum()
dt = 0.01;
m1 = 1;
m2 = 1;
m3 = 1;
l1 = 0.5;
l2 = 0.5;
l3 = 0.5;
g = 9.8;
x_k = [60/180*pi ;
0 ;
0 ;
0 ;
0 ;
0 ];
x = [];
tim =[];
for t = 0 : dt : 10
x_k1 = x_k;
x_tmp = x_k;
for j =1 : 1 : 4
A=[(m1+m2+m3)*l1 (m2+m3)*l2*cos(x_tmp(1)-x_tmp(2)) m3*l3*cos(x_tmp(1)-x_tmp(3));
(m2+m3)*l1*cos(x_tmp(2)-x_tmp(1)) (m2+m3)*l2 m3*l3*cos(x_tmp(2)-x_tmp(3));
m3*l1*cos(x_tmp(3)-x_tmp(1)) m3*l2*cos(x_tmp(3)-x_tmp(2)) m3*l3 ];
B=[(m1+m2+m3)*g*sin(x_tmp(1)) (m2+m3)*l2*(x_tmp(5))^2*sin(x_tmp(1)-x_tmp(2)) m3*l3*(x_tmp(6))^2*sin(x_tmp(1)-x_tmp(3));
(m2+m3)*l1*(x_tmp(4))^2*sin(x_tmp(2)-x_tmp(1)) (m2+m3)*g*sin(x_tmp(2)) m3*l3*(x_tmp(6))^2*sin(x_tmp(2)-x_tmp(3));
m3*l1*(x_tmp(4))^2*sin(x_tmp(3)-x_tmp(1)) m3*l2*(x_tmp(5))^2*sin(x_tmp(3)-x_tmp(2)) m3*g*sin(x_tmp(3))];
C=[1;
1;
1];
D=-(inv(A)*B)*C;
k_j = [ x_tmp(4);
x_tmp(5);
x_tmp(6);
D(1);
D(2);
D(3)] * dt;
if j == 1
x_tmp = x_k + k_j /2;
endif
if j == 2
x_tmp = x_k + k_j /2;
endif
if j == 3
x_tmp = x_k + k_j ;
endif
if j == 4
x_tmp = x_k + k_j /2;
endif
if j == 1
x_k1 = x_k1 + k_j /6;
endif
if j == 2
x_k1 = x_k1 + k_j /3;
endif
if j == 3
x_k1 = x_k1 + k_j /3;
endif
if j == 4
x_k1 = x_k1 + k_j /6;
endif
endfor
x = [x x_k];
tim = [tim t];
x_k = x_k1;
endfor
plot(l1*sin(x(1,:)),-l1*cos(x(1,:)),l1*sin(x(1,:))+l2*sin(x(2,:)),-l1*cos(x(1,:))-l2*cos(x(2,:)),l1*sin(x(1,:))+l2*sin(x(2,:))+l3*sin(x(3,:)),-l1*cos(x(1,:))-l2*cos(x(2,:))-l3*cos(x(3,:)));
out=0;
endfunction