ЛитВек: бестселлеры недели
Бестселлер - Александр Анатольевич Ширвиндт - Проходные дворы биографии - читать в Литвек width=Бестселлер - Брайан Трейси - Выйди из зоны комфорта. Измени свою жизнь. 21 метод повышения личной эффективности - читать в Литвек width=Бестселлер - Влада Ольховская - Нецарская охота - читать в Литвек width=Бестселлер - Максим Валерьевич Батырев (Комбат) - 45 татуировок менеджера. Правила российского руководителя - читать в Литвек width=Бестселлер - Нассим Николас Талеб - Антихрупкость. Как извлечь выгоду из хаоса - читать в Литвек width=Бестселлер - Роберт Гэлбрейт - Зов кукушки - читать в Литвек width=Бестселлер - Джо Диспенза - Сила подсознания, или Как изменить жизнь за 4 недели - читать в Литвек width=Бестселлер - Бен Элтон - Два брата - читать в Литвек width=
Литвек - электронная библиотека >> Дмитрий Елисеев >> Базы данных и др. >> Рассказы о математике с примерами на языках Python и C

Дмитрий Елисеев Рассказы о математике с примерами на языках Python и C Версия текста 1.0. (с) 2017

Введение

Рассказы о математике с примерами на языках Python и C. Иллюстрация № 1

Как сказал еще Галилей, «Книга природы написана на языке математики», и с этим сложно не согласиться. Математика это универсальный язык науки, это базовые принципы, на которых построена вся Вселенная. 2 + 2 = 4 независимо от того, верим мы в это или нет, знаем мы это или нет, существуем мы вообще или нет, и это будет верно не только для нас, но и для жителя Альфы Центавра.

Из этого следует важное правило: математические законы нельзя придумать, их можно только открыть. Треугольник подчинялся теореме Пифагора еще до того, как Пифагор открыл и сформулировал известную теорему. Число Пи было вычислено в древнем Китае, но его значение было таким всегда — еще до того как появился не только Китай, но и наша планета Земля.

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

Эта книга не задачник, а скорее сборник рассказов о тех или иных математических вопросах. Т. к. математические примеры без цифр бессмысленны, «практическая» часть дается на языках программирования Python и Си.

Номер версии в заголовке указан неслучайно. Эта книга не закончена, и по мере появления каких-то новых интересных вопросов она будет дополняться. Желающие также могут присылать свои истории или задачи по адресу dmitryelj@gmail.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:\PythonApps\test1.py».

Как более удобный вариант, можно скачать бесплатную среду разработки PyСharm community edition, и редактировать и запускать файлы в ней. Скачать PyСharm можно со страницы https://www.jetbrains.com/pycharm/download/.

Для запуска программы на языке Си, ее сначала надо сохранить файле с расширением .c, и выполнить команду «gcc имя_файла.c». Будет создан exe-файл, который можно запустить.

Минимальная программа на Си выглядит так:

#include <stdio.h>


int main()

{

  printf("Hello world\n");

  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=%d\n", x);

printf("%d\n", 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("%d\n", i);

}

Вывод чисел от 1 до 9 с шагом 2:

for(int i=1; i<10; i+=2) {

  printf("%d\n", 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++) {

  printf("%d\n", values[i]);

}

При желании можно слегка схитрить, если максимальный размер массива заранее известен.

int values[255] = { 1,2,3,5,10,15,20 }, cnt = 7;

for(int i=0; i<cnt; i++) {

  printf("%d\n", values[i]);

}

values[cnt] = 7;

cnt++;

Можно пользоваться динамическим распределением памяти, хотя это немного сложнее:

int *valuesArray = (int*)malloc(10*sizeof(int));

valuesArray[0] = 1;

valuesArray[1] = 3;

valuesArray[2] = 15;

valuesArray = (int*)realloc(valuesArray, 25*sizeof(int));

valuesArray[20] = 555;

valuesArray[21] = 777;

for(int i=0; i<25; i++) {

  printf("%d\n", valuesArray[i]);

}

free(valuesArray);

Важно заметить, что неинициализированные значения массива, например valuesArray[16], будут содержать «мусор», некие значения которые были до этого в памяти. Си достаточно низкоуровневый язык, и такие моменты нужно учитывать. Хорошим тоном является инициализация всех переменных при их описании. Вот такой код формально не содержит ошибок:

int x;

printf("x=%d\n", x);

Однако при его запуске выведется значение 4196608, или 0, или 32, результат непредсказуем. В большой программе такие ошибки может быть сложно найти, тем более что проявляться они могут не всегда.

Арифметические операции

Сложение, умножение,деление:

x1 = 3

x2 = (2 * x1 * x1 + 10*x1 + 7)/x1

Возведение в степень:

x3 = x1**10

print(x1, x2, x3)

Переменную также можно увеличить или уменьшить:

x1 += 1

x1 -= 10

print(x1)

Остаток от деления:

x2 = x1 % 6

print(x2)

Подсчитаем сумму элементов массива:

values = [1,2,3,5,10,15,20]

sum = 0

for p in values:

    sum += p

print(sum)

Для более сложных операций необходимо подключить модуль math. Вычисление квадратного корня:

import math


print(math.sqrt(x3))

Условия задаются отступами, аналогично циклам:

print (x1)

if x1 % 2 == 0:

    print("x1 четное число")

else:

    print("x1 нечетное число")

Python может делать вычисления с большими