1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| ##########################################
program mouvement_pendule_double;
uses wincrt,wingraph;
const g=9.8;
N=1000;
deltaT=1e-2;
type tableau = array [0..N] of real;
type pendule2 = record
l1:real;
l2:real;
m1:real;
m2:real;
alpha:real;
beta:real;
end;
var penduledble : pendule2;
fichierpenduledble : file of pendule2;
PD1,PD2: tableau;
i,j:integer;
procedure creertab( var tab3,tab4:tableau;pas,long1,long2,masse1,masse2,a1,a2:real);
var i:integer;
tab1,tab2:tableau;
U1,U2,U3,U4:real;
V1,V2,V3,V4:real;
begin
tab1[0]:=0; {angle1 derivee premiere}
tab2[0]:=0; {angle2 derivee premiere}
tab3[0]:=0; {angle1}
tab4[0]:=0; {angle2}
U1:=0;
U2:=0;
U3:=0;
U4:=0;
V1:=0;
V2:=0;
V3:=0;
V4:=0;
for i:=1 to N do
begin
U1:=(masse2*sin(a1-a2)*tab1[i-1]*tab1[i-1])/(masse1+masse2*sin(a1-a2)*sin(a1-a2));
U2:=(masse2*g*sin(a2)*cos(a1-a2))/(long1*(masse1+masse2*sin(a1-a2)));
U3:=-(masse2*long2*sin(a1-a2)*tab2[i-1]*tab2[i-1])/(long1*(masse1+masse2*sin(a1-a2)*sin(a1-a2)));
U4:=-((masse1+masse2)*g*sin(a1))/(long1*(masse1+masse2*sin(a1-a2)*sin(a1-a2)));
writeln('chuis la');
tab1[i]:=pas*(U1+U2+U3+U4)-tab1[i-1];
writeln(tab1[i]);
V1:=(masse2*cos(a1-a2)*sin(a1-a2)*tab2[i-1]*tab2[i-1])/(masse1+masse2*sin(a1-a2)*sin(a1-a2));
V2:=((masse1+masse2)*g*sin(a1))/(long2*(masse1+masse2*sin(a1-a2)*sin(a1-2)));
V3:=(-(masse1+masse2)*long1*sin(a1-a2)*tab1[i-1]*tab1[i-1])/(long2*(masse1+masse2*sin(a1-a2)*sin(a1-a2)));
V4:=(-(masse1+masse2)*g*sin(a2))/(long1*(masse1+masse2*sin(a1-a2)*sin(a1-a2)));
writeln('ch uis la');
tab2[i]:=pas*(V1+V2+V3+V4)-tab2[i-1];
end;
end;
begin
creertab(PD1,PD2,deltaT,1,1,1,1,1,0.2);
end.
############################################# |
Partager