Показать сообщение отдельно
  #7  
Старый 13.03.2009, 19:37
Grafrada Grafrada вне форума
Прохожий
 
Регистрация: 13.03.2009
Сообщения: 18
Репутация: 10
По умолчанию

Код:
procedure TForm1.RazrabGrafik(t: extended);
  //Ïðîöåäóðà ïîñòðîåíèÿ ãðàôèêà ðàçðàáîòêè
  const xo=100;
        dds=0.00001;
  var fkv,fkn,FL,FL1,dFL,dPk,fkv1,fkn1 :  extended;
       Sl,Sp,Scr,F,deS:  extended;
      Iss,Isx: integer;
      Sgr,Fvn,Tpr,Svl,Svp,Fun,Svsr,dFLgr:extended;
  begin

     //Chart3.Enabled:=true;
     //Chart3.Visible:=true;
     Chart1.BottomAxis.Automatic := false;
     Chart1.BottomAxis.Maximum:=L;
     Chart1.BottomAxis.Minimum:=0;
     Chart1.BottomAxis.Title.Caption:='Äëèíà ãàëåðåè, ì';
     Chart1.LeftAxis.Automatic := false;
     Chart1.LeftAxis.Title.Caption:='Âîäîíàñûùåííîñòü';
     Chart1.LeftAxis.Maximum:=1;
     Chart1.LeftAxis.Minimum:=0;
     Chart1.RightAxis.Automatic := false;
     Chart1.RightAxis.Title.Caption:='Äàâëåíèå, ÌÏà';
     Chart1.RightAxis.Maximum:=Pk;
     Chart1.RightAxis.Minimum:=0;

     Series1.clear;
     Series2.clear;
     Series3.clear;
     Series4.clear;
     Series5.clear;
     //Series6.clear;
     Series7.clear;
     //Series8.clear;
     Leveret(Svo,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
     mXi[0]:=L;
     mPi[0]:=0;
     if (Xfr<L) then
     begin
       mSv[0]:=Svo;
       mSv[1]:=Svo;
       mXi[1]:=Xfr;
       mPi[1]:=dPo*(L-Xfr);
       mPi[2]:=dPo*(L-Xfr);
       for Iss:=2 to Ns do
       begin
         Sv:=Svfr+(1-Svfr)*(Iss-2)/(Ns-2);
         mSv[Iss]:=Sv;
         Leveret(Sv+dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
         Leveret(Sv-dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv1,fkn1,FL1);
         dFL:=(FL-FL1)/(2*dds);
         mXi[Iss]:=dFL*t*86400*Uo/m;
         if (Iss=2) then mPi[2]:=dPo*(L-Xfr)
         else  mPi[Iss]:=mPi[Iss-1]+(mXi[Iss-1]-mXi[Iss])*Uo*Mu_v*1000/(k*(fkv+mu_v*fkn/mu_n));
       end
     end else
     begin
       mSv[0]:=Svo;
       Sl:=Svfr;
       Sp:=1-Svo;
       repeat
         Scr:=0.5*(Sl+Sp);
         Leveret(Scr+dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
         Leveret(Scr-dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv1,fkn1,FL1);
         dFL:=(FL-FL1)/(2*dds);
         F:=L-dFL*t*86400*Uo/m;
         if (F>0) then Sp:=Scr else Sl:=Scr;
         deS:=abs(Sp-Sl);
       until (deS<1e-4);
       mSv[0]:=Scr;
       for Iss:=1 to Ns do
       begin
         Sv:=Scr+(1-Scr)*Iss/Ns;
         mSv[Iss]:=Sv;
         Leveret(Sv+dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
         Leveret(Sv-dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv1,fkn1,FL1);
         dFL:=(FL-FL1)/(2*dds);
         mXi[Iss]:=dFL*t*86400*Uo/m;
         mPi[Iss]:=mPi[Iss-1]+(mXi[Iss-1]-mXi[Iss])*Uo*Mu_v*1000/(k*(fkv+mu_v*fkn/mu_n));
       end
     end;
     dPk:=Pk-mPi[Ns];
     for Iss:=Ns downto 0 do
     begin
       Series7.AddXY(mXi[Iss],mSv[Iss],'',clTeeColor);
       Series5.AddXY(mXi[Iss],dPk+mPi[Iss],'',clTeeColor);
       Tpr:=L*m/(uo*dFLfr*86400);
       Sl:=Svfr;
       Sp:=1;
       if t>Tpr then
       begin
       repeat
         Svsr:=0.5*(Sl+Sp);
         Leveret(Svsr,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
         Leveret(Svsr+dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
         Leveret(Svsr-dds,Svo,Sno,nv,nn,mu_v,mu_n,fkv1,fkn1,FL1);
         dFL:=(FL-FL1)/(2*dds);
         Fun:=dFL-m*L/(uo*t*86400);
         if (Fun>0)
         then Sl:=Svsr
         else Sp:=Svsr;
       until (abs(Fun)<dds);
       Sgr:=Svsr;
       Leveret(Sgr,Svo,Sno,nv,nn,mu_v,mu_n,fkv,fkn,FL);
       Series8.AddXY(t,FL,'',clTeeColor);
       end;
     end;
Ответить с цитированием