воскресенье, 24 февраля 2019 г.

Число пи или янки из подмосковья при дворе Ивана Грозного

Ой ты, гой еси, добрый молодец али красна девица!
В детстве я очень любил книгу Марка Твена "Янки из Коннектикута при дворе короля Артура". Приключения хитрого и технически одаренного янки, попавшего в средневековую Британию забавляли.
Уже будучи взрослым, я, вспоминая это легендарное произведение, неизменно задавался вопросом: а смог бы я на месте этого янки, так же как он, вспомнить и воспроизвести достижения современной мне цивилизации.
Конечно, компьютер я бы не создал, но хотя бы порох? Или двигатель внутреннего сгорания? Для этого нужны расчеты, математические и физические формулы. И, конечно, техническая смекалка. Годы шли и я приходил к выводу, что янки Марка Твена - уникум, который сохранил в голове знания естественных и социальных наук, полученные еще в школе, чем я, к сожалению, не могу похвастать. Но все равно, раз за разом мысленно возвращаясь к этой ситуации, возникал вопрос: смогу ли я воспроизвести хоть что-то в условиях отсутствия интернета, учебников и справочников? Ну хоть самую малость? Ну хотя бы посчитать число π?...


Можно без преувеличения сказать, что число π - рок звезда уже на протяжении нескольких тысячелетий. С ним связаны и шутки и сложные теоремы из высшей алгебры и курьезные законы. Но обо всем по порядку.

Самое неправильное число
Исторически, число π определяется как результат деления длины окружности на ее диаметр. То есть:

Equation pi equals StartFraction upper L Over upper D EndFraction

По всем признакам для всех окружностей в мире это число имело одно и то же значение, вопрос только - какое? Проблема состояла в том, что люди древности знали только один класс нецелых чисел - рациональные. То есть числа, которые можно представить в виде дроби

Equation x equals StartFraction n Over m EndFraction

где n и m - целые числа.
Соответственно математики того времени начали искать эти пресловутые n и m и были немало удивлены тем, что какие бы n и m они ни брали, получалось лишь приблизительное значение числа π.
Из глубины веков до нас дошло множество формул для вычисления приблизительного значения числа π, например

Месопотамия:

Equation normal pi equals 3

древний Египет, 2000 лет до н.э.:

Equation normal pi equals left-parenthesis StartFraction 16 Over 9 EndFraction right-parenthesis squared almost-equals 3 comma 16049

Архимед, III век до н.э.:

Equation normal pi equals StartFraction 22 Over 7 EndFraction almost-equals 3 comma 14286

Клавдий Птолемей, II век н.э.:

Equation normal pi equals StartFraction 377 Over 120 EndFraction almost-equals 3 comma 14167

Цзу Чунчжи, V век н.э.:

Equation normal pi equals StartFraction 355 Over 113 EndFraction almost-equals 3 comma 14159292

Фундаментальная проблема ученых прошлого состояла в том, что они искали рациональное число π, не догадываясь о его истинной природе. Наиболее значительным достижением в этом направлении можно считать исследование Архимеда, который изучая вписанные и описанные вокруг окружности многоугольники пришел к следующему результату:

Equation 3 plus StartFraction 10 Over 71 EndFraction less-than StartFraction 6336 Over 2017 plus one-fourth EndFraction less-than normal pi less-than StartFraction 14688 Over 4673 plus one-half EndFraction less-than 3 plus one-seventh

или

Equation 3 comma 14090965 less-than normal pi less-than 3 comma 14282658

Очень неплохой результат для того времени. По сути, Архимед, если использовать современную терминологию, пытался найти предел периметра многоугольника, вписанного в окружность, при количестве граней, стремящемся к бесконечности. Идея поистине гениальная, если учесть, что до открытия собстственно пределов оставалось каких-то пару тысяч лет.


Тем не менее, древних математиков преследовала неудача. Лишь в 1761 году Иоган Ламберт строго доказал, что число π нельзя представить в виде

Equation StartFraction n Over m EndFraction

то есть число π - иррациональное.
А в 1882 году Линдеманом было доказано, что не существует такого многочлена с рациональными коэффициентами, корнем которого является число π. То есть число π не может быть представлено с помощью конечной последовательности применения арифметических операций и взятия корней. Такие числа назвали трансцендентными.

Именно аномальный характер числа π не позволил математикам древности понять его истинную природу: им просто не хватило чисел на числовой оси, чтобы описать его.

Таким образом, исследование числа π в течении тысяч лет продвигало математиков в понимании истинной сути чисел вообще.

Точная формула
Несмотря на свою аномальность, число π оказалось поистине вездесущим. Существует множество формул для вычисления сколь угодно точного значения числа π, приведу лишь несколько из них:

Equation normal pi equals 4 minus four-thirds plus four-fifths minus four-sevenths plus period period period
Equation normal pi equals 2 times left-parenthesis two-firsts asterisk two-thirds asterisk four-thirds asterisk four-fifths asterisk six-fifths asterisk six-sevenths asterisk period period period right-parenthesis
Equation normal pi equals StartFraction 2 Over 1 minus 5 asterisk left-parenthesis one-half right-parenthesis cubed plus 9 asterisk left-parenthesis one-half asterisk three-fourths right-parenthesis cubed minus 13 asterisk left-parenthesis one-half asterisk three-fourths asterisk five-fifths right-parenthesis cubed plus period period period EndFraction

И многие многие другие.

