Методы приближённых вычислений используют в том случае, когда с помощью аналитических методов решить задачу сложно или невозможно. Рассмотрим один из методов приближённых вычислений, который можно применить для определения площади криволинейной фигуры – метод Монте-Карло.
Метод Монте-Карло
Метод Монте-Карло получил своё название в честь одноимённого города в княжестве Монако, в котором развит игорный бизнес. Многие игры основаны на методе случайных чисел (рулетка, лото, раскладка карт).
Метод Монте-Карло можно использовать для определения площади криволинейных плоских фигур. Для этого фигуру, площадь которой требуется найти, нужно поместить в фигуру с известной площадью (например, квадрат, прямоугольник). После этого в квадрат набрасываются точки со случайными координатами (количество точек – k1). Определяется количество точек, попавших в заданную фигуру (k2).
Обозначим площади фигур s1 – площадь квадрата; s2 – площадь фигуры. Тогда при большом количестве точек площади фигур будут пропорциональны количеству точек, попавших внутрь фигур:
s2/s1=k2/k1; откуда s2=s1*k2/k1
Точность вычислений зависит от количества набрасываемых случайных точек (чем больше количество точек, тем более точный результат вычислений).
Пример 1. Определение площади круга методом Монте-Карло (Приложение 1)
Поместим круг (r=1) в квадрат со стороной 4. Используя метод М-К, определим количество случайных точек внутри круга (k).
Тогда: S круга = S квадрата*k/n, где n – общее количество точек
Dim n, k As Long, pi, x, y, s As Single, r as Integer
Private Sub Command1_Click() ‘процедура кнопки Пуск
r=1
Picture1.Scale (–3, 3)–(3, –3) ‘шкала
Picture1.Circle (0, 0), r, QBColor(2) ‘рисуем круг
Picture1.Line (–2, 2)–(2, –2), QBColor(3), B ‘рисуем квадрат
n = Val(InputBox("Ввод n", "Данные"))
k = 0 ‘количество точек внутри круга
Randomize Timer
For i = 1 To n
x = (Rnd * 4 – 2) ‘координаты случайной точки
y = (Rnd * 4 – 2)
If x ^ 2 + y ^ 2 <= r^2 Then ‘точка попала в круг
k = k + 1 ‘количество случайных точек внутри круга
Picture1.PSet (x, y), QBColor(11) ‘рисуем точку внутри круга
Else
Picture1.PSet (x, y), QBColor(0) ‘рисуем точку за пределами круга
End If
Next
s = 4 * 4 * k / n
Text1.Text = Str(n)
Text2.Text = Str(s)
End Sub
Private Sub Command3_Click() ‘процедура кнопки Выход
End
End Sub

Задание:
- Добавьте в проект вычисление приближённого значения числа Пи.
- Добавьте процедуру кнопки Сброс.
Пример 2. Определить площадь
заштрихованной фигуры, ограниченной осью х и
графиками функций y1 = – exu + 1.5, y2 = 2sin(x), для x
[
] и y > 0 (Приложение
2)

1. Построим прямоугольник с размерами 1,5 х Pi,
чтобы искомая фигура оказалась внутри
прямоугольника.
2. Условия, при которых точка попадает в искомую
фигуру:
y>0
y< – exu +1.5
y< 2sin(x)
Обозначения:
N – общее количество точек в прямоугольнике;
K – количество точек, попавших в искомую фигуру;
S – площадь фигуры;
Sp – площадь прямоугольника.
Тогда искомая площадь: S = Sp * k/n
Dim n, k As Long, pi, x, y1, y2, s, sp As Single
Private Sub Command1_Click() ‘процедура кнопки Пуск
pi = 3.14157
Picture1.Scale (–4, 3)–(4, –3)
Picture1.Line (–4, 0)–(4, 0), QBColor(0) ‘ось x
Picture1.Line (0, –3)–(0, 3), QBColor(0) ‘ось y
Picture1.Line (0, 1.5)–(pi, 0), QBColor(3), B ‘Прямоугольник
n = Val(InputBox("Ввод n", "Данные"))
k = 0 ‘количество точек внутри фигуры
Randomize Timer
For x = –pi To pi Step 0.05
y1 = 2 * Sin(x) ‘строим графики
y2 = –Abs(x) + 1.5
Picture1.PSet (x, y1), QBColor(0)
Picture1.PSet (x, y2), QBColor(4)
Next
For x = –4 To 4 ‘разметка делений на оси х
Picture1.PSet (x, 0), QBColor(0)
Picture1.Print x
Next
For i = 1 To n ‘подсчёт точек внутри фигуры
x = (Rnd * pi)
y = (Rnd * 1.5)
If (y > 0) And (y < –Abs(x) + 1.5) And (y < 2 * Sin(x)) Then
k = k + 1
Picture1.PSet (x, y), QBColor(4)
Else
Picture1.PSet (x, y), QBColor(0)
End If
Next
sp = 1.5 * pi ‘площадь прямоугольника
s = sp * k / n ‘площадь фигуры
Text1.Text = Str(n)
Text2.Text = Str(s)
End Sub
Самостоятельная работа
1. Методом М-К определить площадь фигуры,
ограниченной осью Х и графиком функции y = – x2
+ 4 (y > 0, x
[–2, 2]).
2. Задача Архимеда. Архимед вывел формулу площади так называемых «арбелесовых ножей» (на рисунке они закрашены серым цветом):
S = 3,14 * t2/8, где t – длина отрезка
АВ. Доказать с помощью метода М-К эту формулу.
Радиусы большой (R1) и одной из малых окружностей
(R2) вводятся с клавиатуры.
(Программный код задачи Архимеда находится в Приложении 3).
3. Определить площадь заштрихованной фигуры.
Литература:
- Глушаков С.В., Мельников В.В., Сурядный А.С. Программирование в среде Windows. Visual Basic 6.0. М.: ООО «Издательство АСТ», 2001.
- Браун С. Visual Basic. Учебный курс. – Спб.: Питер, 2002.
- Есипов А.С., Паныгина Н.Н., Громада М.И. Информатика. Задачник. – СПб: Наука и техника, 2001.