Методы приближенных вычислений

Разделы: Информатика


Методы приближённых вычислений используют в том случае, когда с помощью аналитических методов решить задачу сложно или невозможно. Рассмотрим один из методов приближённых вычислений, который можно применить для определения площади криволинейной фигуры – метод Монте-Карло.

Метод Монте-Карло

Метод Монте-Карло получил своё название в честь одноимённого города в княжестве Монако, в котором развит игорный бизнес. Многие игры основаны на методе случайных чисел (рулетка, лото, раскладка карт).

Метод Монте-Карло можно использовать для определения площади криволинейных плоских фигур. Для этого фигуру, площадь которой требуется найти, нужно поместить в фигуру с известной площадью (например, квадрат, прямоугольник). После этого в квадрат набрасываются точки со случайными координатами (количество точек – 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. Определить площадь заштрихованной фигуры.

Литература:

  1. Глушаков С.В., Мельников В.В., Сурядный А.С. Программирование в среде Windows. Visual Basic 6.0. М.: ООО «Издательство АСТ», 2001.
  2. Браун С. Visual Basic. Учебный курс. – Спб.: Питер, 2002.
  3. Есипов А.С., Паныгина Н.Н., Громада М.И. Информатика. Задачник. – СПб: Наука и техника, 2001.

11.06.2011