Дмитрий Елисеев - Рассказы о математике с примерами на языках Python и C

Тут можно читать онлайн Дмитрий Елисеев - Рассказы о математике с примерами на языках Python и C - бесплатно полную версию книги (целиком) без сокращений. Жанр: Математика. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Рассказы о математике с примерами на языках Python и C
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

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

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

Рассказы о математике с примерами на языках Python и C - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

Нужная нам вероятность обратного события равна обратной величине:

Рассказы о математике с примерами на языках Python и C - изображение 33

Вывести все значения несложно с помощью программы на Python:

import math

def C(n):

return 1000 – 1000 * math.factorial(365) / (math.factorial(365 – n) * 365**n)

for n in range(3, 50):

print("{} - {}%").format(n, 0.1 * C(n))

365! это очень большое число, поэтому здесь использованы целочисленные вычисления языка Python, уже затем значение было переведено в проценты.

В результате получаем следующую таблицу:

3 0.0082 4 0.0163 5 0.0271
6 0.0404 7 0.0562 8 0.0743
9 0.0946 10 0.1169 11 0.1411
12 0.1670 13 0.1944 14 0.2231
15 0.2529 16 0.2836 17 0.3150
18 0.3469 19 0.3791 20 0.4114
21 0.4436 22 0.4756 23 0.5072
24 0.5383 25 0.5686 26 0.5982
27 0.6268 28 0.6544 29 0.6809
30 0.7063 31 0.7304 32 0.7533
33 0.7749 34 0.7953 35 0.8143
36 0.8321 37 0.8487 38 0.8640
39 0.8782 40 0.8912 41 0.9031
42 0.9140 43 0.9239 44 0.9328
45 0.9409 46 0.9482 47 0.9547
48 0.9605 49 0.9657 50 0.9703

Как видно из таблицы, уже при количестве сотрудников 50 человек, хотя бы 1 день рождения почти гарантированно совпадет (вероятность 97%), а для 24 человек получаем вероятность равную 0.538, т. е. более 50%.

13. Поверхность Луны

Посмотрим на фотографию поверхности Луны. Эта фотография была сделана в телескоп с балкона:

Что мы видим Очевидно лунную поверхность покрытую кратерами оставшимися от - фото 34

Что мы видим? Очевидно, лунную поверхность, покрытую кратерами, оставшимися от предыдущих столкновений метеоритов с Луной.

Казалось бы, причем здесь математика? При том, что столкновение с метеоритом — случайное событие, его частота подчиняется теории вероятности. На Луне нет атмосферы, нет эрозии и ветра, поэтому лунная поверхность — идеальная «книга», в которой записаны события последних десятков тысяч лет. Изучая поверхность Луны, можно подсчитать какого размера объекты падали на ее поверхность.

Исследование поверхности Луны камерами высокого разрешения ведется и сейчас. Было подсчитано, что за последние 7 лет на Луне образовались не менее 220 новых кратеров. Это важно еще и потому, что данные подсчеты помогут оценить опасность для Земли.

Есть ли кратеры на Земле? Разумеется есть. Данная фотография сделана вовсе не на Луне или на Марсе, а в США:

Так называемый Аризонский кратер возник около 50 тыс лет назад после падения - фото 35

Так называемый Аризонский кратер возник около 50 тыс. лет назад после падения метеорита диаметром 50 метром и весом 300 тысяч тонн. Диаметр кратера составляет более километра. В Сибири находится кратер Попигай размером 100 км, он был открыт в 1946 году.

Разумеется, такие большие кратеры довольно-таки редки. Последнее же падение крупного метеорита было по историческим меркам весьма недавно, всего лишь около 100 лет назад. В 1908 г. в тунгусской тайге упал метеорит, мощность взрыва оценивалась от 10 до 50 мегатонн. По отзывам, взрывная волна обогнула земной шар, а световые явления в атмосфере были столь сильны, что в Лондоне ночью можно было читать газету. Лишь по случайности падение метеорита пришлось на малонаселенные районы Сибири — если бы удар был чуть раньше или позже, такой мощности хватило бы, чтобы полностью уничтожить город размером с Санкт-Петербург. Совсем же недавно, в 2013 году, метеорит размером около 20 метров разрушился в атмосфере, а его многочисленные обломки упали в районе Челябинска. Пострадало примерно 1500 человек, в основном от выбитых ударной волной стекол. По оценкам NASA суммарная мощность составила до 400 килотонн.

Увы, то, что для определенного района Земли может быть катастрофой, для космоса совершенно заурядный момент. Это лишь вопрос времени, достаточно посмотреть на поверхность Луны. По одной из гипотез, 66 миллионов лет назад наша планета столкнулась с большим астероидом, в результате чего было уничтожено 75% видов живых существ, в том числе и динозавры. Поэтому задача наблюдения и прогнозирования астероидной опасности должна быть в обязательном списке дел для человечества, если мы не хотим повторить их судьбу.

14. Так ли случайны случайные числа?

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

На языке Python вывести случайное число можно так:

import random

print(random.randint(0, 9))

Но как это работает? Задача вывода действительно случайного числа далеко не так проста как кажется. Чтобы вывести что-то на компьютере, это что-то надо сначала запрограммировать. Но очевидно, что задать формулой случайный, хаотический процесс, невозможно — по определению формула и хаос противоречат друг другу. Именно поэтому числа на самом деле являются псевдослучайными — они лишь похожи на случайные, а в реальности являются результатом вполне конкретного алгоритма.

Одним из наиболее популярных и простых алгоритмов, является линейный конгруэнтный метод (linear congruential generator). Его формула проста:

Рассмотрим пример реализации на языке Python x 123456789 m 231 1 - фото 36

Рассмотрим пример реализации на языке Python:

x = 123456789

m = 2**31 - 1

for p in range(10):

x = (1103515245 * x + 12345) % m

print(x)

Программа действительно выводит числа, которые вполне похожи на случайные: 295234770, 465300796, 1475666158, 588454008, 929838277, 50298429, 1089988954, 698778454, 2010473888, 36125306. Как нетрудно догадаться, при повторном запуске программы числа будут одни и те же. Чтобы числа не повторялись, такой генератор обычно инициализируют значением текущего системного времени.

Увы, такой генератор имеет определенные недостатки: во-первых, его последовательность рано или поздно начинает повторяться, во-вторых, он не является криптостойким — зная текущее значение, можно вычислить следующее, что к примеру, может позволить злоумышленнику узнать «случайно» сгенерированный пароль по его первым буквам.

Существуют другие алгоритмы генерации псевдослучайных чисел, например на основе простых чисел Мерсенна (Mersenne Twister generator). Существуют также аппаратные генераторы случайных чисел, например такая функция присутствует в процессорах Intel. Есть даже сайт https://www .random.org, с помощью которого можно сгенерировать случайную последовательность чисел. По заверениям авторов, они используют 3 радиоприемника, настроенных на частоту шума атмосферных помех.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Дмитрий Елисеев читать все книги автора по порядку

Дмитрий Елисеев - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Рассказы о математике с примерами на языках Python и C отзывы


Отзывы читателей о книге Рассказы о математике с примерами на языках Python и C, автор: Дмитрий Елисеев. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x