Рассказы о математике с примерами на языках Python и C - [2]
>for(int i=0; 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 может делать вычисления с большими числами, что достаточно удобно:
>x1 = 12131231321321312312313131124141
>print(10 * x1)
>print(math.sqrt(x1))
Можно вывести даже факториал числа 1024, что не сделает ни один калькулятор:
>print(math.factorial(1024))
В Си вычисление суммы элементов массива выглядит так:
>int sum = 0;
>for(int i=0; i
> sum += values[i];
>}
>printf("Sum=%d\n", sum);
Пожалуй, этого не хватит чтобы устроиться на работу программистом, но вполне достаточно для понимания большинства примеров в книге. Теперь вернемся к математике.
2. Математические фокусы
Для «разминки» рассмотрим несколько фокусов, имеющих отношение к числам. Никаких особых сложностей в них нет, но их знание поможет развеселить или удивить знакомых знанием математики.
Умножение в уме числа на 11
Рассмотрим простой пример: 26 * 11 = 286
Сделать это в уме просто, если взять сумму чисел и поместить в середину: 26 * 11 = 2 [2+6] 6
Аналогично 43 * 11 = 473, 71 * 11 = 781 и так далее.
Чуть длиннее расчет, если сумма чисел больше либо равна 10. Но и тогда все просто: в середину кладется младший разряд, а 1 уходит в старший разряд:
47 * 11 = [4] [4 + 7 = 11] [7] = [4 + 1] [1] [7] = 517
94 * 11 = [9] [9 + 4 = 13] [4] = [10] [3] [4] = 1034
Возведение в квадрат числа, оканчивающегося на 5
Подсчитать это тоже просто. Если число рассмотреть как пару NM, то первая часть результата — это число N, умноженное на (N + 1), вторая часть числа — всегда 25. 35>2 = [3 * 4] [25] = 12 25
Аналогично:
25>2 = [2 * 3] 25 = 625 85>2= [8*9] 25 = 7225 и так далее.
Отгадывание результата
Попросим человека загадать любое число. Например 73. Затем чтобы еще больше запутать отгадывающего, попросим сделать следующие действия:
‐ удвоим число (146)
‐ прибавляем 12 (158)
‐ разделим на 2 (79)
‐ вычтем из результата исходное число (79 - 73 = 6)
В конце мы отгадываем, что результат — 6. Суть в том, что число 6 появляется независимо от того, какое число загадал человек.
Математически, это доказывается очень просто:
(2 * n + 12) / 2 - n = n + 6 - n = 6, независимо от значения n.
Отгадывание чисел
Есть другой фокус с отгадыванием чисел. Попросим человека загадать трехзначное число, числа в котором идут в порядке уменьшения (например 752). Попросим человека выполнить следующие действия:
‐ записать число в обратном порядке (257)
‐ вычесть его из исходного числа (752 - 257 = 495)
‐ к ответу добавить его же, только в обратном порядке (495 + 594)
Получится число 1089, которое «фокусник» и объявляет публике.
Математически это тоже несложно доказать.
‐ Любое число вида abc в десятичной системе счисления представляется так:
abc = 100 * a + 10 * b + c.
‐ Разность чисел abc - cba:
100 * a + 10 * b + c + 100 - 100 * c - 10 * b - a = 100 * a - 100 * c - (a - c) = 100 * (a - c) - (a - c)
‐ Т. к. по условию a - c > 0, то результат можно записать в виде:
100 * (a - c) - (a - c) = 100 * (a - c) - 100 + 90 + 10 - (a - c) = 100 * (a - c - 1) + 10 * 9 + (10 - a + c)
Мы узнали разряды числа, получающегося в результате:
a>1 = a - c - 1, b>1 = 9, c>1 = 10 - a + c
‐ Добавляем число в обратном порядке:
a>1b>1c>1 + c>1b>1a>1 = 100 * (a - c - 1) + 10 * 9 + (10 - a + c) + 100* (10 - a + c) + 10 * 9 + a - c - 1
Если раскрыть все скобки и сократить лишнее, в остатке будет 1089.
3. Число Пи
Вобьем в стену гвоздь, привяжем к нему веревку с карандашом, начертим окружность. Как вычислить длину окружности? Сегодня ответ знает каждый школьник — с помощью числа Пи. Число Пи — несомненно, одна из основных констант мироздания, значение которой было известно еще в древности. Оно используется везде, от кройки и шитья до расчетов гармонических колебаний в физике и радиотехнике.
Первый перевод с французского книги «Recoltes et Semailles» выдающегося математика современности Александра Гротендика. Автор пытается проанализировать природу математического открытия, отношения учителя и учеников, роль математики в жизни и обществе. Текст книги является философски глубоким и нетривиальным и носит характер воспоминаний и размышлений. Книга будет интересна широкому кругу читателей — математикам, физикам, философам и всем интересующимся историческими, методическими и нравственными вопросами, связанными с процессом математического открытия и возникновения новых теорий.
Давид Гильберт намеревался привести математику из методологического хаоса, в который она погрузилась в конце XIX века, к порядку посредством аксиомы, обосновавшей ее непротиворечиво и полно. В итоге этот эпохальный проект провалился, но сама попытка навсегда изменила облик всей дисциплины. Чтобы избавить математику от противоречий, сделать ее «идеальной», Гильберт исследовал ее вдоль и поперек, даже углубился в физику, чтобы предоставить квантовой механике структуру, названную позже его именем, — гильбертово пространство.
Саймон Сингх рассказывает о самых интересных эпизодах мультсериала, в которых фигурируют важнейшие математические идеи – от числа π и бесконечности до происхождения чисел и самых сложных проблем, над которыми работают современные математики.Книга будет интересна поклонникам сериала «Симпсоны» и всем, кто увлекается математикой.На русском языке публикуется впервые.
Цель книги доктора философских наук Б. В. Бирюкова и кандидата философских наук В. Н. Тростникова - создать общую картину подготовки и развития логико-математических аспектов кибернетики. Авторы рассказывают о длительном развитии науки логики, возникшей еще в Древней Греции, прослеживают непрерывающуюся нить преемственности, тянущуюся от Аристотеля к "чуду XX века" - быстродействующим кибернетическим устройствам.
На протяжении многих веков симметрия оставалась ключевым понятием для художников, архитекторов и музыкантов, однако в XX веке ее глубинный смысл оценили также физики и математики. Именно симметрия сегодня лежит в основе таких фундаментальных физических и космологических теорий, как теория относительности, квантовая механика и теория струн. Начиная с древнего Вавилона и заканчивая самыми передовыми рубежами современной науки Иэн Стюарт, британский математик с мировым именем, прослеживает пути изучения симметрии и открытия ее основополагающих законов.
Сколько имеется простых чисел, не превышающих 20? Их восемь: 2, 3, 5, 7, 11, 13, 17 и 19. А сколько простых чисел, не превышающих миллиона? Миллиарда? Существует ли общая формула, которая могла бы избавить нас от прямого пересчета? Догадка, выдвинутая по этому поводу немецким математиком Бернхардом Риманом в 1859 году, для многих поколений ученых стала навязчивой идеей: изящная, интуитивно понятная и при этом совершенно недоказуемая, она остается одной из величайших нерешенных задач в современной математике.