Читайте также:
|
|
1. Бертмант А.Ф. Краткий курс математического анализа. - М.: Наука, 1965.
2. Кирьянов Д. Самоучитель MathCAD 11.- СПБ.: Бхв-Петербург, 2003.
3. Емельянов В.Ю. Методы моделирования стохастических систем управления. - СПб.: БГТУ, 2004.
4. Потапов М. К. Алгебра и анализ элементарных функций. - М.: Наука, 1980.
5. Бобровский С. DELPHI 7. Учебный курс.- СПБ.: Питер, 2003.
Приложение А
Аналитические расчеты, произведенные в математическом пакете MathCAD.
Приложение Б
Программная реализация стандартной схемы статистического моделирования
unit Standart;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
Memo2: TMemo;
Button1: TButton;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
alfa=9;
h=0.001;
eps=0.01;
kk=1300;
k=0.5;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
Sx,Sx2,mx,Dx,G,a,x,Sx2n,Sxn,mxn,Dxn:real;
i,j,ll:integer;
ntreb,nn,n,n1,n2:longint;
flag:boolean;
begin
Sx:=0;
Sx2:=0;
randomize;
nn:=200;
Memo1.Lines.Clear;
Memo2.Lines.Clear;
for i:=1 to nn do
begin
G:=random*0.4+1;
a:=random*0.2+0.6;
x:=1;
for j:=1 to kk do x:=x+a*x*h+g*1.2*a*h;
Sx:=Sx+x;
Sx2:=Sx2+sqr(x);
end;
mx:=Sx/nn;
Dx:=Sx2/(nn-1)-sqr(mx);
ntreb:=round(alfa*Dx/sqr(eps));
Memo1.Lines.Add('Mx='+FloatToStr(mx));
Memo1.Lines.Add('Dx='+FloatToStr(Dx));
Memo1.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo1.Lines.Add('Sx='+FloatToStr(Sx));
Memo1.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo1.Lines.Add('nn='+FloatToStr(nn));
n1:=0;
flag:=true;
while nn<ntreb do
begin
n1:=ntreb-nn;
edit1.text:=floattostr(n1);
if (n1>8500) then n1:=n1 div 2
else begin
if n1<7 then n1:=n1*2;end;
for i:=nn to n1+nn do
begin
G:=random*0.4+1;
a:=random*0.2+0.6;
x:=1;
for j:=1 to kk do x:=(a*x+g*1.2*a)*h+x;
Sx:=Sx+x;
Sx2:=Sx2+sqr(x);
end;
Memo2.Lines.Add('n1='+FloatToStr(n1));
mx:=(Sx)/(n1+nn);
Dx:=(Sx2)/(n1+nn-1)-sqr(mx);
Memo2.Lines.Add('Sxn='+FloatToStr(Sx));
Memo2.Lines.Add('Sx2n='+FloatToStr(Sx2));
Memo2.Lines.Add('mx='+FloatToStr(mx));
Memo2.Lines.Add('Dx='+FloatToStr(Dx));
nn:=n1+nn;
ntreb:=round(alfa*Dx/sqr(eps));
Memo2.Lines.Add('nn='+FloatToStr(nn));
Memo2.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo2.Lines.Add('************************');
end; end;
end.
Приложение В
Программная реализация метода расслоенной выборки
unit Viborka;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Memo4: TMemo;
Memo5: TMemo;
Memo11: TMemo;
Memo12: TMemo;
Button1: TButton;
BitBtn1: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
StaticText8: TStaticText;
StaticText9: TStaticText;
StaticText10: TStaticText;
Memo6: TMemo;
Memo7: TMemo;
Memo8: TMemo;
Memo9: TMemo;
Memo10: TMemo;
StaticText11: TStaticText;
StaticText12: TStaticText;
StaticText13: TStaticText;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Okno2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const
h=0.001;
eps=0.01;
alfa=9;
k=10;
Pk=0.1;
kk=1300;
t=1.3;
var
Nk:array [1..10] of longint;
Dk:array [1..10] of real;
ntreb,n:real;
i,j,jj,jj1:integer;
f:boolean;
Dx,Mx,Mxcp,Sx,Sx2,x,qk2,qk,g,a,Disp,treal,xn:real;
begin
randomize;
ntreb:=200;
n:=0;
f:=true;
jj1:=0;
Memo1.Lines.Clear;
Memo2.Lines.Clear;
Memo3.Lines.Clear;
Memo4.Lines.Clear;
Memo5.Lines.Clear;
Memo6.Lines.Clear;
Memo7.Lines.Clear;
Memo8.Lines.Clear;
Memo9.Lines.Clear;
Memo10.Lines.Clear;
Memo11.Lines.Clear;
Memo12.Lines.Clear;
while n<ntreb do begin
Dx:=0;
Mx:=0;
qk:=0;
Mxcp:=0;
Disp:=0;
for i:=1 to k do begin
Sx:=0;
Sx2:=0;
if f then Nk[i]:=9
else
Nk[i]:=round(ntreb*Pk*sqrt(Dk[i])/qk2);
for j:=1 to Nk[i] do begin
g:=random*0.4+1;
a:=random*Pk*0.2+0.6+Pk*(i-1)*0.2;
x:=1;
for jj:=1 to kk do begin x:=(a*x+g*a*1.2)*h+x;
end;
Sx:=Sx+x;
Sx2:=Sx2+sqr(x);
end;
Mx:=Sx/Nk[i];
Dk[i]:=Sx2/Nk[i]-sqr(Sx/Nk[i]);
Dx:=Dx+(Pk*Pk)*Dk[i]/Nk[i];
Mxcp:=Mxcp+Pk*Sx/Nk[i];
case i of
1: begin //Memo1.Lines.Clear;
Memo1.Lines.Add('Mx='+FloatToStr(Mx));
Memo1.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo1.Lines.Add('Disp='+FloatToStr(Disp));
Memo1.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo1.Lines.Add('Sx='+FloatToStr(Sx));
Memo1.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo1.Lines.Add('n='+FloatToStr(n));
Memo1.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo1.Lines.Add('***********');
end;
2: begin //Memo2.Lines.Clear;
Memo2.Lines.Add('Mx='+FloatToStr(Mx));
Memo2.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo2.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo2.Lines.Add('Sx='+FloatToStr(Sx));
Memo2.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo2.Lines.Add('n='+FloatToStr(n));
Memo2.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo2.Lines.Add('***********');end;
3: begin //Memo3.Lines.Clear;
Memo3.Lines.Add('Mx='+FloatToStr(Mx));
Memo3.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo3.Lines.Add('Disp='+FloatToStr(Disp));
Memo3.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo3.Lines.Add('Sx='+FloatToStr(Sx));
Memo3.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo3.Lines.Add('n='+FloatToStr(n));
Memo3.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo3.Lines.Add('***********');end;
4: begin// Memo4.Lines.Clear;
Memo4.Lines.Add('Mx='+FloatToStr(Mx));
Memo4.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo4.Lines.Add('n='+FloatToStr(n));
Memo4.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo4.Lines.Add('Disp='+FloatToStr(Disp));
Memo4.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo4.Lines.Add('Sx='+FloatToStr(Sx));
Memo4.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo4.Lines.Add('***********');end;
5: begin //Memo5.Lines.Clear;
Memo5.Lines.Add('Mx='+FloatToStr(Mx));
Memo5.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo5.Lines.Add('n='+FloatToStr(n));
Memo5.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo5.Lines.Add('Disp='+FloatToStr(Disp));
Memo5.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo5.Lines.Add('Sx='+FloatToStr(Sx));
Memo5.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo5.Lines.Add('***********');end;
6: begin //Memo6.Lines.Clear;
Memo6.Lines.Add('Mx='+FloatToStr(Mx));
Memo6.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo6.Lines.Add('n='+FloatToStr(n));
Memo6.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo6.Lines.Add('Disp='+FloatToStr(Disp));
Memo6.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo6.Lines.Add('Sx='+FloatToStr(Sx));
Memo6.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo6.Lines.Add('***********');end;
7: begin //Memo7.Lines.Clear;
Memo7.Lines.Add('Mx='+FloatToStr(Mx));
Memo7.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo7.Lines.Add('n='+FloatToStr(n));
Memo7.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo7.Lines.Add('Disp='+FloatToStr(Disp));
Memo7.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo7.Lines.Add('Sx='+FloatToStr(Sx));
Memo7.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo7.Lines.Add('***********');end;
8: begin //Memo8.Lines.Clear;
Memo8.Lines.Add('Mx='+FloatToStr(Mx));
Memo8.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo8.Lines.Add('n='+FloatToStr(n));
Memo8.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo8.Lines.Add('Disp='+FloatToStr(Disp));
Memo8.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo8.Lines.Add('Sx='+FloatToStr(Sx));
Memo8.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo8.Lines.Add('***********');end;
9: begin //Memo9.Lines.Clear;
Memo9.Lines.Add('Mx='+FloatToStr(Mx));
Memo9.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo9.Lines.Add('n='+FloatToStr(n));
Memo9.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo9.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo9.Lines.Add('Disp='+FloatToStr(Disp));
Memo9.Lines.Add('Sx='+FloatToStr(Sx));
Memo9.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo9.Lines.Add('***********');end;
10: begin //Memo10.Lines.Clear;
Memo10.Lines.Add('Mx='+FloatToStr(Mx));
Memo10.Lines.Add('Dx='+FloatToStr(Dk[i]));
Memo10.Lines.Add('n='+FloatToStr(n));
Memo10.Lines.Add('ntreb='+FloatToStr(ntreb));
Memo10.Lines.Add('Disp='+FloatToStr(Disp));
Memo10.Lines.Add('Nk='+FloatToStr(Nk[i]));
Memo10.Lines.Add('Sx='+FloatToStr(Sx));
Memo10.Lines.Add('Sx2='+FloatToStr(Sx2));
Memo10.Lines.Add('***********');end;
end;
// Form2.Visible:=true;
qk:=Pk*sqrt(Dk[i])+qk;
Disp:=Disp+Dk[i]*qk/(Pk*sqrt(Dk[i]));
end;
qk2:=qk;
Memo11.Lines.Add('Mxcp='+floattostr(Mxcp));
Memo11.Lines.Add('Dxcp='+floattostr(Dx));
Memo11.Lines.Add('***********');
edit1.Text:=floattostr(Mxcp);
edit2.Text:=floattostr(Dx);
n:=ntreb;
ntreb:=round(alfa*Disp*sqr(Pk)/sqr(eps));
Memo12.Lines.Add('n='+floattostr(n));
Memo12.Lines.Add('ntreb='+floattostr(ntreb));
Memo12.Lines.Add('***********');
edit3.text:=floattostr(ntreb);
f:=false;
end;
end;
end.
Дата добавления: 2015-12-08; просмотров: 46 | Нарушение авторских прав