Когда вы читаете в новостях, что очередная команда математиков-программистов рассчитала число π с точностью до очередного миллиарда знаков после запятой, помните, что скорее всего используется формула Чудновского:
Equation normal pi equals StartStartFraction 1 OverOver 12 asterisk sigma-summation Underscript k equals 0 Overscript normal infinity Endscripts StartFraction left-parenthesis negative 1 right-parenthesis Superscript k Baseline times left-parenthesis 6 times k right-parenthesis factorial left-parenthesis 13591409 plus 545140134 times k right-parenthesis Over left-parenthesis 3 times k right-parenthesis factorial left-parenthesis k factorial right-parenthesis cubed times left-parenthesis 640320 cubed right-parenthesis Superscript StartFraction k plus 1 Over 2 EndFraction Baseline EndFraction EndEndFraction

Вероятностные методы
Как ни странно, число π можно вычислить и не используя геометрические и алгебраические методы. Одним из таких методов является метод иглы Бюффона. 
Представим себе плоскость, расчерченную параллельными прямыми линиями, которые находятся на расстоянии 4см друг от друга. Будем случайным образом бросать на эту плоскость иголку длиной 3см. Согласно теории вероятности, вероятность того, что иголка пересечет одну из линий составляет

Equation p equals StartFraction 6 Over 4 asterisk normal pi EndFraction

Чтобы приблизительно посчитать число π, можно провести описанный выше эксперимент, вычислить частоту пересечений и, подставив ее в формулу вместо вероятности p, получить значение числа π:

Equation normal pi equals StartFraction 6 Over 4 asterisk p EndFraction

В 1864 году некий капитан Фокс, выздоравливая после ранения, провел такой эксперимент и получил следующие результаты:

Число бросаний
Число пересечений
Частота пересечений Вычисленное значение числа π
500 236 0,472 3,178
530 253 0,477 3,142

Метод иглы Буффона, конечно, не самый быстрый способ нахождения числа π, но он не требует серъезной математической подготовки, лишь терпение и время.

Метод Монте-Карло
Чтобы найти значение числа π, можно воспользоваться методом Монте-Карло. Допустим у нас есть квадрат со стороной 2x. Если мы впишем в него окружность, то ее радиус будет равен x.


Площадь такого квадрата равна

Equation upper S 1 equals left-parenthesis 2 asterisk x right-parenthesis squared

Площадь круга при этом равна

Equation upper S 2 equals normal pi asterisk x squared

Разделив две площади друг на друга, получим:

Equation StartFraction upper S 2 Over upper S 1 EndFraction equals StartFraction normal pi Over 4 EndFraction

А отсюда можно получить, что

Equation normal pi equals StartFraction 4 asterisk upper S 2 Over upper S 1 EndFraction

Предположим, что мы случайным образом бросаем на нарисованные квадрат с кругом множество песчинок. Тогда можно предположить, что

Equation StartFraction upper S 2 Over upper S 1 EndFraction equals StartFraction upper N 2 Over upper N 1 EndFraction

где N1 - число песчинок, попавших внутрь круга, а N2 - число песчинок, попавших внутрь квадрата.
Тогда, можно считать, что

Equation normal pi equals StartFraction 4 asterisk upper N 2 Over upper N 1 EndFraction

Вместо того, чтобы разбрасывать по дому песчинки, а потом долго и утомительно их подсчитывать, напишем программу, которая делает это за нас:

import java.security.SecureRandom;

public class Main {

    public static void main(String[] args) {
        //Генератор случайных песчинок
        SecureRandom random = new SecureRandom();

        //Число разбросанных внутри квадрата песчинок.
        int n2 = 50_000;
        //Число песчинок, попавших внутрь круга
        int n1 = 0;

        //Радиус круга, равный половине стороны квадрата
        int r = 10;
        //Разбрасываем песчинки внутри квадрата, 
        //находящегося в центре системы координат и со стороною равной 10.
        for (int index = 0; index < n2; index++) {
            //x-координата может быть от -10 до 10 
            //(метод random.nextDouble() возвращает случайное число от 0 до 1)
            double x = r - 2 * r * random.nextDouble();
            //y-координата может быть от -10 до 10
            double y = r - 2 * r * random.nextDouble();

            //По теореме пифагора вычисляем квадрат расстояния до песчинки от центра координат
            //Если он меньше, чем квадрат радиуса окружности - песчинка внутри круга
            if (x * x + y * y <= r * r) {
                n1 += 1;
            }
        }

        //Вычисляем число Пи по формуле
        double pi = 4. * n1 / n2;
        System.out.println("pi = " + pi);
    }
}
Разбросав по квадрату 50 000 песчинок, я получил:
pi = 3.13952
Хм, неплохо, конечно, но хочется большего... А если 500 000 песчинок?
pi = 3.140384
Уже лучше, не останавливаемся: 5 000 000 песчинок!
pi = 3.141184
Только теперь мы получили результат, который хотя бы точностью до 3 знаков после запятой совпадает с правильным значением. Ну, никто не говорил, что будет легко. 50 000 000 песчинок!
pi = 3.14164184
На этом я остановлюсь, но более стойким предлагаю продолжить самостоятельно=)

Заключение
С помощью этой статьи я основательно подготовился к перемещению во времени во времена короля Артура. Я вооружен множеством способов рассчитать число π (осталось только вызубрить формулу Чудновского) и продемонстрировать свою математическую и инженерную подготовку. К тому же, я просто помню, что число π = 3, 1415926, а это - аж 7 знаков после запятой. 
А сколько знаков помните вы?

Комментариев нет:

Отправить комментарий