Для решения данной задачи будем использовать метод Монте-Карло. Для нашей простой задачи суть его состоит в следующем. Пусть дана некоторая плоская фигура (рисунок 2.2), требуется рассчитать ее площадь.
Опишем вокруг заданной фигуры другую фигуру простой формы (круг, прямоугольник и т.п.), площадь которой легко можно рассчитать. Мы будем здесь использовать прямоугольник (рисунок 2.2) с соответствующими координатами вершин (x1, y1) и (x2, y2).
В полученный прямоугольник будем случайным образом (по возможности равномерно) помещать точки с координатами (x, y), удовлетворяющими условию
, . Часть таких точек попадет вовнутрь исследуемой фигуры, другая часть окажется за ее пределами. Обозначим через NN общее количество точек, N – количество точек, попавших в фигуру. Тогда можно записать приближенное равенство, (1)
где S – искомая площадь, SS – площадь прямоугольника.
Из формулы (1) получим итоговое расчетное соотношение
. (2)Таким образом, используемый метод является приближенным. Точность расчета по (2) существенно зависит от количества заданных случайных точек и качества генератора случайных чисел. Для нашей задачи рекомендуется задавать NN>10000.
Расчет площади пересечения двух фигур проводится аналогично. Допустим, исследуемые фигуры имеют вид, показанный на рисунке 2.3.
Вокруг них опять описываем прямоугольник так, чтобы обе фигуры целиком помещались в нем. В полученный прямоугольник случайным образом «бросаем» точки и подсчитываем, какое их количество попадет в область пересечения фигур (на рисунке 2.3 заштриховано). Напомним, что точка считается попавшей в область пересечения, если она одновременно принадлежит обеим фигурам. Далее расчет проводим по формуле (2).
Отметим, что использованный метод легко распространяется и на большее число фигур.
В данной главе описывается алгоритм решения данной задачи, приводится текст соответствующих программ и результатов расчетов.
В разделе 2.1 курсовой работы описываются программные средства создания случайных чисел в заданном диапазоне (генератор случайных чисел). Поскольку каждая точка на плоскости определяется двумя числами – координатами x и y, то нам нужны соответственно два таких генератора. Мы их построим на основе стандартных функций:
random – для языка Pascal, которая возвращает случайные числа в диапазоне [0,1];
rnd(1) – для системы MathCAD с аналогичным действием.
Для того чтобы координаты случайной точки подчинялись условию
в языке Pascal можно использовать следующие линейные преобразования:
В системе MathCAD используются аналогичные соотношения, только вместо функции random применяется функция rnd(1).
Примечание – В языке Pascal перед первым оператором, использующим функцию random, рекомендуется обратиться к стандартной процедуре Randomize, которая будет каждый раз менять генерируемую последовательность случайных чисел.
В данном разделе дается понятие алгоритма и способы его создания. Для исполнителя предлагается два варианта создания алгоритма программ:
° в виде графической блок-схемы;
° словесное описание с нумерацией пунктов.
В первом случае используются стандартные графические обозначения ключевых элементов программы, во втором – их словесный аналог, например:
1) Задаем прямоугольник: x1=…; y1=…; x2=…; y2=…;
2) Рассчитываем площадь прямоугольника Spr=(x2-x1)(y2=y1);
3) …
4) …
5) …
В разделе 2.3 курсовой работы приводится текст программы, написанной на языке Pascal, и результаты соответствующих расчетов. Программа должна быть отлажена и обязательно снабжена необходимыми комментариями. В качестве примера ниже приведем небольшой фрагмент такой программы.
Program FigSurface;
Const
x1=-2; y1=-2; x2=2; y2=2; {координаты вершин прямоугольника}
ss = (x2-x1)*(y2-y1); {площадь прямоугольника}
NN=10000; {количество случайных точек}
. . .
{Расчет первой фигуры}
. . .
{Расчет второй фигуры}
. . .
Рекомендуется при написании программы определить несколько вспомогательных функций. Например, написать две функции логического типа F1(x, y) и F2(x, y), которые для заданных значений координат некоторой точки (x, y) возвращают значения true или false в зависимости от того, находится точка внутри фигуры или вне ее.
Поскольку программа на языке Pascal хранится на диске в виде текстового файла, то при оформлении курсовой работы текст программы легко вставляется в документ редактора Word.
Допустим, исследуемая фигура имеет вид, показанный на рисунке 3.1.
Опишем вокруг этой фигуры прямоугольник (т.е. зададим значения (x1, y1) и (x2, y2)).
В полученный прямоугольник будем случайным образом помещать точки (x, y). Требуется определить, какие из этих точек попадут вовнутрь заданной фигуры и количество таких точек.
Решение этой задачи, выполненное в системе MathCAD, приведено в Приложении В.
В этом решении вначале специально допущена ошибка в логическом выражении, определяющем попадание точек в верхнюю часть фигуры, что сразу видно из соответствующего графика. Ниже приводится исправленный вариант.
В курсовой работе целесообразно провести такую проверку для каждой фигуры, а также можно вывести профиль области их пересечения.
Отметим, что решение данной задачи в системе MathCAD можно провести более эффективно, используя встроенный язык программирования (так называемые программные модули). Однако в рамках обычного курса «Информатики» этот раздел, как правило, не изучается. Предлагается для инициативных студентов, желающих повысить свой творческий потенциал и (само)оценку, самостоятельно освоить эти возможности (что совсем не трудно при умении программировать на языке Pascal) – такие инициативы, безусловно, поощряются!
4 ОФОРМЛЕНИЕ РАБОТЫ
Законченная работа должна быть отпечатана, скреплена (сброшюрована) и подписана исполнителем на титульном листе. После этого она сдается преподавателю на проверку. Основные требования к оформлению работы:
1. Формат страницы: А4, портрет.
2. Поля: верхнее, нижнее, левое –2,5 см, правое – 2 см.
3. Основной текст: Times New Roman, кегль 10 или 12 пт., отступ первой строки – 1 см,
выравнивание по ширине.
4. Междустрочный интервал: одинарный, полуторный или двойной.
5. Рисунки: выполняются в черно-белом цвете в формате *.jpg или *.gif и вставляются
непосредственно в текст. Подписи под рисунками – Times New Roman, кегль 9 пт., выравнивание по центру. Нумерация рисунков сквозная, следует после слова "Рис.". Далее после знака "–" с прописной буквы следует подпись.
6. Математические символы и обозначения в тексте: Times New Roman, кегль 11 пт., курсив.
Формулы набираются в редакторе MathType. Нумерация формул сплошная, выравнивание нумерации по правому краю.
Таблицы могут вставляться на ширину рабочего поля страницы. Заголовок таблицы: "Табл. 1" – Times New Roman, кегль 11 пт., выравнивание по левому краю. Текст внутри таблицы – Times New Roman, кегль 10 пт.
7. Список использованных источников: Times New Roman, кегль 10 пт. Список источников
выполняется в виде нумерованного списка, выравнивание номера по левому краю, выступ – 0,7 см, без табуляции.
ОБРАЗЕЦ ТИТУЛЬНОГО ЛИСТА