Дмитрий Елисеев
Рассказы о математике с примерами на языках Python и C
Версия текста 1.0. (с) 2017
Введение
Как сказал еще Галилей, «Книга природы написана на языке математики», и с этим сложно не согласиться. Математика это универсальный язык науки, это базовые принципы, на которых построена вся Вселенная. 2 + 2 = 4 независимо от того, верим мы в это или нет, знаем мы это или нет, существуем мы вообще или нет, и это будет верно не только для нас, но и для жителя Альфы Центавра.
Из этого следует важное правило: математические законы нельзя придумать, их можно только открыть. Треугольник подчинялся теореме Пифагора еще до того, как Пифагор открыл и сформулировал известную теорему. Число Пи было вычислено в древнем Китае, но его значение было таким всегда — еще до того как появился не только Китай, но и наша планета Земля.
Именно поэтому я надеюсь, что кто-то из читателей с помощью этой книги откроет для себя в математике что-то новое. Увы, в представлении большинства, математика — это достаточно скучная наука, вероятно так ее преподают в школе. Если кто-то с помощью этой книги найдет для себя что-то новое, можно считать что время было потрачено не зря.
Эта книга не задачник, а скорее сборник рассказов о тех или иных математических вопросах. Т. к. математические примеры без цифр бессмысленны, «практическая» часть дается на языках программирования Python и Си.
Номер версии в заголовке указан неслучайно. Эта книга не закончена, и по мере появления каких-то новых интересных вопросов она будет дополняться. Желающие также могут присылать свои истории или задачи по адресу [email protected].com, наиболее интересные из них будут включены в текст. Обо найденных неточностях также просьба писать на этот адрес.
Книга распространяется бесплатно в электронном виде. Печатную версию желающие могут сделать себе самостоятельно. В архиве также приложены все файлы программ. Наличие новой версии можно проверить на странице http://dmitryelj.spb.ru/math.htm.
Приятного чтения.
Елисеев Дмитрий
История версий текста: 04.2017 — 1.0
1. Основы языков Python и Си
Математика немыслима без расчетов и примеров вычислений. Примеры в данной книге иллюстрируются фрагментами кода на языке Python. Этот язык удобен тем, что он очень прост и подходит для начинающих, поэтому кратко рассмотрим как им пользоваться.
Для использования языка Python нужно установить интерпретатор языка с сайта https://www.python.org/downloads/ или воспользоваться онлайн-версией, например на странице https://repl.it/languages/python3. Все примеры из книги работоспособны с любой версией языка Python, 2.7 или 3.
Для запуска программы необходимо:
‐ Сохранить файл в Блокноте с любым именем и расширением .py, например test1.py (удобно также создать папку в корне диска C, например C:PythonApps).
‐ Открыть консоль (нажать Win+R и набрать cmd), в консоли набрать команду (без кавычек) «python путь_к_файлу.py», например «python C:PythonAppstest1.py».
Как более удобный вариант, можно скачать бесплатную среду разработки PyСharm community edition, и редактировать и запускать файлы в ней. Скачать PyСharm можно со страницы https://www.jetbrains.com/pycharm/download/.
Для запуска программы на языке Си, ее сначала надо сохранить файле с расширением .c, и выполнить команду «gcc имя_файла.c». Будет создан exe-файл, который можно запустить.
Минимальная программа на Си выглядит так:
#include <stdio.h>
int main()
{
printf("Hello worldn");
return 0;
}
Рассмотрим простые примеры использования.
Объявление и вывод переменных
Python: достаточно ввести имя и значение.
x = 3 y = 10
print("x=", x)
print(x + y)
В отличие от языка C++, тип переменной будет определен автоматически, указывать его не нужно. Кстати, его можно узнать, введя
print (type(x))
.
Cи: необходимо указать тип и значение переменной.
int x = 3;
int y = 10;
printf("x=%dn", x);
printf("%dn", x+y);
Циклы
В отличие от того же С++ или Java, циклы задаются отступами, что после других языков программирования может быть непривычным. Часть кода, находящаяся внутри цикла, будет выполнена заданное количество раз.
Python
Вывод чисел от 1 до 9:
for p in range(1, 10):
print (p)
Вывод чисел от 1 до 9 с шагом 2:
for p in range(1, 10, 2):
print (p)
Си
Вывод чисел от 1 до 9:
for(int i=1; i<10; i++) {
printf("%dn", i);
}
Вывод чисел от 1 до 9 с шагом 2:
for(int i=1; i<10; i+=2) {
printf("%dn", i);
}
Массивы
Массив это линейный набор чисел, с которыми удобно выполнять однотипные операции, например вычисление суммы или среднего арифметического.
Python
Объявляем массив чисел:
values = [1, 2, 3, 5, 10, 15, 20]
Добавляем элемент в массив:
values.append(7)
Выводим массив на экран:
print(values)
Выводим элементы массива построчно:
for p in values:
print(p)
Это же можно сделать с помощью индексов (нумерация элементов массива начинается с 0):
for i in range(0, len(values)):
print (values[i])
Си: Динамические массивы поддерживаются только в C++, статические массивы создаются так:
int values[7] = { 1,2,3,5,10,15,20 };
for(int i=0; i<7; i++) {
Версия текста 1.10. (с) 2018
Введение
Как сказал еще Галилей, “Книга природы написана на языке математики”, и с этим сложно не согласиться. Математика это универсальный язык науки, это базовые принципы, на которых построена вся Вселенная. 2+2=4 независимо от того, верим мы в это или нет, знаем мы это или нет, существуем мы вообще или нет, и это будет верно не только для нас, но и для жителя Альфы Центавра.
Из этого следует важное правило: математические законы нельзя придумать, их можно только открыть. Треугольник подчинялся теореме Пифагора еще до того, как Пифагор открыл и сформулировал известную теорему. Число Пи было вычислено в древнем Китае, но его значение было таким всегда — еще до того как появился не только Китай, но и наша планета Земля.
Именно поэтому я надеюсь, что кто-то из читателей с помощью этой книги откроет для себя в математике что-то новое. Увы, в представлении большинства, математика — это достаточно скучная наука, вероятно так ее преподают в школе. Если кто-то с помощью этой книги найдет для себя что-то новое, можно считать что время было потрачено не зря.
Эта книга не задачник, а скорее сборник рассказов о тех или иных математических вопросах. Т.к. математические примеры без цифр бессмысленны, “практическая” часть дается на языках программирования Python и Си.
Номер версии в заголовке указан не случайно. Эта книга не закончена, и по мере появления каких-то новых интересных вопросов она будет дополняться. Желающие также могут присылать свои истории или задачи по адресу dmitryelj@gmail.com, наиболее интересные из них будут включены в текст. Обо найденных неточностях также просьба писать на этот адрес.
Приятного чтения.
Елисеев Дмитрий
История версий текста
04.2017 — 1.0
09.2017 — 1.1, 1.2 — добавлены главы 19 и 20 про нейронные сети
11.2017 — 1.3, добавлена глава 21 про фракталы
11.2017 — 1.4, дополнена глава 7 про магические квадраты, добавлены главы 22 и 23 про “горн Гавриила” и построение графиков функций, в “Приложения” добавлен пример оптимизации кода на Python.
12.2017 — 1.5, дополнена глава 4 про шарообразность Земли.
01.2018 — 1.6, добавлена глава 24 про точность компьютерных вычислений, глава 25 про календарь, добавлено Приложение 4.
03.2018 — 1.7, добавлена глава 21 про использование библиотеки TensorFlow.
04.2018 — 1.8, добавлена глава 27 про азартные игры.
04.2018 — 1.9, добавлена глава 28 про теорему Пифагора.
10.2018 — 1.10, добавлена глава 29 про abc-гипотезу, дополнена глава про простые числа, дополнена глава о “магических квадратах”, улучшено форматирование кода.
1. Основы языков Python и Си
Математика немыслима без расчетов и примеров вычислений. Примеры в данной книге иллюстрируются фрагментами кода на языке Python. Этот язык удобен тем, что он очень прост и подходит для начинающих, поэтому кратко рассмотрим как им пользоваться.
Для использования языка Python нужно установить интерпретатор языка с сайта https://www.python.org/downloads/ или воспользоваться онлайн-версией, например на странице https://repl.it/languages/python3. Все примеры из книги тестировались на Python версии 2.7.
Для запуска Python-программы необходимо:
— Сохранить файл в Блокноте с любым именем и расширением .py, например test1.py.
— Открыть консоль (нажать Win+R и набрать cmd), в консоли набрать команду (без кавычек) “python путь_к_файлу.py”, например “python C:PythonAppstest1.py”.
Как более удобный вариант, можно скачать бесплатную среду разработки PyСharm community edition, и редактировать и запускать файлы в ней. Скачать PyСharm можно со страницы https://www.jetbrains.com/pycharm/download/.
Кстати, чтобы запустить короткую программу на Python, ее необязательно сохранять в файл, код можно ввести непосредственно в интерпретатор. Для этого достаточно запустить (Win+R) программу python.exe и просто ввести подряд соответствующие строки:
Для запуска программы на языке Си, ее сначала надо сохранить файле с расширением .c, и выполнить команду “gcc имя_файла.c”. Будет создан exe-файл, который можно запустить. Бесплатный компилятор С/C++ можно установить с помощью утилиты mingw-get, скачать которую можно на странице https://sourceforge.net/projects/mingw/files/. Также можно воспользоваться и любой онлайн-версией c++ компилятора, например этой.
Минимальная программа на Си выглядит так:
#include <stdio.h>
int main()
{
printf(«Hello worldn»);
return 0;
}
Рассмотрим простые примеры использования.
Объявление и вывод переменных
Python: достаточно ввести имя и значение.
x = 3
y = 10
print(«x=», x)
print(x+y)
В отличие от языка С++, тип переменной будет определен автоматически, указывать его не нужно. Его можно при необходимости узнать, введя print (type(x)).
Важно иметь в виду, что синтаксис функции print в версиях Python 2.7 и 3.0 разный. В Python 2.7 можно написать print x, y, но в Python 3.0 такой код вызовет ошибку, нужно использовать круглые скобки и писать print(x, y). Код со скобками будет работать в обеих версиях Python, поэтому в примерах используется именно он.
И еще один момент насчет вывода значений. По умолчанию Python может выдавать ошибку при использовании русских букв, нужно указывать кодировку символов. Чтобы избежать этого и сделать код короче, во многих примерах будут по возможности указываться английские или “международные” аббревиатуры.
Cи: необходимо явно указать тип и значение переменной.
int x = 3;
int y = 10;
printf(«x=%dn», x);
printf(«%dn», x+y);
Циклы
В отличие от того же С++ или Java, циклы в Python задаются отступами, что после других языков программирования может быть непривычным. Часть кода, находящаяся внутри цикла, будет выполнена заданное количество раз.
Python
Вывод чисел от 1 до 9:
for p in range(1,10):
print(p)
Для сравнения, вот такой код без отступов работать не будет, и это важно помнить, например при копировании кода из этой книги:
for p in range(1,10):
print(p)
Вывод чисел от 1 до 9 с шагом 2:
for p in range(1,10,2):
print(p)
Кстати, в Python 2.7 функция range возвращает объект “список”, и соответственно выделяет память заданного размера. Для большинства примеров в книге это не критично, но если нужно написать код типа for p in range(1,10000000), то range следует заменить на xrange, в противном случае программа вполне может занять гигабайт памяти даже на простом с виду цикле. Для Python 3.xx это не требуется.
Си
Вывод чисел от 1 до 9:
for(int i=1; i<10; i++) {
printf(«%dn», i);
}
Вывод чисел от 1 до 9 с шагом 2:
for (int i=1; i < 10; i += 2) {
printf(«%dn», i);
}
Массивы
Массив это линейный набор чисел, с которыми удобно выполнять однотипные операции, например вычисление суммы или среднего арифметического.
Python:
Объявляем массив чисел:
values = [1,2,3,5,10,15,20]
Добавляем элемент в массив:
values.append(7)
Выводим массив на экран:
print(values)
Выводим элементы массива построчно:
for p in values:
print(p)
Это же можно сделать с помощью индексов (нумерация элементов массива начинается с 0):
for i in range(0, len(values)):
print(values[i])
Можно получить и значение и индекс сразу, иногда это удобно.
for i, item in enumerate(mylist):
print(i, item)
Можно создать массив определенного размера, заполненный определенными числами. Создадим массив из 100 элементов, заполненный нулями.
values = [0.0] * 100
print(values)
Есть немного более сложный, но и более гибкий вариант создания массива. Создадим массив из 100 элементов, заполненный нулями:
values = [0.0 for i in range(100)]
Создадим массив, заполненный числами 0,1,..,99:
values = [i for i in range(100)]
Создадим массив, заполненный квадратами чисел:
values = [i*i for i in range(100)]
Создать двухмерный массив в Python также несложно:
matrix4x4 = [ [0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0]]
matrix4x4[0][0] = 1
print(matrix4x4)
Аналогично вышеописанному способу, можно создать 2х-мерный массив 100×100:
values100x100 = [[0.0 for j in range(100)] for i in range(100)]
Си:
Динамические массивы поддерживаются только в C++, статические массивы создаются так:
int values[7] = {1, 2, 3, 5, 10, 15, 20};
for (int i=0; i < 7; i++) {
printf(«%dn», values[i]);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
- 510
- 0
- 0
Скачать книгу в формате:
- fb2
- epub
- rtf
- mobi
- txt
Аннотация
Вниманию читателей представляется книга «Рассказы о математике с примерами на языках Python и C». В книге описаны различные истории или задачи, прямо или косвенно связанные с математикой (магические квадраты, простые числа и пр). Кратко рассмотрены более сложные моменты, например выполнение вычислений с помощью GPU.
Книга распространяется бесплатно, скачать оригинал в PDF можно на странице http://www.dmitryelj.spb.ru/math.htm.
ЕЩЕ
Популярные книги
-
- Читаю
- В архив
- 58175
- 9
- 1
Аннотация:
Бернард ВЕРБЕР ИМПЕРИЯ АНГЕЛОВ Посвящается Веронике 1. ЗА КУЛИСАМИ РАЯ Тремя путями мудрости…
Блок — 15 стр.
-
- Читаю
- В архив
- 47470
- 23
- 0
Аннотация:
Пенелопа Дуглас Соперник Пролог Фэллон Были люди, которые мне нравились и которые не нрав…
Блок — 13 стр.
-
- Читаю
- В архив
- 53595
- 46
- 9
Аннотация:
Думала ли Рая, затевая уборку дома, что ударится головой и очнётся в ином мире? А там она, свобо…
Блок — 17 стр.
-
- Читаю
- В архив
- 51505
- 169
- 27
Аннотация:
Сорокалетний спецназовец, боец ЧВК в Сирии попадает в ловушку, устроенную ИГИЛ. Джип, в котором он …
Блок — 24 стр.
Здравствуй уважаемый читатель. Книга «Рассказы о математике с примерами на языках Python и C» Елисеев Дмитрий Сергеевич относится к разряду тех, которые стоит прочитать. Благодаря уму, харизме, остроумию и благородности, моментально ощущаешь симпатию к главному герою и его спутнице. Помимо увлекательного, захватывающего и интересного повествования, в сюжете также сохраняется логичность и последовательность событий. Замечательно то, что параллельно с сюжетом встречаются ноты сатиры, которые сгущают изображение порой даже до нелепости, и доводят образ до крайности. Попытки найти ответ откуда в людях та или иная черта, отчего человек поступает так или иначе, частично затронуты, частично раскрыты. Благодаря живому и динамичному языку повествования все зрительные образы у читателя наполняются всей гаммой красок и звуков. Финал немножко затянут, но это вполне компенсируется абсолютно непредсказуемым окончанием. Не часто встретишь, столь глубоко и проницательно раскрыты, трудности человеческих взаимосвязей, стоящих на повестке дня во все века. Чувствуется определенная особенность, попытка выйти за рамки основной идеи и внести ту неповторимость, благодаря которой появляется желание вернуться к прочитанному. Интрига настолько запутанна, что несмотря на встречающиеся подсказки невероятно сложно угадать дорогу, по которой пойдет сюжет. Яркие пейзажи, необъятные горизонты и насыщенные цвета — все это усиливает глубину восприятия и будоражит воображение. «Рассказы о математике с примерами на языках Python и C» Елисеев Дмитрий Сергеевич читать бесплатно онлайн, благодаря умело запутанному сюжету и динамичным событиям, будет интересно не только поклонникам данного жанра.
Новинки
- 6
- 0
- 0
Аннотация:
Два не свободных от семейных уз человека встретились на просторах виртуального пространства и пос…
Фрагмент — 11 стр.
Два не свободных от семейных уз человека встретились на просторах виртуального пространства и пос…
- 19
- 0
- 0
Аннотация:
— Ты уверена, что готова на это? Я больше не буду терпеть «динамо».
С замиранием сердца читаю нов…
Фрагмент — 16 стр.
— Ты уверена, что готова на это? Я больше не буду терпеть «динамо».
С замиранием сердца читаю нов…
- 7
- 0
- 0
Аннотация:
Молодой журналист сталкивается с запутанной историей убийства и сам едва не погибает. Тайный помо…
Фрагмент — 9 стр.
Молодой журналист сталкивается с запутанной историей убийства и сам едва не погибает. Тайный помо…
- 9
- 0
- 0
Аннотация:
История о том, как начинающий волшебник из королевства Афанасия сбежал от своего учителя и скрылс…
Фрагмент — 12 стр.
История о том, как начинающий волшебник из королевства Афанасия сбежал от своего учителя и скрылс…
- 7
- 0
- 0
Аннотация:
Удастся ли романтичному поэту Бернару де Монрагу достичь счастья с прекрасной, как звезда Аделаид…
Фрагмент — 3 стр.
Удастся ли романтичному поэту Бернару де Монрагу достичь счастья с прекрасной, как звезда Аделаид…
- 8
- 0
- 0
Аннотация:
Четвертая книга о Соне Травиной. Пора подвести итоги, раскрыть тайны и принять важное решение. А …
Фрагмент — 10 стр.
Четвертая книга о Соне Травиной. Пора подвести итоги, раскрыть тайны и принять важное решение. А …
- 7
- 0
- 0
Аннотация:
Это первая книга. Сюжет приснился как-то ночью. Книга посвящена добру, милосердию к ближним, о тр…
Фрагмент — 0 стр.
Это первая книга. Сюжет приснился как-то ночью. Книга посвящена добру, милосердию к ближним, о тр…