«Разрушители легенд»: Число Пи Математическое моделирование на уроках информатики Класс – 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), поиском и изучением новых способов нахождения числа π.