ВУЗ:
Составители:
Рубрика:
- 43 -
Часть 2 работы. Для вычисления значения
π
можно использовать метод
‘стрельбы’ (рис.5) - вариант метод Монте-Карло. В применении к данному
случаю метод заключается в генерации равномерно распределенных на дву-
мерной области [0
≤
x ≤ 1, 0 ≤ y
≤
1] точек и определении
darts
score
44
S
S
ABC0
AC0
×× ≈=
π
,
где S – площади фигур на рис.3, score – чис-
ло попавших внутрь четверти окружности
(фигура 0AC) точек (условие x
2
+y
2
≤
1.0, на
рис.5 удовлетворяющие этому условию точ-
ки обозначены квадратами), darts – общее
число точек (‘выстрелов’, throws). Вычис-
ленное таким образом значение
π
является
приближенным, в общем случае точность
вычисления искомого значения повышается
с увеличением числа ‘выстрелов’ и качества
датчика случайных чисел; подобные мето-
ды используются в случае трудностей точ-
ной числовой оценки (например, для вы-
числения определенных интегралов боль-
шой кратности).
Именно функция dboard (‘мишень’) генерирует DARTS пар равномерно
распределенных на отрезке [0
÷
1] случайных чисел, проверяет принадлеж-
ность нахождения точки (определяемой координатами последней двойки
случайных чисел) внутренней области четверти окружности и вычисляет те-
кущее значение
π
; расчеты проводятся при начальном значении DARTS c
последующим увеличением ROUNDS раз (заданы посредством #define).
Последовательный вариант программ вычисления
π
методом ‘стрельбы’
приведен ниже (файл PI_SER.C, функция DBOARD расположена в файле
dboard.c и подключается посредством #include ‘dboard.c’):
// source code PI_SER.C program
#include <stdio.h>
#include <math.h>
#include <sys/timeb.h> // for ftime
double f_time(void); /* define real time by ftime function */
void srandom (unsigned seed);
long random(void);
double dboard (int darts);
#include “dboard.c” // including dboard.c file
#include “f_time.c” // including f_time.c file
#define DARTS 10000 /* number of throws at dartboard */
#define ROUNDS 100 /* number of times "darts" is iterated */
Рисунок 5.— Определение зна-
чения
π
методом ‘стрельбы’
Часть 2 работы. Для вычисления значения π можно использовать метод ‘стрельбы’ (рис.5) - вариант метод Монте-Карло. В применении к данному случаю метод заключается в генерации равномерно распределенных на дву- мерной области [0 ≤ x ≤ 1, 0 ≤ y ≤ 1] точек и определении π = 4 × S0AC ≈ 4 × score , S0ABC darts где S – площади фигур на рис.3, score – чис- ло попавших внутрь четверти окружности 2 2 (фигура 0AC) точек (условие x +y ≤ 1.0, на рис.5 удовлетворяющие этому условию точ- ки обозначены квадратами), darts – общее число точек (‘выстрелов’, throws). Вычис- ленное таким образом значение π является приближенным, в общем случае точность вычисления искомого значения повышается с увеличением числа ‘выстрелов’ и качества датчика случайных чисел; подобные мето- ды используются в случае трудностей точ- ной числовой оценки (например, для вы- Рисунок 5.— Определение зна- числения определенных интегралов боль- чения π методом ‘стрельбы’ шой кратности). Именно функция dboard (‘мишень’) генерирует DARTS пар равномерно распределенных на отрезке [0 ÷ 1] случайных чисел, проверяет принадлеж- ность нахождения точки (определяемой координатами последней двойки случайных чисел) внутренней области четверти окружности и вычисляет те- кущее значение π ; расчеты проводятся при начальном значении DARTS c последующим увеличением ROUNDS раз (заданы посредством #define). Последовательный вариант программ вычисления π методом ‘стрельбы’ приведен ниже (файл PI_SER.C, функция DBOARD расположена в файле dboard.c и подключается посредством #include ‘dboard.c’): // source code PI_SER.C program #include#include #include // for ftime double f_time(void); /* define real time by ftime function */ void srandom (unsigned seed); long random(void); double dboard (int darts); #include “dboard.c” // including dboard.c file #include “f_time.c” // including f_time.c file #define DARTS 10000 /* number of throws at dartboard */ #define ROUNDS 100 /* number of times "darts" is iterated */ - 43 -
Страницы
- « первая
- ‹ предыдущая
- …
- 41
- 42
- 43
- 44
- 45
- …
- следующая ›
- последняя »