PROCEDURE TFORM1.CALC; VAR I:INTEGER; J:INTEGER; begin m:=STRTOFLOAT(EDIT15.Text); W:=9.8*M; DT:=STRTOFLOAT(EDIT3.Text); damp:=STRTOFLOAT(EDIT4.Text); NSTEP:=STRTOINT(EDIT5.Text); SETLENGTH(PV,25,NSTEP+1); wn:=sqrt(k/(W*1000/9800)); TT:=2*3.14/WN; GF:=STRTOFLOAT(EDIT16.Text); edit10.Text:=FORMAT('%0.3E',[WN]); EDIT11.Text:=FORMAT('%0.6F',[TT]); EDIT15.Text:=FORMAT('%0.2F',[M]); M1:=4*exp(-damp*wn*dt); M2:=exp(-2*damp*wn*dt); F1:=DT/(3*M*WN); FOR I:=0 TO 24 DO FOR J:=0 TO NSTEP DO BEGIN PV[I,J]:=0; END; ////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN PV[0,I]:=I*DT; END; FOR I:=0 TO NSTEP DO BEGIN PV[1,I]:=-GM[I]*m*GF; PV[24,I]:=GM[I]*GF; //acc END; ////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN TN:=PV[0,I]; PV[2,I]:=SIN(WN*TN); PV[3,I]:=COS(WN*TN); PV[4,I]:=PV[1,I]*PV[3,I]; END; FOR I:=1 TO NSTEP DO BEGIN PV[5,I]:=PV[4,I-1]; END; FOR I:=2 TO NSTEP DO BEGIN PV[6,I]:=PV[4,I-2]; END; ////////////////////////////////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN PV[7,I]:=m1*PV[5,I]; IF I=0 THEN PV[9,I]:=0; IF I=1 THEN PV[9,I]:=0; PV[8,I]:=m2*(PV[6,I]+PV[9,I]); IF I>=2 THEN PV[9,I]:=PV[10,I-2]; PV[10,I]:=(PV[4,I]+PV[7,I]+PV[8,I]); // IF I=0 THEN PV[9,I]:=0; IF I=1 THEN PV[9,I]:=0; PV[8,I]:=m2*(PV[6,I]+PV[9,I]); IF I>=2 THEN PV[9,I]:=PV[10,I-2]; PV[10,I]:=(PV[4,I]+PV[7,I]+PV[8,I]); END; /////////////////////////////////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN PV[11,I]:=PV[1,I]*PV[2,I]; END; FOR I:=1 TO NSTEP DO BEGIN PV[12,I]:=PV[11,I-1]; END; FOR I:=2 TO NSTEP DO BEGIN PV[13,I]:=PV[11,I-2]; END; ////////////////////////////////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN PV[14,I]:=m1*PV[12,I]; IF I=0 THEN PV[16,I]:=0; IF I=1 THEN PV[16,I]:=0; PV[15,I]:=m2*(PV[13,I]+PV[16,I]); IF I>=2 THEN PV[16,I]:=PV[17,I-2]; PV[17,I]:=(PV[11,I]+PV[14,I]+PV[15,I]); // PV[14,I]:=m1*PV[12,I]; IF I=0 THEN PV[16,I]:=0; IF I=1 THEN PV[16,I]:=0; PV[15,I]:=m2*(PV[13,I]+PV[16,I]); IF I>=2 THEN PV[16,I]:=PV[17,I-2]; PV[17,I]:=(PV[11,I]+PV[14,I]+PV[15,I]); END; /////////////////////////////////////////////////////////////////////// FOR I:=0 TO NSTEP DO BEGIN PV[18,I]:=PV[10,I]*PV[2,I]; PV[19,I]:=PV[17,I]*PV[3,I]; PV[20,I]:=PV[18,I]-PV[19,I]; PV[21,I]:=F1*PV[20,I]; PV[22,I]:=K*PV[21,I]; END; FOR I:=1 TO NSTEP DO BEGIN IF I MOD 2 <>0 THEN BEGIN PV[21,I]:=0; PV[22,I]:=0; END; END; end;