Рассказы о математике с примерами на языках 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. Число Пи

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


Рекомендуем почитать
В поисках бесконечности

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


Математика на ходу

Как приобщить ребенка к математике и даже сделать так, чтобы он ее полюбил? Замечательные британские популяризаторы науки Роб Истуэй и Майк Эскью нашли веселый и легкий путь к детскому сердцу, превратив страшное пугало – математику – в серию увлекательных игр для детей от 4 до 14 лет. Пусть ваш ребенок исподволь овладевает математической премудростью, играя изо дня в день в угадайку, числовые прятки, двадцаточку и зеленую волну. Вы сможете играть за столом, в очереди к врачу, в магазине, на прогулке, используя подручный счетный материал: машины на стоянке, товары на полках супермаркета, мотоциклистов на дороге… И конечно, ничто не мешает вам переиначивать придуманные авторами математические забавы на свой лад, приспосабливая их ко вкусам и потребностям собственных детей.


Значимые фигуры

Несмотря на загадочное происхождение отдельных своих элементов, математика не рождается в вакууме: ее создают люди. Некоторые из этих людей демонстрируют поразительную оригинальность и ясность ума. Именно им мы обязаны великими прорывными открытиями, именно их называем пионерами, первопроходцами, значимыми фигурами математики. Иэн Стюарт описывает открытия и раскрывает перед нами судьбы 25 величайших математиков в истории – от Архимеда до Уильяма Тёрстона. Каждый из этих потрясающих людей из разных уголков мира внес решающий вклад в развитие своей области математики.


Квантовый оптоэлектронный генератор

В книге развита теория квантового оптоэлектронного генератора (ОЭГ). Предложена модель ОЭГ на базе полуклассических уравнений лазера. При анализе доказано, что главным источником шума в ОЭГ является спонтанный шум лазера, обусловленный квантовой природой. Приводятся схемы и экспериментальные результаты исследования малошумящего ОЭГ, предназначенного для применения в различных областях военно-космической сферы.


Флатландия. Сферландия

Произведения Э. Эбботта и Д. Бюргера едины по своей тематике. Авторы в увлекательной форме с неизменным юмором вводят читателя в русло важных геометрических идей, таких, как размерность, связность, кривизна, демонстрируя абстрактные объекты в различных «житейских» ситуациях. Книга дополнена научно-популярными статьями о четвертом измерении. Ее с интересом и пользой прочтут все любители занимательной математики.


Стратегии решения математических задач

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