Результаты исследований учащихся в проекте Модели вокруг нас: различия между версиями
(→Цели исследования) |
(→Результаты проведённого исследования) |
||
Строка 32: | Строка 32: | ||
Листинг программы "Монте-Карло" | Листинг программы "Монте-Карло" | ||
+ | |||
+ | [[Изображение:БлоксхемаМК.JPG]] | ||
unit Unit2; | unit Unit2; | ||
Строка 38: | Строка 40: | ||
uses | uses | ||
+ | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, | ||
+ | Dialogs, StdCtrls, ExtCtrls, OleCtrls, SHDocVws | ||
+ | |||
+ | type | ||
+ | TForm2 = class(TForm) | ||
+ | |||
+ | Image1: TImage; | ||
+ | |||
+ | Button1: TButton; | ||
+ | |||
+ | Edit1: TEdit; | ||
+ | |||
+ | Edit2: TEdit; | ||
+ | |||
+ | Label2: TLabel; | ||
+ | |||
+ | Label3: TLabel; | ||
+ | |||
+ | Label4: TLabel; | ||
+ | |||
+ | Label1: TLabel; | ||
+ | |||
+ | WebBrowser1: TWebBrowser; | ||
+ | |||
+ | procedure Button1Click(Sender: TObject); | ||
+ | |||
+ | procedure FormCreate(Sender: TObject); | ||
− | + | private | |
+ | { Private declarations } | ||
+ | public | ||
+ | { Public declarations } | ||
+ | |||
+ | end; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
var | var | ||
− | + | ||
+ | Form2: TForm2; | ||
implementation | implementation | ||
Строка 72: | Строка 87: | ||
var | var | ||
R:integer; //радиус | R:integer; //радиус | ||
+ | |||
N:integer; //количество "брошенных" точек | N:integer; //количество "брошенных" точек | ||
+ | |||
X:real; //координата точек Х | X:real; //координата точек Х | ||
+ | |||
Y:real; //координата точек Y | Y:real; //координата точек Y | ||
+ | |||
M:integer; //количество точек, попавших в круг | M:integer; //количество точек, попавших в круг | ||
+ | |||
I:integer; //счетчик цикла | I:integer; //счетчик цикла | ||
+ | |||
procedure TForm2.Button1Click(Sender: TObject); | procedure TForm2.Button1Click(Sender: TObject); | ||
+ | |||
begin | begin | ||
+ | |||
M := 0; | M := 0; | ||
//Ввод значений | //Ввод значений | ||
+ | |||
R := StrToInt(Edit1.Text); | R := StrToInt(Edit1.Text); | ||
+ | |||
N := StrToInt(Edit2.Text); | N := StrToInt(Edit2.Text); | ||
+ | |||
Image1.Canvas.Ellipse(0,0,200,200); | Image1.Canvas.Ellipse(0,0,200,200); | ||
//Генерация точек | //Генерация точек | ||
+ | |||
{Randomize}; | {Randomize}; | ||
+ | |||
For I := 1 To N do | For I := 1 To N do | ||
+ | |||
begin | begin | ||
+ | |||
X := (Random(200*R)-100)/100; | X := (Random(200*R)-100)/100; | ||
+ | |||
Y := (Random(200*R)-100)/100; | Y := (Random(200*R)-100)/100; | ||
+ | |||
Image1.Canvas.Pixels[Round(100*X)+100,100 - Round(100*Y)]:=clBlack; | Image1.Canvas.Pixels[Round(100*X)+100,100 - Round(100*Y)]:=clBlack; | ||
+ | |||
If X*X + Y*Y <= R | If X*X + Y*Y <= R | ||
− | + | Then M := M + 1 | |
end; | end; | ||
+ | |||
//Площадь | //Площадь | ||
+ | |||
Label1.Caption := FloatToStr(4*R*R*M/N); | Label1.Caption := FloatToStr(4*R*R*M/N); | ||
+ | |||
end; | end; | ||
procedure TForm2.FormCreate(Sender: TObject); | procedure TForm2.FormCreate(Sender: TObject); | ||
+ | |||
begin | begin | ||
+ | |||
Webbrowser1.Navigate(GetCurrentDir+'\mk.htm'); | Webbrowser1.Navigate(GetCurrentDir+'\mk.htm'); | ||
+ | |||
//Form1.Show; | //Form1.Show; | ||
+ | |||
end; | end; | ||
Версия 10:16, 12 декабря 2009
Содержание
Авторы и участники проекта
Авторы
Ученики 11 класса группа "Испытатели"
Тема исследования группы
Моделирование случайности.
Проблемный вопрос (вопрос для исследования)
Как смоделировать случайность?
Гипотеза исследования
Мы считаем, что моделировать случайность можно используя различные специальные финкции программных продуктов. Например в Delphi это функция Random
Цели исследования
1. Рассмотреть моделирование случайности на примере задачи: вычисление числа П методом Манте-Карло.
2. Для решения задачи выполнить её постановку, создать математическую модель. Разработать алгоритм и программу на Delphi.
Результаты проведённого исследования
Листинг программы "Монте-Карло"
unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, OleCtrls, SHDocVws
type TForm2 = class(TForm)
Image1: TImage;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label1: TLabel;
WebBrowser1: TWebBrowser;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm} var R:integer; //радиус
N:integer; //количество "брошенных" точек
X:real; //координата точек Х
Y:real; //координата точек Y
M:integer; //количество точек, попавших в круг
I:integer; //счетчик цикла
procedure TForm2.Button1Click(Sender: TObject);
begin
M := 0; //Ввод значений
R := StrToInt(Edit1.Text);
N := StrToInt(Edit2.Text);
Image1.Canvas.Ellipse(0,0,200,200); //Генерация точек
{Randomize};
For I := 1 To N do
begin
X := (Random(200*R)-100)/100;
Y := (Random(200*R)-100)/100;
Image1.Canvas.Pixels[Round(100*X)+100,100 - Round(100*Y)]:=clBlack;
If X*X + Y*Y <= R Then M := M + 1 end;
//Площадь
Label1.Caption := FloatToStr(4*R*R*M/N);
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Webbrowser1.Navigate(GetCurrentDir+'\mk.htm');
//Form1.Show;
end;
end.
Вывод
Полезные ресурсы
Учебник по Delphi 7 для начинающих 1.0.