![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Дмитрий |
![]()
Сообщение
#1
|
Гость ![]() |
Написал программу которая должна строить практические и теоритические графики мат.ожидания, дисперсии и самой функции.
Проблема в том что при постройке графика дисперсии прога виснет. Код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, comobj, activex; type TForm1 = class(TForm) GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; Label7: TLabel; Button3: TButton; Button2: TButton; Button1: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2, Unit3, Unit4; {$R *.dfm} // function eexp(n:double;te:double):double; var sum:double; count:double; y:real; begin sum:=0; count:=0; randomize; while count<=n do begin y:=random(99)/100; sum:=sum+(-2/te*ln(1-y)); count:=count+1; end; sum:=sum/n; result:=sum; end; // function dexp(n:double;te:double):double; var sum:double; count:double; y,x:real; begin sum:=0; count:=0; randomize; while count<=n do begin y:=random(99)/100; x:=(-2/te)*ln(1-y); sum:=sum+(x-eexp(10,te)); end; sum:=sum/n; result:=sum; end; procedure TForm1.Button1Click(Sender: TObject); var te,a,x:double; n:integer; y:real; begin form2.show; a:=20; te:=5; randomize; for n:=0 to 20 do begin y:=random(99)/100; x:=(-2/te)*ln(1-y); form2.Series1.AddXY(x,1-exp(-te*x)-(x*exp(-te*x)),'',clRed); end; end; procedure TForm1.Button2Click(Sender: TObject); var //b:integer; te,a:double; begin form3.show; // a:=strtoint(form1.edit1.text); a:=20; form3.series1.clear; te:=0.5; while te <=a do begin //te:=round(i); form3.series1.addxy(te, 2/te,'',clRed); te:=te+te; end; te:=0.5; while te<=a do begin form3.series2.addxy(te,eexp(100,te),'',clBlue); te:=te+te; end; end; procedure TForm1.Button3Click(Sender: TObject); var count:integer; te,a,sum:double; begin form4.show; // a:=strtoint(form1.edit1.text); a:=30; form4.series1.clear; te:=0.1; while te <=a do begin //te:=round(i); form4.series1.addxy(te, 2/(te*te),'',clRed); te:=te+0.1; end; te:=0.1; while te<=0.9 do begin form4.series2.AddXY(te,dexp(1,te),'',clBlue); te:=te+0.1 end; end; end. Практически дисперсию можно найти по формуле 1/n* сумма (Xi-Xсреднее). Вот мне надо проделать это примерно 100 раз и усредненное значение будет примерно равно тетта. х= (-2/тетта)*Ln(1-y) y=random Функция eexp - считает x среднее при данном тетта. Функция dexp - считает как раз 1/n* сумма (Xi-Xсреднее). Проблема новое окошко form4 виснет при запуске, причем даже если поставить всего один пробег. Укажите на ошибку пожалуйста! |
![]() ![]() |
Дмитрий |
![]()
Сообщение
#2
|
Гость ![]() |
Большое спасибо =)
У нас это все в курсе теории вероятностей... |
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 18:34 |