Методы Монте-Карло и их использование в программировании
Обзор основных элементов программирования. Алгоритмы метода Монте-Карло для решения интегральных уравнений второго рода. Способ усреднения подынтегральной функции. Описание программ комплекса: компонент Edit, Panel, Image. Инструкция к работе программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 24.05.2016 |
Размер файла | 268,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ВВЕДЕНИЕ
Методы Монте-Карло - это общее название группы методов для решения различных задач с помощью случайных последовательностей, что является актуальным и по сей день.
Возникновение идеи использования случайных явлений в области приближённых вычислений принято относить к 1878 году, когда появилась работа Холла об определении числа с помощью случайных бросаний иглы на разграфлённую параллельными линиями бумагу. Существо дела заключается в том, чтобы экспериментально воспроизвести событие, вероятность которого выражается через число , и приближённо оценить эту вероятность. Отечественные работы по методу Монте-Карло появились в 1955-1956 годах. С того времени накопилась обширная библиография по методу Монте-Карло. Даже беглый просмотр названий работ позволяет сделать вывод о применимости метода Монте-Карло для решения прикладных задач из большого числа областей науки и техники.
Метод Монте-Карло оказал и продолжает оказывать существенное влияние на развитие методов вычислительной математики (например, развитие методов численного интегрирования) и при решении многих задач успешно сочетается с другими вычислительными методами и дополняет их.
Сущность метода Монте-Карло состоит в следующем: требуется найти значение, а некоторой изучаемой величины.
Основные цели проекта:
* Применения метода Монте-Карло для расчета функционалов и их параметрических производных от решения и нахождения площади;
* Разработка Задачи Дирихле для уравнения Лапласа;
* Приблизительное вычисление числа Пи. При радиусе окружности 1, а площадь окружности будет равна числу Пи;
* Построение информационной модели;
* Расчет площади по построенному графику и вычисление площади.
1. ОБЩАЯ ЧАСТЬ
1.1 Обзор элементов программирования
Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal. В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.
Стандартные компоненты Delphi перечислены ниже с некоторыми комментариями по их применению. При изучении данных компонент было бы полезно иметь под рукой компьютер с тем, чтобы посмотреть, как они работают и как ими манипулировать.
· TMainMenu позволяет Вам поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют "невидимыми компонентом", поскольку они невидимы во время выполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
· TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.
· TLabel служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
· TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
· TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц. (Есть VBX и "родные" компоненты Delphi, где этот предел снят).
· TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом (подчеркнуто то, что нужно написать вручную):
· TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox'ов.
· TRadioButton позволяет выбрать только одну опцию из нескольких. Если Вы опять откроете диалог Options | Project и выберете страницу Linker Options, то Вы можете видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
· TListBox нужен для показа прокручиваемого списка. Классический пример ListBox'а в среде Windows - выбор файла из списка в пункте меню File | Open многих приложений. Названия файлов или директорий и находятся в ListBox'е.
· TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
· TScrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox'ах при необходимости прокрутки текста для просмотра.
· TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
· TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.
· TScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется TScrollBox.
программирование подынтегральный функция edit
2. СПЕЦИАЛЬНАЯ ЧАСТЬ
2.1 Общая постановка задачи
Для нахождения значения методами Монте-Карло выбирают такую случайную величину Х, математическое ожидание которой равно, а: М(Х)=а.
Практически же поступают так: производят n испытаний, в результате которых получают n возможных значений Х; вычисляют их среднее арифметическое и принимают x в качестве оценки (приближённого значения) a* искомого числа a:
.
Дискретной называют случайную величину, которая принимает отдельные, изолированные возможные значения с определёнными вероятностями. Число возможных значений дискретной случайной величины может быть конечным или бесконечным.
Математическим ожиданием дискретной случайной величины называют сумму произведений всех её возможных значений на их вероятность.
,
где Х - случайная величина, - значения, вероятности которых соответственно равны .
Математическое ожидание приближённо равно (тем точнее, чем больше число испытаний) среднему арифметическому наблюдаемых значений случайной величины.
Дисперсией (рассеянием) случайной величины называют математическое ожидание квадрата отклонения случайной величины от её математического ожидания:
(3.1.1)
Средним квадратичным отклонением случайной величины Х называют квадратный корень из дисперсии:
(3.1.2).
Точечной называют оценку, которая определяется одним числом.
Интервальной называют оценку, которая определяется двумя числами - концами интервала. Интервальные оценки позволяют установить точность и надёжность оценок.
Пусть, найденная по данным выборки, статистическая характеристика служит оценкой неизвестного параметра . Ясно, что тем точнее определяет параметр , чем меньше абсолютная величина разности . Другими словами, если >0 и , то, чем меньше , тем оценка точнее. Положительное число характеризует точность оценки.
Надёжностью (доверительной вероятностью) оценки по называют вероятность , с которой осуществляется неравенство .
Доверительным называют интервал , который покрывает неизвестный параметр с заданной надёжностью .
Нормальным называют распределение вероятностей непрерывной
случайной величины, которое описывается дифференциальной функцией
(3.1.3)
а - математическое ожидание, - среднее квадратичное отклонение нормального распределения.
Пусть для получения оценки a* математического ожидания а случайной величины Х было произведено n независимых испытаний (разыграно n возможных значений Х) и по ним была найдена выборочная средняя , которая принята в качестве искомой оценки: . Ясно, что если повторить опыт, то будут получены другие возможные значения Х, следовательно, другая средняя, а значит, и другая оценка a*. Уже отсюда следует, что получить точную оценку математического ожидания невозможно. Естественно возникает вопрос о величине допускаемой ошибки. Ограничимся отысканием лишь верхней границы допускаемой ошибки с заданной вероятностью (надёжностью) : .
Интересующая нас верхняя грань ошибки есть не что иное, как «точность оценки» математического ожидания по выборочной средней при помощи доверительных интервалов.
Рассмотрим следующие три случая.
Случайная величина Х распределена нормально и её среднее
квадратичное отклонение известно.
В этом случае с надёжностью верхняя граница ошибки
,(3.1.4)
где n число испытаний (разыгранных значений Х); t - значение аргумента функции Лапласа, при котором , - известное среднее квадратичное отклонение Х.
Случайная величина Х распределена нормально, причём её среднее квадратическое отклонение неизвестно.
В этом случае с надёжностью верхняя граница ошибки
,(3.1.5)
где n - число испытаний; s - «исправленное» среднее квадратическое отклонение, .
Случайная величина Х распределена по закону, отличному от нормального.
В этом случае при достаточно большом числе испытаний (n>30) с надёжностью, приближённо равной , верхняя граница ошибки может быть вычислена по формуле (3.1.4), если среднее квадратическое отклонение случайной величины Х известно; если же неизвестно, то можно подставить в формулу (3.1.4) его оценку s - «исправленное» среднее квадратическое отклонение либо воспользоваться формулой (3.1.5). Заметим, что чем больше n, тем меньше различие между результатами, которые дают обе формулы. Это объясняется тем, что при распределение Стьюдента стремится к нормальному.
Из изложенного следует, что метод Монте-Карло тесно связан с задачами теории вероятностей, математической статистики и вычислительной математики. В связи с задачей моделирования случайных величин (в особенности равномерно распределённых) существенную роль играют также методы теории чисел.
Среди других вычислительных методов, метод Монте-Карло выделяется своей простотой и общностью. Медленная сходимость является существенным недостатком метода, однако, могут быть указаны его модификации, которые обеспечивают высокий порядок сходимости при определённых предположениях. Правда, вычислительная процедура при этом усложняется и приближается по своей сложности к другим процедурам вычислительной математики. Сходимость метода Монте-Карло является сходимостью по вероятности. Это обстоятельство вряд ли следует относить к числу его недостатков, ибо вероятностные методы в достаточной мере оправдывают себя в практических приложениях. Что же касается задач, имеющих вероятностное описание, то сходимостью по вероятности является даже в какой-то мере естественной при их исследовании.
Алгоритмы метода Монте-Карло для решения интегральных уравнений второго рода.
Пусть необходимо вычислить линейный функционал , где , причём для интегрального оператора K с ядром выполняется условие, обеспечивающее сходимость ряда Неймана: . Цепь Маркова определяется начальной плотностью и переходной плотностью ; вероятность обрыва цепи в точке равна . N - случайный номер последнего состояния. Далее определяется функционал от траектории цепи, математическое ожидание которого равно . Чаще всего используется так называемая оценка по столкновениям , где ,. Если при , и при , то при некотором дополнительном условии . Важность достижения малой дисперсии в знакопостоянном случае показывает следующее утверждение: если и , где , то , а . Моделируя подходящую цепь Маркова на ЭВМ, получают статистическую оценку линейных функционалов от решения интегрального уравнения второго рода. Это даёт возможность и локальной оценки решения на основе представления: , где . Методом Монте-Карло оценка первого собственного значения интегрального оператора осуществляется интерациональным методом на основе соотношения . Все рассмотренные результаты почти автоматически распространяются на системы линейных алгебраических уравнений вида . Решение дифференциальных уравнений осуществляется методом Монте-Карло на базе соответствующих интегральных соотношений.
Способ усреднения подынтегральной функции.
В качестве оценки определённого интеграла принимают
, (3.1.6)
где n - число испытаний; - возможные значения случайной величины X, распределённой равномерно в интервале интегрирования , их разыгрывают по формуле , где - случайное число.
Дисперсия усредняемой функции равна
, (3.1.7)
где , . Если точное значение дисперсии вычислить трудно или невозможно, то находят выборочную дисперсию (при n>30) , или исправленную дисперсию (при n<30) , где .
Эти формулы для вычисления дисперсии применяют и при других способах интегрирования, когда усредняемая функция не совпадает с подынтегральной функцией.
В качестве оценки интеграла , где область интегрирования D принадлежит единичному квадрату , , принимают
,(3.1.8)
где S - площадь области интегрирования; N - число случайных точек , принадлежащих области интегрирования.
Если вычислить площадь S трудно, то в качестве её оценки можно принять ; в этом случае формула (3.1.5) имеет вид
,
где n - число испытаний.
В качестве оценки интеграла , где область интегрирования V принадлежит единичному кубу , , , принимают , где V - объём области интегрирования, N - число случайных точек , принадлежащих области интегрирования.
Если вычислить объём трудно, то в качестве его оценки можно принять , в этом случае формула (3.1.6) имеет вид , где n - число испытаний.
2.2 Описание программ комплекса
Компонент Edit:
Свойство Text - содержит текст, который пользователь набирает в окне Edit. Этот текст надо преобразовать в число Ntotal. Для этого в Delphi есть необходимая функция StrToInt:
Ntotal = StrToInt (Edit1.Text).
Компонент Panel:
Свойство Caption - содержит текст, который выводится на панель. Чтобы вывести полученное число Sfig на панель, мы должны преобразовать его в строку S с помощью процедуры Str:
Str(Sfig:10:4, S),
а потом вывести эту строку на панель следующим образом:
Panel1.Caption:= `Площадь фигуры = ` + S
Компонент Image:
Свойства Height и Width -
соответственно высота и ширина компонента;
Свойство Canvas - отводит канву (место) для рисования на компоненте Image;
Методы Canvas:
FillRect(ClientRect) - закрашивает область клиента компонента Image каким - либо цветом
(по - умолчанию - белым), т.е. стирает предыдущую картинку;
MoveTo(X, Y) - перемещает перо в точку с координатами X, Y без проведения линии (координаты задаются в пикселях);
LineTo(X, Y) - проводит линию из текущей точки в точку с координатами X, Y;
Pixels[I, J] - содержит цвет точки с координатами I, J.
У кнопки (компонент Button) мы будем обрабатывать событие onClick (событие нажатие кнопки). Т.е. вышеописанный алгоритм мы программируем в процедуре Button1Click.
Для создания программы были использованы программные средства:
· Borland Delphi 7 - написание, отладка, компиляция и исполнение текста программы;
· Microsoft Word - для ввода и описания текстового документа (проекта);
· Photoshop 6.0 - Редактирование изображений.
Благодаря тому, что программа создана в среде программирования Borland Delphi она поддерживается любыми версиями Microsoft Windows.
2.3 Таблица идентификатора комплекса
Тип |
Обозначение |
Описание |
|
Alpha |
A |
Строка длиной не более 255 символов (аналог ShortString) |
|
Number |
N |
Число с плавающей точкой (аналог Double) |
|
Money |
$ |
То же, что и Number, но при выводе сопровождается обозначением денежного знака |
|
Short |
S |
Малое целое (аналог SmallInt) |
|
LongInteger |
I |
Целое (аналог LongInt) |
|
BCD |
# |
Число в двоично-десятичном формате |
|
Date |
D |
Дата в диапазоне от 1 января 9999г. до н.э. до 31 декабря 9999г. |
|
Time |
T |
Время |
|
Timestamp |
@ |
Дата и время |
|
Memo |
M |
Строка произвольной длины. Первые 240 символов хранятся в файле основной таблице, остальные - в файле с BLOB-данными |
|
Formatted Memo |
F |
То же, что и Memo но для RTF-текста |
|
Graphic |
G |
Графическое изображение в формате BMP, PCX, TIFF, GIF или EPS. При выводе преобразуется в BMP, хранится в файле с BLOB-данными |
|
OLE |
O |
Произвольные данные, которые поддерживаются через OLE. Хранятся в файле в BLOB-данными |
|
Logical |
L |
Логическое значение (TRUE или FALSE) |
|
Autoincrement |
+ |
Автоинкрементное поле. При добавлении новой записи значение этого поля автоматически увеличивается на 1 |
|
Binary |
B |
Двоичная информация (произвольная последовательность байтов). Подобно Memo, первые 240 байт хранятся в файле основной таблицы, остальные - в BLOB |
|
Bytes |
Y |
Двоичная информация (произвольная последовательность байтов) длиной не более 255 символов |
2.4 Описание наборов данных
Входными данными являются целые числа, для которых отведены отдельные ячейки в создание на форме окне. Вводимые данные будут основными вычисляемыми параметрами программы.
Выходными данными будут вещественные числа, которые при проведении вычисления будут выводиться в графическое окно и на форму.
Переменные, которые будут использоваться
Наименование |
Тип |
Функции |
|
Const |
Variable; |
Это переменная, значение которой нельзя изменить. |
|
N |
Integer; |
Переменная для вывода отдельного элемента |
|
A |
Real; |
Переменная для ввода отдельного элемента |
|
Cos |
Real; |
подсчитывает косинус числа |
|
Max |
Integer; |
Переменная для вывода максимального целочисленного элемента |
|
Min |
Integer; |
Переменная для вывода минимального целочисленного элемента |
|
Y |
Integer; |
Переменная для вывода отдельного элемента |
|
X |
Integer; |
Переменная для вывода отдельного элемента |
|
KH |
Integer; |
Количество шагов сетки |
|
sH |
Integer; |
Шаг сетки в пикселах |
|
I |
Integer; |
Переменная для вывода отдельного элемента |
|
r |
Real; |
Переменная для замены элементы матрицы |
|
p |
Real; |
Переменная для замены элементы матрицы |
|
K1 |
Integer; |
Переменная для рисования графика |
|
K2 |
Integer; |
Переменная для рисования графика |
|
st |
String; |
Для вывода строки |
|
M |
Integer; |
Переменная для вывода отдельного элемента |
|
Sin |
Real; |
Подсчитывает синус числа |
3. ОРГАНИЗАЦИЯ ПРОИЗВОДСТВА
3.1 Комплекс технических средств необходимых для решения задачи
Для работы программы “Решение Методом Монте-Карло” потребуется:
Системные требования:
* Процессор: Core 2 Duo;
* Память: 1 Gb; (2 GB recommended);
* Видеокарта: 256 Mb;
* Свободное место на диске: 30 Mb;
* Операционная система: Windows 7, Windows Vista с пакетом обновления 1 (SP1), Windows Server 2003 с пакетом обновления 2 (SP2).
Для того чтобы программа правильно работала необходимо чтобы все файлы программы были в корневом каталоге.
Инсталляция программы не требуется.
3.1 Инструкция пользователю по работе с программой
Чтобы начать работу с программой вычисления методами Монте-Карло необходимо дважды щелкнуть по файлу «MonteKarlo.exe».
Запуститься программа и на экране появится главная форма. Чтобы рассчитать нужным Вам методом, нужно выбрать на главной форме один из пяти представленных методов.
Рис. 1 Главная форма программы.
Допустим, Вы выбрали первый метод решения “Нахождение площади методом Монте-Карло”
Рис. 2 Вычисление площади.
Необходимо ввести количество испытаний для наглядного примера решения задачи и нажать на кнопку “Вычислить”. Вы увидите точечный рисунок на форме и найденная площадь фигуры. Для того чтобы очистить форму от рисунка и найденного ранее вычисления площади достаточно нажать на кнопку “Очистить”.
Так же для выбора других методов следует выбрать в “Меню” нужный Вам метод. Чтобы вернуться на главную форму выбора методов следует нажать на кнопку “Вернуться”. Для полного выхода из программы нажать на “Выход”.
Рис. 3 Вычисление площади(обозначения)
Для более детального описания работы различных методов нужно при открытие выбранного Вами метода, нажать на пункт меню “Информация”
Рис. 4 Информация.
ЗАКЛЮЧЕНИЕ
В данном проекте был рассмотрены различные методы Монте - Карло. Эти методы имитации применимы для решения почти всех задач при условии, что альтернативы могут быть выражены количественно. Построение модели начинается с определения функциональных зависимостей в реальной системе, которые в последствии позволяют получить количественное решение, используя теорию вероятности и таблицы случайных чисел.
В результате выполнения данного проекта был разработан программный продукт для вычисления нескольких методом решения задач Монте-Карло.
Также было проведено исследование полученного программного продукта. В результате были выявлены следующие преимущества полученного программного продукта:
· Возможность выводить рисунок с построение точек;
· Нахождение площади фигуры решаемых испытаний;
· Построение графиков;
· Нахождение приблизительного числа П.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
1. И.М.Соболь «Метод Монте-Карло», Москва, 2001 г.
2. И.М.Соболь «Численные методы Монте-Карло», Москва, 2003 г.
3. С.Бобровский «Delphi 5: Учебный курс.», Питер, 2003 г.
4. С.Бобровский «Delphi 7: Учебный курс.» Питер, 2007 г.
5. В.Побельский, С.Фомин «Программирование языке Delphi», Москва, 2001 г.
6. М.Прохоров. «Большая Российская энциклопедия», 2002 г.
7. С.М.Ермаков. «Методы Монте-Карло и смежные вопросы.», 2000 г.
ЛИСТИНГ ПРОГРАММЫ
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, jpeg, Menus;
type
TForm2 = class(TForm)
Label1: TLabel;
BitBtn1: TBitBtn;
Image1: TImage;
Label2: TLabel;
Edit1: TEdit;
Panel1: TPanel;
Panel2: TPanel;
BitBtn2: TBitBtn;
Label3: TLabel;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N21: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const A = -Pi/2.0; B = pi/2.0; n = 1000;
var
Form2: TForm2;
N_total:longint;
implementation
uses Unit1, Unit3, Unit4, Unit5, Unit6, Unit8;
{$R *.dfm}
Function FUNC(x:real):real;
begin
Func:=Cos(x);
end;
Procedure Graphic( var right, down: integer;
var X_min, X_max, Y_min, Y_max, Kx, Ky: real);
type arr=array[1..n] of real;
var
X, Y: arr; dx: real;
i: integer;
begin
dx:=(B-A)/(n-1);
for i:=1 to n do begin X[i]:=A+dx*(i-1);
Y[i]:=FUNC(X[i]);
end;
{Нахождение максимального и минимального значений функции и аргумента}
X_max:=B; X_min:=A;
Y_max:=Y[1]; Y_min:=Y[1];
for i:=2 to n do begin
if Y_max < Y[i] then Y_max:=Y[i];
if Y_min > Y[i] then Y_min:=Y[i];
end;
{Нахождение коэффициентов сжатия}
Kx:=right/(X_max-X_min);
Ky:=down/(Y_max-Y_min);
{Устранение искажения графика}
if Kx < Ky then begin
Ky:=Kx;
down:=round((Y_max-Y_min)*Ky);
end
else begin
Kx:=Ky;
right:=round((X_max-X_min)*Kx);
end;
end;
procedure TForm2.BitBtn1Click(Sender: TObject);
var N_total, N_fig, i:longint;
S_total,S_fig,X,Y:real;
Xg, Yg: integer;
X_min, X_max, Y_min, Y_max, Kx, Ky : real;
Right, Down: integer;
S:string;
begin
randomize;
With Image1, Canvas do
begin
FillRect(ClientRect);
Right := Width;
Down := Height;
Graphic(Right, Down, X_min, X_max, Y_min, Y_max, Kx, Ky);
Width := Right ;
Height := Down ;
{Рисование осей}
Xg:=round(-X_min*Kx);
Yg:=Down-round(-Y_min*Ky);
{Ось Y}
MoveTo(Xg,Down);
LineTo(Xg, 0);
moveto(Xg, 0);
lineto(Xg+4, 10);
moveto(Xg, 0);
lineto(Xg-4, 10);
{Ось Х}
MoveTo(0, Yg-1);
lineTo( Right, Yg-1);
moveto(Right, Yg);
lineto(Right-10, Yg+5);
moveto(Right, Yg);
lineto(Right-10, Yg-5);
N_fig:=0;
N_total:=StrToInt(Edit1.Text);
{Розыгрыш координат точек}
for i:=1 to N_total do
begin
X:=random*(B-A)+A;
Y:=random*(Y_max-Y_min)+Y_min;
if Y <= FUNC(X)then
begin
Xg:=round((X-X_min)*Kx);
Yg:=Down-round((Y-Y_min)*Ky);
Pixels[Xg, Yg]:=clBlack;
Application.ProcessMessages;
N_fig:=N_fig+1;
end;
end;
end;
S_fig:=(Y_max-Y_min)*(B-A)*N_fig/N_total;
Str(S_fig:10:4,S);
Panel1.Caption:='Площадь фигуры = '+S;
Panel2.Caption:='Pi = 3.1416';
end;
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Form1.Show;
Form2.Hide;
end;
procedure TForm2.BitBtn3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm2.BitBtn4Click(Sender: TObject);
begin
Image1.picture:=nil;
Panel1.Caption:='';
end;
procedure TForm2.N3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm2.N4Click(Sender: TObject);
begin
Form1.Show;
Form2.Hide;
end;
procedure TForm2.N21Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm2.N6Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm2.N5Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm2.N7Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm2.N2Click(Sender: TObject);
begin
Form8.Show;
end;
end.
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Math, Buttons, Menus;
type
TForm3 = class(TForm)
PaintBox1: TPaintBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N11: TMenuItem;
Label4: TLabel;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
procedure PaintBox1Paint(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
KH : Integer; //Количество шагов сетки
sH : Integer = 0; //Шаг сетки в пикселах
Tochka : TPoint; //Наша точка
ArrPoinr : Array Of TPoint;
implementation
uses Unit1, Unit2, Unit4, Unit5, Unit6, Unit9;
{$R *.dfm}
procedure TForm3.PaintBox1Paint(Sender: TObject);
Var
i : Integer;
begin
If sH=0 Then Exit;
//Перерисовка пути точки...
With PaintBox1, PaintBox1.Canvas Do
Begin
Pen.Color:=clBlack;
//Очищаем поле...
FillRect(ClientRect);
//Рисуем сетку...
Pen.Width:=1;
for i:=0 to KH do
begin
moveto(Min(i*sH,Width-1),0);
lineto(Min(i*sH,Width-1),Height);
moveto(0,Min(i*sH,Height-1));
lineto(Width,Min(i*sH,Height-1));
end;
Pen.Width:=2; //Величина линии между точками
Pen.Color:=clRed;
moveto(ArrPoinr[0].X*sH,ArrPoinr[0].Y*sH);
Ellipse(ArrPoinr[0].X*sH-2,ArrPoinr[0].Y*sH-2,ArrPoinr[0].X*sH+2,ArrPoinr[0].Y*sH+2);
For i:=1 To Length(ArrPoinr)-1 Do
Begin
//Линия до следующей точки
Lineto(ArrPoinr[i].X*sH,ArrPoinr[i].Y*sH);
Ellipse(ArrPoinr[i].X*sH-2,ArrPoinr[i].Y*sH-2,ArrPoinr[i].X*sH+2,ArrPoinr[i].Y*sH+2);
End;
End;
end;
procedure TForm3.BitBtn1Click(Sender: TObject);
Var
r : Byte;
begin
Randomize;
Memo1.Lines.Clear;
KH:=StrToInt(Edit1.Text);
//Начальные координаты точки
Tochka.X:=StrToInt(Edit2.Text);
Tochka.Y:=StrToInt(Edit3.Text);
sH:=(PaintBox1.Height Div KH);
SetLength(ArrPoinr,1); //Для первой точки
ArrPoinr[0]:=Tochka; //Первое положение точки в массив
//Перемещаем точку...
Repeat
r:=Random(101);
Case r Of
0..25 : Tochka.X:=Tochka.X+1;
26..50 : Tochka.Y:=Tochka.Y-1;
51..75 : Tochka.X:=Tochka.X-1;
76..100 : Tochka.Y:=Tochka.Y+1; //Вниз
End;
SetLength(ArrPoinr,Length(ArrPoinr)+1); //Для следующей точки
ArrPoinr[Length(ArrPoinr)-1]:=Tochka; //Очередное положение точки в массив
Memo1.Lines.Add(FloatToStrF(r/100,ffFixed,6,2));
PaintBox1.OnPaint(Sender);
//.Refresh; //Перерисуем PaintBox
Application.ProcessMessages; //Позволяем перерисовать
Until ((Tochka.X=0) Or (Tochka.Y=0) Or (Tochka.X=10) Or (Tochka.Y=10));
//Перемещение закончено
//SetLength(ArrPoinr) = количество шагов перемещения точки в массиве
//в Memo1 - тоже все значения перемещения точки
//ЗДЕСЬ ОБРАБОТКА.........
sH:=0;
Finalize(ArrPoinr); //Освобождаем память массива...
end;
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Form1.Show;
Form3.Hide;
end;
procedure TForm3.N11Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm3.N3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm3.N5Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm3.N6Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm3.N7Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm3.N4Click(Sender: TObject);
begin
Form1.Show;
Form3.Hide;
end;
procedure TForm3.N2Click(Sender: TObject);
begin
Form9.Show;
end;
end.
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus;
type
TForm4 = class(TForm)
BitBtn1: TBitBtn;
Memo1: TMemo;
Memo2: TMemo;
Label1: TLabel;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
x,y,i,k1,k2:integer; r,p:real; st:string;
implementation
uses Unit1, Unit2, Unit3, Unit5, Unit6;
{$R *.dfm}
procedure TForm4.BitBtn1Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
end;
procedure TForm4.BitBtn2Click(Sender: TObject);
begin
Form1.Show;
Form4.Hide;
end;
procedure TForm4.BitBtn3Click(Sender: TObject);
begin
randomize; k1:=0;
with form4.Canvas do begin
for i:=1 to 200000 do begin
x:=random(300);
y:=random(300);
r:=sqrt((x-150)*(x-150)+(y-150)*(y-150));
if r<=150 then begin
Pixels[x+30, y+30]:=$000000FF;
inc(k1);
end
Else
begin
Pixels[x+30, y+30]:=$00FF0000;
end;
end;
p:=4*k1/200000;
str(p,st);
TextOut(10, 300, st);
end;
end;
procedure TForm4.N2Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm4.N3Click(Sender: TObject);
begin
Form1.Show;
Form4.Hide;
end;
procedure TForm4.N4Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm4.N5Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm4.N6Click(Sender: TObject);
begin
Form5.Show;
end;
procedure TForm4.N7Click(Sender: TObject);
begin
Form6.Show;
end;
end.
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Math, StdCtrls, ExtCtrls, Buttons, Menus;
type
TForm5 = class(TForm)
Image1: TImage;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BitBtn3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
R: integer; //радиус
N: integer; //количество "брошенных" точек
X: real; //координата точек X
Y: real; //координата точек Y
M: integer; //количество точек, попавших
I: integer;
implementation
uses Unit1, Unit2, Unit3, Unit4, Unit10, Unit6;
{$R *.dfm}
procedure TForm5.BitBtn1Click(Sender: TObject);
begin
//Стирание
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Rectangle(100-R,100-R,100+R,100+R); Image1.Canvas.FillRect(Rect(100-R, 100-R, 100+R,100+R));
M:=0;
//Ввод значений
R:=StrToInt(Edit1.Text);
N:=StrToInt(Edit2.Text);
//Рисование квадрата и круга
Image1.Canvas.Rectangle(100-R,100-R,100+R,100+R); Image1.Canvas.Ellipse(100-R, 100-R,100+R, 100+R); //Генерация точек Randomize;
For I:=1 To N do begin
X:=Random(2*R)-R;
Y:=Random(2*R)-R;
Image1.Canvas.Pixels[Round(X)+100,
Round(Y)+100]:=clRed;
If Sqr(X)+Sqr(Y)<=Sqr(R)
Then M:=M+1
end;
//Площадь
Label1.Caption:=FloatToStr(4*Sqr(R)*M/N);
//Число PI
Label2.Caption:=FloatToStr(4*M/N);
end;
procedure TForm5.BitBtn2Click(Sender: TObject);
begin
Image1.picture:=nil;
label1.caption:='Вывод значений площади круга';
label2.caption:='Вывод значений числа Pi';
end;
procedure TForm5.Edit1KeyPress(Sender: TObject; var Key: Char);
const
D = ['0', '1', '5', #8];
begin
if not (Key in D) then Key := #0;
end;
procedure TForm5.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssShift in Shift) and (Key = VK_INSERT) then Abort;
end;
procedure TForm5.BitBtn3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
end;
procedure TForm5.N2Click(Sender: TObject);
begin
Form10.Show;
end;
procedure TForm5.BitBtn4Click(Sender: TObject);
begin
Form1.Show;
Form5.Hide;
end;
procedure TForm5.N4Click(Sender: TObject);
begin
Form1.Show;
Form5.Hide;
end;
procedure TForm5.N5Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm5.N6Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm5.N7Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm5.N8Click(Sender: TObject);
begin
Form6.Show;
end;
procedure TForm5.N3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
end.
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Menus, ExtCtrls;
type
TForm6 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Edit1: TEdit;
Edit2: TEdit;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
BitBtn6: TBitBtn;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form6: TForm6;
N: integer;
M: integer;
implementation
uses Unit1, Unit2, Unit3, Unit4, Unit5, Unit11;
{$R *.dfm}
procedure TForm6.BitBtn3Click(Sender: TObject);
var x0, y0, y, a: real;
b,k, i, c: integer;
begin
Randomize;
k:=0;
c:= strtoint(Form6.Edit2.Text);
For i:=1 to c do
begin
x0:=Random(100)+250;
//a:=round((x0-250)/10);
a:=(x0-250)/10;
y0:=250 - a*a;
y:=Random(100)+ 150;
If y<y0 then
begin
k:=k+1;
Canvas.Pixels [round(x0), round(y)]:=clNavy;
end;
end;
N:=k;
M:=c;
end;
procedure TForm6.BitBtn1Click(Sender: TObject);
var
a:integer;
b: integer;
x0, y0: real;
x, y: real;
begin
with Canvas do
begin
TextOut (250, 35, 'y'); // надпись оси координат y
TextOut (455, 245, 'x'); // надпись оси координат x // полотнище
Canvas.Pen.Width := 1;
Canvas.Pen.Color := clBlack;
// Canvas.Brush.Color := clCream;
// Rectangle(50,50,450,450);
// координатная ось
TextOut (240, 255, '0'); // надпись центра оси координат
Form6.Canvas.MoveTo(245,55);// стрелка
Form6.Canvas.LineTo(250,50); // левая по y
Form6.Canvas.MoveTo(250,50);// стрелка
Form6.Canvas.LineTo(257,56); // правая по y
Form6.Canvas.MoveTo(445,245);// стрелка
Form6.Canvas.LineTo(450,250); // левая по y
Form6.Canvas.MoveTo(450,250);// стрелка
Form6.Canvas.LineTo(445,255); // правая по y
Form6.Canvas.MoveTo(50,250);// Ось
Form6.Canvas.LineTo(450,250); // Х
Form6.Canvas.MoveTo(250,50);// Ось
Form6.Canvas.LineTo(250,450); // Y
// засечка 1 по оси y
Form6.Canvas.MoveTo(245,150);
Form6.Canvas.LineTo(255,150);
TextOut (240, 150, '1');
// засечка 1 по оси x
Form6.Canvas.MoveTo(350,245);
Form6.Canvas.LineTo(350,255);
TextOut (350, 255, '1');
// асимптота 1
Canvas.Pen.Width := 3;
Canvas.Pen.Color := clGreen;
Form6.Canvas.MoveTo(250,150);
Form6.Canvas.LineTo(350,150);
// асимптота 2
Canvas.Pen.Width := 3;
Canvas.Pen.Color := clBlue;
Form6.Canvas.MoveTo(250,250);
Form6.Canvas.LineTo(350,250);
end;
// парабола
with Canvas do
begin
x0:=250;
y0:=250;
x:=0;
Canvas.Pen.Width:=5;
while x0<=340 do
begin
y:=x*x;
Canvas.Pixels[round(x0)+round(x), round(y0)-round(y)]:=clRed;
x:=x+0.1;
x0:=x0+0.9;
end;
end;
end;
procedure TForm6.BitBtn2Click(Sender: TObject);
var S: real;
begin
S:=N/M;
Form6.Edit1.Text:=floattostr(S);
end;
procedure TForm6.BitBtn4Click(Sender: TObject);
begin
Canvas.Brush.Color := clBtnShadow;
Canvas.FillRect(Canvas.ClipRect);
Edit1.Clear;
end;
procedure TForm6.BitBtn5Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm6.N3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
procedure TForm6.BitBtn6Click(Sender: TObject);
begin
Form1.Show;
Form6.Hide;
end;
procedure TForm6.N2Click(Sender: TObject);
begin
Form11.show;
end;
procedure TForm6.N4Click(Sender: TObject);
begin
Form1.Show;
Form6.Hide;
end;
procedure TForm6.N5Click(Sender: TObject);
begin
Form2.Show;
end;
procedure TForm6.N6Click(Sender: TObject);
begin
Form3.Show;
end;
procedure TForm6.N7Click(Sender: TObject);
begin
Form4.Show;
end;
procedure TForm6.N8Click(Sender: TObject);
begin
Form5.Show;
end;
end.
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Buttons;
type
TForm7 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
BitBtn3: TBitBtn;
procedure BitBtn3Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses Unit1, Unit2, Unit3, Unit4, Unit5, Unit6;
{$R *.dfm}
procedure TForm7.BitBtn3Click(Sender: TObject);
begin
Form1.Show;
Form7.Hide;
end;
procedure TForm7.N3Click(Sender: TObject);
begin
Form1.close;
Form2.Close;
Form3.Close;
Form4.Close;
Form5.Close;
Form6.Close;
end;
end.
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm8 = class(TForm)
BitBtn2: TBitBtn;
BitBtn4: TBitBtn;
BitBtn3: TBitBtn;
BitBtn1: TBitBtn;
Memo1: TMemo;
Label5: TLabel;
Label2: TLabel;
Label3: TLabel;
Label1: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form8: TForm8;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm8.BitBtn2Click(Sender: TObject);
begin
Form2.Show;
Form8.Hide;
end;
end.
unit Unit9;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm9 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Label1: TLabel;
Label3: TLabel;
Memo1: TMemo;
Label6: TLabel;
Label2: TLabel;
BitBtn3: TBitBtn;
Label4: TLabel;
Memo2: TMemo;
Label5: TLabel;
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form9: TForm9;
implementation
uses Unit3;
{$R *.dfm}
procedure TForm9.BitBtn3Click(Sender: TObject);
begin
Form3.Show;
Form9.Hide;
end;
end.
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm10 = class(TForm)
Memo1: TMemo;
BitBtn1: TBitBtn;
Label5: TLabel;
Label6: TLabel;
BitBtn4: TBitBtn;
Label7: TLabel;
Label2: TLabel;
BitBtn3: TBitBtn;
Label1: TLabel;
Label3: TLabel;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit4, Unit5;
{$R *.dfm}
procedure TForm10.BitBtn2Click(Sender: TObject);
begin
Form5.Show;
Form10.Hide;
end;
end.
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm11 = class(TForm)
BitBtn2: TBitBtn;
BitBtn1: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
Label7: TLabel;
Label2: TLabel;
Label3: TLabel;
Label1: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form11: TForm11;
implementation
uses Unit6;
{$R *.dfm}
procedure TForm11.BitBtn2Click(Sender: TObject);
begin
Form6.Show;
Form11.Hide;
end;
end.
unit Unit12;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm12 = class(TForm)
Memo1: TMemo;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form12: TForm12;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm12.BitBtn1Click(Sender: TObject);
begin
Form1.Show;
Form12.Hide;
end;
end.
Размещено на Allbest.ru
...Подобные документы
Характеристика основных методов для решения различных задач с помощью случайных последовательностей. Реализация и проверка эффективности метода Монте-Карло при его применении на различных примерах. Алгоритм метода имитации. Издержки неопределенности.
курсовая работа [98,9 K], добавлен 04.05.2014Некоторые сведения теории вероятностей. Математическое ожидание, дисперсия. Точность оценки, доверительная вероятность. Сущность метода Монте-Карло. Генераторы случайных чисел. Вычисление кратных интегралов. Описание пользовательского интерфейса.
курсовая работа [301,5 K], добавлен 08.11.2013Запросы клиента по области возможных запросов к серверу. Программа для прогнозирования поведения надежности программного обеспечения на основе метода Монте-Карло. Влияние количества программ-клиентов на поведение программной системы клиент-сервера.
контрольная работа [705,3 K], добавлен 03.12.2010Изучение дисперсных систем и создание программы, реализующей метод Монте-Карло и моделирующей распределение частиц в определенной области. Исследование методов линейных итераций и вязкой суспензии. Характеристики распределения порошков по размерам.
контрольная работа [1,4 M], добавлен 05.12.2014Стадии процесса моделирования. Функция распределения непрерывной случайной величины. Методы моделирования (обратной функции, суперпозиции, исключения). Нормальные случайные величины. Метод Монте-Карло, точки равновесия. Моделирование динамических систем.
курсовая работа [1,2 M], добавлен 06.08.2013Расчетно-аналитический метод определения точности выходного параметра. Характеристики первичных параметров, используемые для моделирования на электронно-вычислительной машине производственного рассеяния. Программа для ЭВМ. Применение метода Монте-Карло.
курсовая работа [397,6 K], добавлен 06.04.2014Суть основных идей и методов, особенностей и областей применения программирования для численных методов и решения нелинейных уравнений. Методы итераций, дихотомии и хорд и их использование. Алгоритм метода Ньютона, создание программы и ее тестирование.
курсовая работа [423,0 K], добавлен 17.02.2010Описание математических методов решения систем линейных уравнений. Метод Гаусса, матричный метод. Вычисление определителей второго и третьего порядка. Язык программирования Паскаль. Структура программы, описание переменных, основные конструкции языка.
курсовая работа [137,3 K], добавлен 20.07.2010Численные методы решения нелинейных уравнений, систем линейных и нелинейных алгебраических уравнений, дифференциальных уравнений, определенных интегралов. Методы аппроксимации дискретных функций и методы решения задач линейного программирования.
методичка [185,7 K], добавлен 18.12.2014Основы метода Монте-Карло и его применение. Разработка и тестирование программного модуля для ПК BRAND, позволяющего строить двумерные и трехмерные изображения для сложных геометрических объектов для обеспечения контроля за качеством сборки конструкций.
дипломная работа [5,2 M], добавлен 10.10.2015Основные подходы к математическому моделированию макромолекул. Методы молекулярной динамики и Монте-Карло. Механическая модель молекулы. Применения компьютерного эксперимента. Механическая модель молекулы. Преимущества компьютерного моделирования.
реферат [44,9 K], добавлен 19.03.2009Проект и реализация настольного и веб-приложения, которое считает площадь фигуры методом "Монте-Карло" на базе WPF/C#, ASP/JScript, WebForm/ASMX/C#. Программные средства разработки приложения. Системные требования. Руководство программиста, пользователя.
курсовая работа [819,9 K], добавлен 23.11.2015- Разработка программы, вычисляющей определенный интеграл методом трапеций для подынтегральной функции
Разработка алгоритма решения определенного интеграла методом трапеций для подынтегральной функции и моделирования задачи вынужденных колебаний без затухания. Описание интерфейса программы в среде Delphi и MathCad; идентификаторы, модули и приложения.
курсовая работа [500,4 K], добавлен 28.05.2013 Ключи, стрелки и контакты в разделе Miscellaneous (Смесь) пакета MicroCAP-7. Устройство выборки-хранения Sample and Hold. Многовариантный анализ и параметрическая оптимизация. Статистический анализ по методу Монте-Карло. Анимация и трехмерные графики.
реферат [436,1 K], добавлен 23.01.2011Расчет коэффициентов физического распыления материалов при бомбардировке потоками ионов. Определение искомых зависимостей методом Монте-Карло в пакете SRIM. Диаграмма Экштайна для энергии ионов ксенона 600 эВ, а также изотропизация налетающего потока.
контрольная работа [532,4 K], добавлен 27.05.2013Проектирование и реализация 3 приложений, каждое из которых считает площадь фигуры методом "Монте-Карло". Программные средства разработки приложения. Диаграммы классов Triangle, Rectangle и IceCream. Логическое проектирование серверной части приложения.
курсовая работа [2,6 M], добавлен 06.02.2016Применение алгебры высказываний в информатике. Надстройки Microsoft Excel. Применение формул, таблиц, диаграмм. Моделирование реальных систем массового обслуживания с учетом различия серверов. Надстройка "Моделирование Монте-Карло", Дерево решений".
курсовая работа [46,0 K], добавлен 25.04.2013Азартные игры и наблюдение за спортивными состязаниями. Моделирование методом Монте-Карло - мощное средство, позволяющее определять вероятность событий в азартных играх и спорте. Моделирование вероятности событий с помощью программы Microsoft Excel.
реферат [801,3 K], добавлен 13.05.2009Назначение, создание современной информационно-аналитической системы. Формирование рабочей документации в среде Microsoft Project. Расчет длительности проекта методом Монте-Карло. Моделирование типов связи. Проектирование интерфейсов пользователя.
курсовая работа [4,9 M], добавлен 16.12.2014Постановка задачи линейного программирования. Решение системы уравнений симплекс-методом. Разработка программы для использования симплекс-метода. Блок-схемы основных алгоритмов. Создание интерфейса, инструкция пользователя по применению программы.
курсовая работа [1,7 M], добавлен 05.01.2015