Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.06.2014, 19:08
Zig852 Zig852 вне форума
Прохожий
 
Регистрация: 29.05.2014
Сообщения: 6
Версия Delphi: delphi 7
Репутация: 10
По умолчанию интегрирование методом монте-карло

Здравствуйте! Прошу помощи. Очень нужна дельная подсказка в корректировке кода. Пишу программу в Delhi по нахождению определенного интеграла методом Монте-Карло. Вот код.
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
    const
      x1=2; // Интервал
      X2=3; // интегрирования
var
  Form1: TForm1;
  k:      integer; // Количество точек введенных пользователем
  y1,y2:  real;
  n,m:    integer;
  r1,r2:  real; //случайные числа от 0 до 1
  fx:     real;
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  r1: real;
  r2: real;
  x,y,Integral: real;
  i:integer;
  j:  integer;
begin
  y1:=0;
  y2:= strtoint(Edit1.Text); //Это значение равно 15
  //i:=1;
  n:=0;
  m:=0;
  k:=strtoint(Edit2.text); //количество точек введенное пользователем
 
repeat
  //=============== Запускаем цикл нахождения точки =====================
  Randomize; //Запускаем генератор случ. чисел
  for i := 1 to k do
  begin
    r1:= Random; //Генерируем случ. числа от 0 до 1
    r2:= Random;
   //ShowMessage ('r1= '+FloatToStr(r1)+ #13 + ' r2= ' + FloatToStr(r2));
  end;
  x := x1 + (r1*(x2-x1));
  y := r2 * y2;
  fx :=((3*x*x) - (4*x) - 1);
 
  if y <= fx then n:= n+1 else
  if y > fx  then m:= m+1;
//=========================================================================
until i<=k;
 
  Integral:= ((x2-x1)*(y2-y1)*(n/(n+m)));
  Edit3.Text:=floattostr(Integral);
 
end;
 
end.
Админ: Пользуемся тегами для оформления кода!
Изображения
Тип файла: jpg Интеграл.jpg (3.1 Кбайт, 20 просмотров)
Вложения
Тип файла: rar моя программа.rar (222.9 Кбайт, 18 просмотров)

Последний раз редактировалось Admin, 04.06.2014 в 19:26.
Ответить с цитированием
  #2  
Старый 05.06.2014, 11:12
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

для начала Randomize вынести из цикла
Ответить с цитированием
  #3  
Старый 05.06.2014, 13:08
Zig852 Zig852 вне форума
Прохожий
 
Регистрация: 29.05.2014
Сообщения: 6
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Вынес не чего не изменилось
Ответить с цитированием
  #4  
Старый 05.06.2014, 15:17
icWasya icWasya вне форума
Местный
 
Регистрация: 09.11.2010
Сообщения: 499
Репутация: 10
По умолчанию

А нафига двойной цикл?
1)уберите repeat из 55 строки
2)уберите end из 63 строки
3)и напишите его вместо until в 71 строке
Ответить с цитированием
Этот пользователь сказал Спасибо icWasya за это полезное сообщение:
Zig852 (05.06.2014)
  #5  
Старый 05.06.2014, 23:08
Zig852 Zig852 вне форума
Прохожий
 
Регистрация: 29.05.2014
Сообщения: 6
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Все ровно у меня не считает интеграл(
Ответить с цитированием
  #6  
Старый 05.06.2014, 23:10
Zig852 Zig852 вне форума
Прохожий
 
Регистрация: 29.05.2014
Сообщения: 6
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

кому не сложно, если сможете поправить код в исходнике, скиньте его сюда) Очень прошу, не чего путного не выходит.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:29.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025