Document 200417

advertisement
«Разрушители легенд»: Число Пи
Математическое моделирование на уроках информатики
Класс – 10
Тема: Алгоритмы и программирование
В качестве учебной задачи учащимся предлагается проверить несколько легенд,
связанных с числом Пи.
Урок 1
Метод Монте-Карло
Легенда 1. (1896г) Градоначальник города Монте-Карло решил определить, сколько
земли в городе отдано под постройки, а сколько занимают улицы, парки и площади. В
связи с тем, что старые улицы города были кривые (о плановом строительстве еще не
знали), а площади и парки имели произвольную форму, выполнить это задание с
помощью геометрических расчетов было очень сложно. Многие видные ученые города
отказались от этой работы, хотя за ее выполнение была назначена большая награда.
Градоначальник уже потерял надежду, когда к нему в резиденцию пришел бедный
ученый и стал утверждать, что он сможет решить задачу, если ему будет выдана точная
карта города и выплачен аванс в размере 1 монеты. Через три дня ученый принес свои
расчеты, которые, как оказалось в последствие, были достаточно точны.
Вопрос: Как ученый решил поставленную задачу?
Поиск информации в интернете приводит учеников к описанию метода МонтеКарло. Суть метода заключается в подбрасывании монеты над картой и определении
отношения количества попаданий центра монеты на любое строение к общему числу
бросаний.
Для проверки работоспособности алгоритма ученикам предлагается с помощью
этого метода найти значение числа Пи.
Математическая модель. Нарисуем квадрат с размерами 2 Х 2. Поместим центр
системы координат в точку пересечения диагоналей квадрата. Впишем в квадрат
окружность. Радиус этой окружности R=1. Подбрасывая монетку N раз, будем считать,
сколько раз центр монетки оказался в контуре круга. Зная площадь квадрата (2Х2=4) и
определив соотношение P к N (P – количество попаданий монеты в круг), определим
площадь круга. На основе формулы Sкруга = π R2 рассчитаем значение π.
Расчетная формула π = Sкруга, так как R=1. Таким образом
π = Sквадрата · P / N
Переходим к компьютерному моделированию задачи.
Так как вероятность попадания монетки в один из 4 квадрантов одинаковая, то в задаче
будем рассматривать только первый квадрант.
Наша окончательная формула примет вид:
y
π = 4· P / N
1
так как площадь нашего квадрата равна Sквадрата = 1.
Ниже
представлен
текст
программы
и
результаты
компьютерного эксперимента.
0
1
x
var n,i,p:integer;
x,y,Pir,r:real;
Begin
readln(n);
p:=0;
r:=1;
for i:=1 to n do
begin
x:=random();
y:=random();
if sqr(r)-sqr(x)>= sqr(y) then p:=p+1;
end;
Pir:=4*sqr(r)*p/n;
writeln(n:10,' ',pir:18:15,' ',abs(Pir - Pi):18:15);
end.
Результаты эксперимента
Значение N
Расчетное значение π
50000
3.144720000000000
50000
3.156560000000000
50000
3.137520000000000
500000
3.145024000000000
500000
3.139376000000000
500000
3.136600000000000
5000000
3.140699200000000
5000000
3.142167200000000
5000000
3.140752800000000
50000000
3.141465360000000
50000000
3.141463920000000
50000000
3.141598880000000
Погрешность вычисления
0.003127346410207
0.014967346410207
0.004072653589793
0.003431346410207
0.002216653589793
0.004992653589793
0.000893453589793
0.000574546410207
0.000839853589793
0.000127293589793
0.000128733589793
0.000006226410207
Вывод: При большом количестве бросаний можно получить достаточно неплохой
результат. С помощью метода Монте-Карло задача градоначальника могла быть решена.
Легенда подтверждена.
Метод Монте-Карло позволил нам найти число π с точностью до 5 знака. Следует
отметить, что при увеличении N
увеличивается точность определения числа π. К
сожалению, Пифагору этот метод был неизвестен, и значит значение числа π он находил
другим способом.
Урок 2
Моделирование геометрических построений
на основе математической модели
Легенда 2. Древние ученые были великими геометрами. Они умели разбивать отрезки на
любое количество равных частей, знали теорему Пифагора и свойства многих
геометрических фигур – треугольника, квадрата и шестигранника. В одной из легенд
сказано, что великий геометр Пифагор нашел длину окружности, вписывая в нее
правильный многогранник с большим количеством граней.
Историческая справка. По другим источникам
этот способ был предложен
математиком Лю Хуэй из царства Вэй около 265 г. н.э.
В соответствии с предлагаемым способом Lокружности = a · n, где a – длина стороны
правильного многогранника, а n - количество сторон этого многогранника. Греки
использовали число π =22 / 7 = 3.14285714285714… . Точность вычисления - 2 знака
после запятой.
Вопрос: Как вы думаете, какой многогранник необходимо построить, чтобы получить
данным методом такую же точность? Какую максимальную точность можно получить
методом математического моделирования этой задачи?
Выполним геометрические построения и создадим математическую модель.
Начальные значения для шестигранника.
y
R = 1 – радиус описанной окружности
a1
a
a = R – длина стороны многогранника
n = 6 – количество сторон многогранника
R
b
R
Математическая модель построения очередного
многогранника. Нахождение значения a1.
0
Х
Вывод формула нахождения значения π через длину окружности.
Таким образом, мы смоделировали построение 6, 12, 24, … многогранника с
последующим расчетом приблизительного значения числа π. Ниже представлен текст
программы и результаты ее работы.
var n:int64;
a,r,b,pir:real;
begin
r:=1;
a:=r;
n:=6;
while abs(pir-pi)>0 do
begin
pir:=a*n/(2*r);
writeln(n:10,pir:18:15,abs(pir-pi):18:15);
b:=sqrt(sqr(r)-sqr(a)/4);
a:=sqrt(sqr(a)/4+sqr(r-b));
n:=n*2;
end;
end.
Погрешность вычисления
Значение N
Расчетное значение π
6
3.000000000000000
0.141592653589793
12
3.105828541230250
0.035764112359544
24
3.132628613281240
0.008964040308555
48
3.139350203046870
0.002242450542926
96
3.141031950890510
0.000560702699283
192
3.141452472285460
0.000140181304331
384
3.141557607911860
0.000035045677935
768
3.141583892148320
0.000008761441475
1536
3.141590463228050
0.000002190361743
3072
3.141592105999270
0.000000547590521
6144
3.141592516692160
0.000000136897635
12288
3.141592619365380
0.000000034224409
24576
3.141592645033690
0.000000008556102
49152
3.141592651450770
0.000000002139025
98304
3.141592653055040
0.000000000534756
196608
3.141592653456100
0.000000000133689
393216
3.141592653556370
0.000000000033421
786432
3.141592653581440
0.000000000008355
1572864
3.141592653587700
0.000000000002089
3145728
3.141592653589270
0.000000000000522
6291456
3.141592653589660
0.000000000000130
12582912
3.141592653589760
0.000000000000032
25165824
3.141592653589790
0.000000000000008
50331648
3.141592653589790
0.000000000000002
100663296
3.141592653589790
0.000000000000000
Анализ расчетов показал, что при точном и аккуратном построении на основе 96гранника можно получить значение числа π с точностью до 3 знака после запятой, а для
получения точности в 14 знаков необходимо выполнить построение 100663296-гранника.
Попытка учеников построить 96-гранник на листе ватмана привели к плачевному
результату: полученное расчетное значение π = 3.2. При обсуждении таких расхождений
в результатах было сделано заключение: либо построения должны быть очень большими
по масштабу (R= 5–10 метров), либо для расчетов использовать теорему Пифагора по
предложенному алгоритму.
Вопрос: Как изменить программу, чтобы смоделировать построение правильных
многогранников, начиная с квадрата? (ответ: R=1; a=sqrt(2*r*r); n=4)
Урок 3
Моделирование геометрических построений
на основе математической модели
Самостоятельная работа
Легенда 3. Люди древнего мира были намного умнее, чем принято думать. В интернете
можно найти способ нахождения числа π с помощью вписанного и описанного
многогранников.
Историческая справка. Архимед, возможно, первым предложил математический
способ вычисления π. Для этого он вписывал в окружность и описывал около неё
правильные многоугольники. Принимая диаметр окружности за единицу, Архимед
рассматривал периметр вписанного многоугольника как нижнюю оценку длины
окружности, а периметр описанного многоугольника как верхнюю оценку.
Рассматривая правильный 96-угольник, Архимед получил оценку и предположил, что
примерно равняется 22/7 ≈ 3,142857142857143. (https://ru.wikipedia.org/wiki)
Учащимся предлагается доработать математическую модель и в соответствии с этой
моделью изменить программу.
y
Математическая модель. В предыдущей
a1
a
программе мы разобрали построение
вписанного правильного многогранника в
R
окружность. Сейчас необходимо определить,
R
b
R
как на его основе построить описанный
многогранник с таким же количеством
граней.
0
Х
Ели внимательно посмотреть на
рисунок, то мы увидим, что у нас есть два
подобных треугольника, в основаниях
которых лежат стороны вписанного и
описанного многогранника. Воспользуемся
правилом подобия для определения стороны
a1 описанного многогранника.
А нахождение значения числа π будет выполняться по следующей формуле.
Ниже представлен текст программы и результаты ее работы.
var k,n:int64;
a,a1,r,b,pir:real;
begin
r:=1;
a:=r;
n:=6;
While abs(pir-pi)>0.0000000000000015 do
begin
b:=sqrt(sqr(r)-sqr(a/2));
a1:=r*a/b;
pir:=(a+a1)*n/4/r;
writeln(n:15,pir:18:15,abs(pir-pi):18:15);
a:=sqrt(sqr(a/2)+sqr(r-b));
n:=n*2;
end;
end.
Значение N
6
12
24
48
96
192
384
768
1536
3072
6144
Расчетное значение π
3.232050807568880
3.160609425201860
3.146144277689370
3.142718209089150
3.141873275267940
3.141662761132640
3.141610177484350
3.141597034376500
3.141593748774790
3.141592927385310
3.141592722038630
Погрешность вычисления
0.090458153979084
0.019016771612067
0.004551624099576
0.001125555499358
0.000280621678146
0.000070107542850
0.000017523894560
0.000004380786711
0.000001095184995
0.000000273795519
0.000000068448834
12288
24576
49152
98304
196608
393216
786432
1572864
3145728
6291456
12582912
25165824
50331648
100663296
3.141592670702000
3.141592657867840
3.141592654659310
3.141592653857170
3.141592653656640
3.141592653606510
3.141592653593970
3.141592653590840
3.141592653590050
3.141592653589860
3.141592653589810
3.141592653589800
3.141592653589790
3.141592653589790
0.000000017112206
0.000000004278052
0.000000001069513
0.000000000267379
0.000000000066846
0.000000000016712
0.000000000004178
0.000000000001045
0.000000000000262
0.000000000000066
0.000000000000016
0.000000000000004
0.000000000000002
0.000000000000000
Из таблицы видно, что для получения точности в два знака достаточно построить 24гранник, а это уже более простая задача, чем построение 96-гранника. Вручную
учениками было выполнено построение с использованием данного способа (одни
выполняли построение на листе бумаги, другие - в текстовом редакторе Word). Расчетное
значение числа π в первом случае составило 3.153261, а во втором 3.138212, а это уже
хороший результат. Для получения значения π с большей точностью эти способы
совершенно равнозначны.
Урок 4
Числовые ряды и число Пи
Легенда 4. Классический период
До II тысячелетия было известно не более 10 цифр числа π. Дальнейшие
достижения в изучении π связаны с развитием математического анализа, в частности с
открытием рядов, позволяющих вычислить π с любой точностью, суммируя подходящее
количество членов ряда. В 1400-х годах Мадхава из Сангамаграма (англ. Madhava of
Sangamagrama) нашёл первый из таких рядов:
π = 4 – 4/3 + 4/5 – 4/7 + …
Этот результат известен как ряд Мадхавы — Лейбница, или ряд Грегори —
Лейбница (после того как он был заново обнаружен Джеймсом Грегори и Готфридом
Лейбницем в XVII веке). Однако этот ряд сходится к π очень медленно, что приводит к
сложности вычисления многих цифр числа на практике — необходимо сложить около
4000 членов ряда, чтобы улучшить оценку Архимеда.
Вопрос: Сколько времени потребуется одному человеку для получения значения
числа π с точностью до 14 знаков после запятой, если считать, что на нахождение
очередной дроби и ее прибавление или вычитание он будет тратить в среднем 2 минуты?
Для ответа учащимся предлагается написать программу
var pir,delta:real;
i,z:integer;
begin
pir:=0;
z:=1;i:=1;delta:=0.1;
writeln(pi);
while (abs(pir-pi)>0) and (i>0) do
begin
pir:=pir+z*4/(2*i-1);
z:=-z;i:=i+1;
if abs(pir - pi)<delta then
begin
writeln(i:12,' ',pir:18:14,' ',abs(pir-pi):18:14);
delta:=delta/10;
end;
end;
end.
Результаты вычислений
3.14159265358979
11
3.04183961892940
101
3.13159290355855
1001
3.14059265383979
10001
3.14149265359003
100002
3.14160265348972
1000002
3.14159365358877
10000002
3.14159275358978
99995330
3.14159266358979
998280592 3.14159265458979
1581043255 3.14159265348979
0.09975303466039
0.00999975003124
0.00099999975000
0.00009999999976
0.00000999989993
0.00000099999898
0.00000009999999
0.00000001000000
0.00000000100000
0.00000000010000
1608553187
1611168993
1611426447
1611452287
1611454839
1611454967
3.14159265357979
3.14159265358879
3.14159265358969
3.14159265358978
3.14159265358979
3.14159265358979
0.00000000001000
0.00000000000100
0.00000000000010
0.00000000000001
0.00000000000000
0.00000000000000
Для получения заданной точности необходимо найти 1 611 454 967 членов ряда.
При непрерывной работе без сна и отдыха для выполнения этих расчетов потребовалось
бы 6132 года. А для нахождения с точностью до 2 знака после запятой (3.14) – около 2
суток. Легенда подтверждена. С помощью такого числового ряда можно находить
значение числа π
Домашнее задание
Легенда 5. Мадхава предложил другую формулу, полученную преобразованием
формулы, приведенной в легенде 4.
Как считать быстрее?
Учащимся предлагается изменить текст программы и провести вычисления.
var pir,delta:real;
i,z,s3:int64;
begin
pir:=0;
z:=1;i:=1;delta:=0.1;s3:=1;
writeln(pi);
while (abs(pir*SQRT(12)-pi)>0) and (i>0) do
begin
pir:=pir+z*1/(2*i-1)/s3;
z:=-z;i:=i+1;s3:=s3*3;
if abs(pir*SQRT(12) - pi)<delta then
begin
writeln(i:12,' ',pir*SQRT(12):18:14,' ',abs(pir*SQRT(12)-pi):18:14);
delta:=delta/10;
end;
end;
end.
Результаты работы программы.
3.14159265358979
3 3.07920143567800
5 3.13785289159568
7 3.14130878546288
8 3.14167431269884
10 3.14159977381151
12 3.14159330450308
14 3.14159271502038
16 3.14159265952171
18 3.14159265417258
20 3.14159265364783
0.06239121791179
0.00373976199411
0.00028386812691
0.00008165910904
0.00000712022171
0.00000065091329
0.00000006143059
0.00000000593192
0.00000000058278
0.00000000005803
22 3.14159265359564 0.00000000000584
24 3.14159265359039 0.00000000000059
26 3.14159265358985 0.00000000000006
28 3.14159265358980 0.00000000000001
30 3.14159265358979 0.00000000000000
Если даже тратить на нахождение очередного члена ряда в среднем по 5 минут, то для
достижения 14-значной точности числа потребуется 2,5 часов.
Рассмотрено только несколько способов нахождения значения числа π. Продолжение работы
в этом направлении может быть связано с переходом на новые среды программирования, в
которых снято ограничении по размерности переменных (Python), поиском и изучением новых
способов нахождения числа π.
Download