Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич Страница 4

Тут можно читать бесплатно Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич. Жанр: Научные и научно-популярные книги / Математика. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич

Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич» бесплатно полную версию:

Вниманию читателей представляется книга «Рассказы о математике с примерами на языках Python и C». В книге описаны различные истории или задачи, прямо или косвенно связанные с математикой (магические квадраты, простые числа и пр). Кратко рассмотрены более сложные моменты, например выполнение вычислений с помощью GPU.

Книга распространяется бесплатно, скачать оригинал в PDF можно на странице http://www.dmitryelj.spb.ru/math.htm.

Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич читать онлайн бесплатно

Рассказы о математике с примерами на языках Python и C (СИ) - Елисеев Дмитрий Сергеевич - читать книгу онлайн бесплатно, автор Елисеев Дмитрий Сергеевич

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

Первым шагом необходимо вычислить √12. Возникает резонный вопрос — как это сделать? Оказывается, уже в Вавилоне был известен метод вычисления квадратного корня, который сейчас так и называется «вавилонским». Суть его в вычислении √S по простой формуле:

Здесь x0 — любое приближенное значение, например для √12 можно взять 3.

Запишем формулу в виде программы:

from decimal import Decimal

print ("Квадратный корень:")

number = Decimal(12)

result = Decimal(3)

for p in range(1, 9):

    result = (result + number / result)/Decimal(2)

    difference = result**2 - number

    print (p, result, difference)

sqrt12 = result

Результаты весьма интересны:

Шаг Значение Погрешность 1 3.5 0.25 2 3.464285714285714 0.00127 3 3.464101620029455 3.3890E-8 4 3.464101615137754 2.392873369E-17

Результат: √12 = 3,464101615137754

Как можно видеть, сделав всего 4 шага, можно получить √12 с достаточной точностью, задача вполне посильная даже для ручных расчетов 15 века.

Наконец, запрограммируем вторую часть алгоритма — собственно вычисление Пи.

sum = Decimal(1)

sign = -1

for p in range(1,32):

    sum += Decimal(sign) / Decimal((2 * p + 1)*(3**p))

    sign = -sign

    print(p, sqrt12 * sum)

print("Result:", sqrt12 * sum)

Результаты работы программы:

Шаг  Значение

1    3.079201435678004077382126829

2    3.156181471569954179316680000

3    3.137852891595680345522738769

4    3.142604745663084672802649458

5    3.141308785462883492635401088

6    3.141674312698837671656932680

7    3.141568715941784242161823554

8    3.141599773811505839072149767

9    3.141590510938080099642754230

10   3.141593304503081513121460820

11   3.141592454287646300323593597

12   3.141592715020379765581606212

13   3.141592634547313881242713430

14   3.141592659521713638451335328

15   3.141592651733997585128216671

16   3.141592654172575339199092210

17   3.141592653406165187919674184

18   3.141592653647826046431202391

19   3.141592653571403381773710565

20   3.141592653595634958372427485

21   3.141592653587933449530974820

22   3.141592653590386522717511595

23   3.141592653589603627019680710

24   3.141592653589853940610143646

Уже на 24-м шаге мы получаем искомые 11 знаков числа Пи. Задача явно требовала больше времени чем сейчас, но вполне могла быть решена в средние века.

Современные формулы не столь просты внешне, зато работают еще быстрее. Для примера можно привести формулу Чудновского:

Для сравнения, те же 24 итерации по этой формуле дают число Пи со следующей точностью:

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249.

Если сделать 100 итераций и вычислить 1000 знаков Пи, то можно увидеть так называемую «точку Фейнмана»:

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420207

Это последовательность «999999», находящаяся на 762-м знаке от начала. Желающие могут поэкспериментировать дальше самостоятельно с помощью программы на языке Python:

from math import factorial

from decimal import *

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.