[ Миронченко ] Императивное и объектно-ориентированное програмирование на Turbo Pascal и Delphi
.pdf31
Для закрепления материала я приведу еще несколько примеров представления чисел в двоичной системе:
37 = 32 + 4 +1 = 1 25 +1 22 +1 20 = 1001012 255 = 128 + 64 + 32 +16 + 8 + 4 + 2 +1 = 111111112
Переводить числа из различных систем счисления назад в десятичную ССч еще
проще. Например, для 2-й ССч формула перевода будет выглядеть так: |
|
||||||||||||||||
(d |
k −1 |
d |
k −2 |
...d |
) |
2 |
= 2k −1 |
d |
k −1 |
+ 2k −2 |
d |
k −2 |
+ ... + 20 d |
0 |
, где все d |
- цифры 0 или 1. |
(1) |
|
|
0 |
|
|
|
|
|
|
i |
|
|
||||||
Теперь мы построим алгоритм перевода чисел из десятичной ССч в двоичную. Предположим сначала, что у нас есть некоторое неизвестное число в десятичной системе. Как бы мы искали его цифры. Цифру в младшем разряде легко найти, если вычислить остаток от деления числа на 10. Если же разделить его на 10 (с отбрасыванием остатка), то мы получим число, в котором отброшена последняя цифра. Например, если исходное число =124, то мы получим числа 4 и 12. Затем, применяя к усеченному числу те же действия, мы получим 2-ю цифру и т.д.
Фактически, для перевода из 10-й ССч в 2-ю мы будем использовать тот же самый алгоритм, только делить будем на двойку. К такому же алгоритму можно прийти и из других соображений: перепишем правую часть формулы (1) следующим образом:
(d |
k −1 |
d |
k −2 |
...d |
0 |
) |
2 |
= |
2k −1 d |
k −1 |
+ 2k −2 d |
k −2 |
+ ... + 20 d |
0 |
= d |
0 |
+ 2(d + 2(d |
2 |
+ 2 |
(d |
3 |
+ ... + 2(d |
k −2 |
+ 2d |
k −1 |
)))). |
|
|
||
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
||||||||||||
Если разделить слагаемое, стоящее в правой части, на 2, то в остатке будет |
d0 , |
а |
||||||||||||||||||||||||||||
частным |
- |
|
|
d1 + 2(d2 + 2(d3 + ... + 2(dk −2 + 2dk −1 ))). |
Деля |
его |
на |
2, |
получим |
остаток |
d1 , |
а |
||||||||||||||||||
частное - d2 + 2 |
(d3 + ... + 2(dk −2 + 2dk −1 )) . И т.д. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
Давайте рассмотрим пример: представим число 43 в двоичной ССч.
43 = 1+ 2 21 , поэтому d0 = 1 21 = 1+ 2 10 , поэтому d1 = 1 10 = 0 + 2 5 , поэтому d2 = 0
5 = 1+ 2 2 , d3 = 1 2 = 0 + 2 1 d4 = 0
1 = 1+ 2 0 d5 = 1
Итого, получим: 4310 = 1010112
Ясно, что аналогичный алгоритм можно адаптировать и для перевода дробных, а не только натуральных чисел. Если дробь непериодическая, то проблем не возникает. В противном случае вышеприведенный алгоритм использовать нельзя, т.к. он будет бесконечен. Решение этой проблемы вынесено в упражнения.
1.5. Арифметические действия в двоичной системе счисления
Информация в современных компьютерах представляется в виде последовательности битов. Поэтому для ПК «родной» системой счисления является двоичная. Нашей первоочередной задачей будет научиться производить арифметические операции с натуральными числами, записанными в двоичной системе счисления.
Начнем со сложения. Таблица сложения для двоичных чисел предельно проста:
32
02 + 02 = 02 12 + 02 = 02 +12 = 12
12 +12 = 102
Складывать двоичные числа будем «в столбик», аналогично тому, как мы это делали в начальной школе с десятичными числами.
Рассмотрим пример 59 + 46 = 105
|
|
1 |
|
1 |
|
1 |
|
1 |
|
|
|
|
+111011 |
+111011 |
+111011 |
+111011 |
+111011 |
+111011 |
|||||||
101110 |
101110 |
101110 |
101110 |
101110 |
101110 |
|||||||
1 |
|
01 |
|
001 |
|
1001 |
|
01001 |
|
|
1101001 |
|
Теперь давайте научимся умножать двоичные числа:
02 02 = 02 |
12 02 = 02 12 = 02 |
12 12 = 12 |
|
|
|
|
|
|
|
|||
|
Лишь |
4 простых равенства вместо 100, |
которые заставляют первоклашек |
|||||||||
110 |
|
заучивать наизусть! Вот простой пример умножения чисел в двоичной системе: |
||||||||||
|
|
Деление и вычитание в столбик, разумеется, также абсолютно |
||||||||||
|
11 |
|
аналогично делению и вычитанию в 10-й ССч. |
|
|
|
|
|
||||
110 |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||
+110 |
|
Рациональные и иррациональные числа в 2-й ССч также вводятся очень |
||||||||||
10010 |
просто, например, |
|
|
|
|
|
|
|
|
|||
|
|
|
1001.101 = 1 23 + 0 22 |
+ 0 21 +1 20 +1 2−1 + 0 2−2 |
+1 2−3 = 8 +1+ |
1 |
+ |
1 |
= 9 |
5 |
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
2 |
|
2 |
8 |
8 |
|
|||
|
|
|
|
|
|
|
||||||
1.6. Представление двоичных чисел в ПК
Любой переключатель может кодировать 2 значения: включен/выключен, которые можно отождествить с числами 0, 1. В компьютерной технике все аналогично: сделать память на основе элементов, которые могут находиться в 2-х состояниях проще, чем на основе элементов, принимающих 10 различных значений. Но просто перенести все рассуждения из математики в программирование нельзя. Причина лежит на поверхности: ведь кроме 0 и 1 мы использовали еще 2 символа: «-» и «.» (двоичную точку). Значит, перед тем, как использовать числа в ПК, надо избавиться от необходимости использовать эти 2 символа. Только представление натуральных чисел в математике и в ПК совпадают.
Представление целых чисел
Мы с вами рассмотрим лишь представление целых чисел. Пусть для определенности количество двоичных разрядов =3. Логичный способ такой: пусть старший бит числа будет знаковым: если он равен 0, то число – положительное, если 1
– то отрицательное. Т.е. все числа вида 0** - положительные, а вида 1** - отрицательные.
Теперь надо ввести порядок на множестве целых чисел. Это можно сделать различными способами. Естественно, лучшим способом будет такой, согласно которому арифметические операции и операции сравнения будут выглядеть наиболее просто.
Одним из таких «хороших» порядков будет следующий (для чисел, на которые выделяется 3 бита):
33
100 |
101 |
110 |
111 |
000 |
001 |
010 |
011 |
-4 |
-3 |
-2 |
-1 |
0 |
1 |
2 |
3 |
Называется такое представление двоичных чисел двоичным дополнительным кодом (ДДК). Неотрицательные числа, записанные в ДДК, в 10-ю систему переводятся так же, как и натуральные числа, записанные в обычной двоичной ССч. Процедура перевода отрицательных чисел будет иной: сначала инвертировать число (т.е. заменить нули на единицы, а единицы на нули), что соответствует взятию симметричного числа с другого края таблицы, а затем прибавить к полученному числу единицу (т.к. натуральные числа начинаются с 0, а не с 1), и результат перевести в десятичную систему как натуральное число. Ответом же будет это число со знаком «-».
Пример 1: пусть на запись целого числа выделяется 3 бита. Требуется перевести число 101ДДК (число 101, записанное в ДДК) в десятичную систему счисления.
Решение: старший бит равен 1, поэтому число – отрицательное. Сначала инвертируем число 101. Получим 010. Прибавляя единицу, получим 011. Это число переводим в десятичную систему как обычное натуральное число: 0112 = 310 .
Значит 101ДДК = −310 .
Пример 2: пусть на запись целого числа выделяется 5 битов. Надо перевести число 10000ДДК в 10-ю систему счисления.
Решение: старший бит равен 1, поэтому число – отрицательное. Проделаем необходимые операции: 10000 → [инвертируем] → 01111 → [прибавляем 1] → 10000 .
Теперь надо перевести число 10000 (это уже обычное двоичное натуральное число, а не целое число, записанное в ДДК).
100002 = 162
Значит 10000ДДК = −1610 .
Сравнивать положительные числа между собой можно просто: начать сравнение со старших битов и, как только будут найдены биты с различными значениями, то число, в котором находится 0, будет меньше. Видно, что абсолютно аналогично можно сравнивать и отрицательные числа, что очень хорошо. Более того, сложение и умножение чисел, заданных с помощью ДДК, можно выполнять по тому же алгоритму, что и умножение натуральных чисел.
Например:
−210 210 = 110ДДК 010ДДК = [применяем обычный алгоритм] = 1100
Ответ в выражении занимает 3 бита, поэтому все биты, которые выходят за допустимые 3 бита, будут уничтожены, и результат получится:
110ДДК 010ДДК = 100ДДК = −410 .
Чтобы понять, почему алгоритмы выполнения арифметических операций для чисел, записанных в ДДК, не отличаются от соответствующих алгоритмов для натуральных чисел, запишем целые числа, заданные в ДДК, так, как показано на рисунке 1.3.
Стрелка показывает направление роста двоичных чисел, которые
интерпретируются |
как |
натуральные |
(при |
этом |
мы |
учитываем, |
что |
||
1112 +12 |
= 10002 = [отбрасываем старший бит] = 02 ). Прибавление |
единицы |
к некоторому |
||||||
числу |
означает сдвиг его |
по направлению стрелки. Прибавление |
–1 означает |
||||||
34
прибавление 111ДДК , т.е. сдвиг на 7 единиц. Т.к. всего чисел 8 = 23 , то сдвиг на 7 единиц
по направлению стрелки это то же самое, что и сдвиг на 1 единицу в обратную сторону. Абсолютно аналогично, прибавление −2 = 110ДДК означает сдвиг на 6 клеток по
направлению стрелки = сдвиг на 2 клетки против движения стрелки. Следовательно, алгоритм сложения целых чисел, записанных в ДДК, точно такой же, как и алгоритм сложения обычных натуральных чисел. Аналогично можно рассмотреть и умножение целых чисел, записанных в ДДК.
111 |
000 |
001 |
0 |
||
-1 |
|
1 |
110 -2 |
|
2 010 |
-3 |
-4 |
3 |
101 |
011 |
|
|
100 |
|
Рис 1.3 Круг целых чисел
При выполнении арифметических операций нужно контролировать выход за границы диапазона чисел (например: −4 + (−1) = 100ДДК +111ДДК = 011ДДК = 3). Мы не будем разбирать, как это делается, т.к. эта тема больше подходит курсу ассемблера.
1.7. Шестнадцатеричная ССч
Помимо двоичной системы счисления часто используется шестнадцатеричная ССч. В ней числа записываются с помощью 16 цифр: 0,1,2,…,9, A, B, C, D, E, F. Цифрам A, B, C, D, E, F в десятичной ССч соответствуют числа 10, 11, 12, 13, 14, 15.
Для перевода числа в шестнадцатеричную ССч надо записать число n в виде n = 16k −1 dk −1 +16k −2 dk −2 + ... +160 d0 , где все di - шестнадцатеричные цифры (0,1,….9, А, B,
C, D, E, F). Теперь записывая подряд все цифры, получим запись заданного числа в 16ричной ССч.
Например:
132=16 8+160 4 = 8416
78=16 4+160 E = 4E16
Шестнадцатеричные числа полезны, так как они позволяют упростить запись 2- ых чисел (см. упражнение № 17). Хорошо разобравшись в двоичной ССч, вы без труда сумеете выполнять арифметические операции и в 16-й ССч.
1.8. Более общая точка зрения на системы счисления
Когда мы переводили число n из десятичной ССч в двоичную, мы искали коэффициенты ci в разложении n = c0 20 + c1 21 + ... + ck 2k + ..., а после этого упорядоченный
35
набор коэффициентов (c0 , c1 ,..., ck ,...) мы называли числом, соответствующим числу n в двоичной ССч (вообще-то числом мы называли (..., ck ,..., c0 ) 4, однако в этом параграфе
удобнее поменять порядок следования коэффициентов на обратный).
Давайте теперь поставим более общую задачу: пусть задан упорядоченный набор
(a0 , a1,..., ak ,...) . Мы будем искать набор (c0 , c1 ,..., ck ,...) такой, что: n = c0a0 + c1a1 + ... + ck ak + ...
Сам набор (c0 , c1 ,..., ck ,...) будем называть разложением числа n по системе
(a0 , a1,..., ak ,...) .
Отмечу, что разложение числа может не существовать вообще, или оно может быть не единственно.
Например, найдем коэффициенты разложения числа 4 по системе (20 , 21,..., 2k ,...) . Если ci - натуральны, то таких разложений 3:
4= 4 20 ,
4= 2 20 +1 21
4= 0 20 + 0 21 +1 22
В новых обозначениях они выглядят так: 4 = (4, 0,..., 0,...) = (2,1, 0,..., 0,...) = (0, 0,1,0,..., 0,...) .
То, что разложение по системе (20 , 21,..., 2k ,...) для натуральных чисел существует всегда, очевидно. Для получения единственности в двоичной ССч ставится ограничение на величину коэффициентов: все они должны быть 0 или 1. Тогда выходит, что 4 = (0, 0,1, 0,..., 0,...) .
Поэтому введем такое определение ССч:
•Системой счисления над некоторым числовым множеством M назовем упорядоченный набор A = (a0 , a1,..., ak ,...) вместе с набором правил S , которые для любого числа n M обеспечивают существование и единственность представления в виде суммы следующего вида: n = c0a0 + c1a1 + ... + ck ak + ....
•Упорядоченный набор (c0 , c1 ,..., ck ,...) будем называть числом n , записанным в
системе (A, S ) .
Обычные позиционные системы счисления – наиболее просты, поэтому неудивительно, что они появились самые первые. Менее тривиальным примером является фибоначчиева ССч.
1.9.Фибоначчиева ССч
•Последовательность Фибоначчи определяется так:
f0 = f1 = 1,
fn+1 = fn + fn−1 , n > 1
Первые члены последовательности, соответственно, такие: 1, 1, 2, 3, 5, 8, 13…
•Числами Фибоначчи мы будем считать числа f1, f2 , f3 ,... (т.е. первую из единиц
отбросим для удобства).
Названа эта последовательность в честь средневекового математика Фибоначчи, который пришел к ней, рассматривая задачу о размножении кроликов. Она состояла в следующем: по какому закону будет меняться численность кроликов, если: каждый месяц пара кроликов рождает новую пару и воспроизводить потомство кролики могут
4 Наверное, причиной всему арабы, которые пишут справа налево.
36
начиная со 2-го месяца своего рождения. Можно проверить, что если изначально есть 1 пара только что родившихся кроликов, то количество пар кроликов в зависимости от месяца составит как раз последовательность Фибоначчи.
Чтобы вы освоились с этими числами, докажем простое свойство:
f1 + f2 + ... + fn = fn+2 − 2
Доказательство:
Из определения ЧФ получаем: f1 = f2 − f0
f2 = f3 − f1
fn = fn+1 − fn−1
Сложим числа f1, f2 ,..., fn . Получим:
f1 + f2 + ... + fn = ( f2 − f0 ) + ( f3 − f1 ) + ( f4 − f2 ) + ... + ( fn+1 − fn−1 ) = − f0 − f1 + fn + fn+1 = fn+2 − 2
У ЧФ есть много других замечательных свойств. Некоторые из них приведены вам в качестве задач.
Теперь мы займемся тем, раде чего и затевали сыр-бор, т.е. фибоначчиевой ССч.
Лемма: n N существует представление в виде суммы различных чисел
Фибоначчи.
Доказательство:
Пусть дано число k . Если k - ЧФ, то лемма доказана. В противном случае найдем максимальное из чисел Фибоначчи, которое меньше k . пусть это число - fi0 .
Тогда k = k1 + fi0 . Теперь найдем максимальное число Фибоначчи, меньшее k1 -
пусть это - fi1 . Тогда k = fi0 + fi1 + k2 . Замечу, что какое бы ни было число k , fi0 и fi1 не будут совпадать. Если бы это было бы не так, то тогда выполнялось бы неравенство
k > 2 fi . Но |
fi |
+1 < 2 fi , а значит, fi |
не |
является |
наибольшим числом Фибоначчи, |
||
0 |
0 |
0 |
0 |
|
|
|
|
меньшим k . Т.е. при любом k выполняется fi |
> fi . |
|
|||||
|
|
|
|
|
0 |
1 |
|
Если |
на |
некотором |
s -м шаге |
мы |
получим |
числоks , которое будет числом |
|
Фибоначчи, то мы доказали то, что хотели. А иначе и быть не может, т.к. для любого натурального числа r найдется число Фибоначчи, которое будет ≤ r .
Итак, для любого числа k |
можно записать: |
|
|
|
||
|
k = fi |
+ fi |
+ ...+ fi |
(1) |
||
|
0 |
1 |
s |
|
|
|
Конец доказательства. |
|
|
|
|
|
|
Мы с вами доказали, что любое число k |
можно представить в виде линейной |
|||||
комбинации чисел Фибоначчи: |
k = c1 f1 + ... + cn fn , |
где ci {0,1},i = |
|
. Значит, если мы |
||
1, n |
||||||
выберем A = ( f1,..., fn ,...) и укажем правило, по которому можно добиться однозначности
разложения, то мы построим систему счисления.
Но что хорошо: доказывая предыдущую лемму мы использовали алгоритм, связанный с выделением на каждом шаге наибольшего фибоначчиевого слагаемого. Его мы и возьмем в качестве правила. Фибоначчиева ССч построена.
Давайте теперь напишем несколько представлений чисел в ФССч:
20=2+5+13=f2 + f4 + f6 = 0 f1 +1 f2 + 0 f3 +1 f4 + 0 f5 +1 f6 .
37
Значит: 2010 = 010101ФССч 39 = 5 + 34 39=00010001ФССч
1.10. Метод математической индукции
Часто приходится доказывать некоторые утверждения, касающиеся натуральных чисел. Например: показать, что 13 + 23 + ... + n3 = (1+ 2 + ... + n)2 при всех n N .
Для доказательства можно использовать следующий метод:
1.База индукции: доказываем, что утверждение верно для n = 1 .
2.Шаг индукции: в предположении, что утверждение верно для всех чисел k = 1, n
доказываем, что оно верно и для k = n +1. |
|
В результате из того, что утверждение верно при |
n = 1 следует, что оно верно и при |
n = 2 , из того, что оно верно при n = 1, 2 следует, |
что оно верно и при n = 3 и т. д. |
Проделывая шаг индукции мы как бы доказываем сразу бесконечное количество утверждений.
Пример 1: Доказать, что 13 + 23 |
+ ... + n3 = |
n2 (n +1)2 |
|
|
|
|
|
|
|||||||
|
|
при всех n N . |
|
|
|||||||||||
|
|
|
|
||||||||||||
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
||
База индукции (БИ): при n = 1 выражение примет вид 13 = 12 |
|
|
|
|
|
|
|||||||||
Предположение индукции (ПИ): предположим, что при |
всех k = |
|
|
|
выполняется |
||||||||||
1, n |
|||||||||||||||
13 + 23 + ... + k 3 = |
k 2 |
(k +1)2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шаг индукции (ШИ): докажем, что равенство выполняется и при k = n +1. |
|
|
|||||||||||||
13 + 23 + ... + n3 + (n +1)3 = [согласно |
ПИ] = |
n2 (n +1)2 |
+ (n +1)3 = |
(n +1)2 (n2 + 4n + 4) |
= |
(n +1)2 (n + 2)2 |
|
||||||||
|
|
4 |
|||||||||||||
|
|
|
|
4 |
|
|
|
4 |
|
|
|
|
|||
Пример 2: Доказать, что n3 + 5nM6 при n ≥ 1. |
|
|
|
|
|
|
|
|
|
||||||
БИ: при n = 1 утверждение очевидно |
|
|
|
|
|
|
|
|
|
||||||
ПИ: предположим, что для любого k ≤ n выполняется k 3 + 5k M6 |
|
|
|||||||||||||
ШИ: докажем, что утверждение верно и для k = n +1: |
|
|
|
|
|
|
|||||||||
(n +1)3 + 5(n +1) = n3 + 3n2 + 3n +1+ 5n + 5 = (n3 + 5n) + 3n(n +1) + 6 |
|
|
|
|
|
|
|||||||||
Теперь: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n3 + 5nM6 по ПИ, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n(n +1)M2 3n(n +1)M6 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
Следовательно: (n3 + 5n) + 3n(n +1) + 6M6 . Утверждение доказано. |
|
|
|||||||||||||
Пример 3: Доказать неравенство Бернулли: (1− a )n ≥ 1− na , где 0 < a < 1 . |
|
|
|||||||||||||
БИ: при n = 1 неравенство очевидно |
|
|
|
|
|
|
|
|
|
||||||
ПИ: предположим, что для любого k ≤ n выполняется (1− a )k |
≥ 1− ka |
|
|
||||||||||||
ШИ: докажем, что неравенство выполняется и для k = n +1: |
|
|
|
|
|
|
|||||||||
(1 − a )n+1 = (1 − a)n (1 − a) ≥ [согласно ПИ и тому, что a < 1] ≥ (1 − na)(1− a) = 1 − na − a + na2 =
= 1 − (n + 1)a + na2 ≥ 1 − (n + 1)a
Неравенство доказано.
38
Как видите, индукция – замечательный способ доказательства, однако чтобы применять его надо знать, что доказывать. Что бы мы делали, если бы не знали ответа заранее? К счастью, иногда утверждения можно довольно легко сформулировать, и тогда индукция всесильна. Кроме того, данный метод можно обобщить, доказывая утверждения не только для натуральных чисел, но и для более сложных множеств.
1.11. Логарифмы
Число x называется логарифмом числа a по основанию b , если a = bx . Обозначается: x = logb a .
1
Например: log2 8 = 3 , т.к. 8 = 23 , log9 3 = 1 , т.к. 3 = 92 . 2
Давайте рассмотрим несколько свойств логарифмов:
1.Сразу из определения вытекает, что a = blogb a .
2.logc ab = b logc a
|
|
|
|
x |
|
|
|
|
|
|
|||
Доказательство. Пусть x = log |
|
ab |
ab = cx c |
|
= a |
x |
= log |
|
a x = b log |
|
a . |
|
|
c |
b |
c |
c |
|
|
||||||||
|
|
|
|||||||||||
|
|
|
|
|
b |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
||
3. logc (ab) = logc a + logc b |
|
|
|
|
|
|
|
|
|
|
|
|
|
Доказательство. Пусть x = logc a , |
y = logc b . |
|
|
|
|
|
|
||||||
Рассмотрим cx + y = cx c y = [Из определения логарифма] = ab . Следовательно: |
x + y = log |
c |
(ab) . |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.12.Последовательности и прогрессии
•Последовательностью чисел называется упорядоченный набор чисел.
•Арифметической прогрессией называется последовательность чисел, в которой каждый следующий член отличается от предыдущего на постоянное число, именуемое разностью прогрессии, или аn+1 = аn + d = a1 + nd , n > 1
Например, натуральный ряд 1,2,3, … , n, ... – арифметическая прогрессия, начинающаяся с 1, и с разностью прогрессии =1.
Давайте выведем формулу для суммы первых n членов арифметической прогрессии. Можно это сделать, замечая, что сумма первого и последнего слагаемого равна сумме второго и предпоследнего слагаемого и т.д. Но это доказательство слишком известно, поэтому мы пойдем другим путем. Сначала преобразуем сумму:
а1 + а2 + ... + аn = a1 + a1 + d + ... + a1 + (n −1)d = na1 + d (1+ 2 + ... + (n −1))
Обозначим: S1 (n −1) = 1+ 2 + ... + (n −1) . Теперь вычислим S1 (n −1) .
Сделать это можно таким красивым способом: чтобы вычислить S1 (n) будем отталкиваться от S2 (n) = 12 + 22 + ...+ n2
S2 (n) = 12 + (1+1)2 + ... + (n −1+1)2 = 12 + (12 + 2 1+12 ) + (22 + 2 2 +12 ) + ... + ((n −1)2 + 2(n −1) +12 ) =
= 12 + 22 + ... + (n −1)2 + n + 2(1+ 2 + ... + (n −1)) .
А теперь ясно, что n + 2(1+ 2 + ... + (n −1)) = n2 и
S1 (n −1) = 1+ 2 + ... + (n −1) = n(n −1) 2
Этот способ выглядит сложнее, чем тот, о котором я говорил вначале, но с его помощью можно получить рекуррентные формулы для S p (n) = 1p + 2p + ... + n p .
39
Теперь мы можем записать формулу суммы первых n членов арифметической прогрессии:
а |
+ а |
|
+ ... + а |
|
= na |
+ d |
n(n −1) |
= |
a1 + (n −1)d |
n = |
a1 + an |
n |
2 |
n |
|
|
|
||||||||
1 |
|
|
1 |
2 |
2 |
2 |
|
|||||
|
|
|
|
|
|
|
||||||
•Геометрической прогрессией называется последовательность чисел, в которой каждый следующий член отличается от предыдущего в постоянное число раз, именуемое знаменателем прогрессии, или bn+1 = qbn , n > 1
Теперь давайте выведем формулу для суммы первых n членов геометрической прогрессии.
b + b ...+ + b = b + qb + q 2b ...+ + q n−1b = b (1+ q + q 2 |
+ ... + q n−1 ) |
|||||
1 2 |
n |
1 |
1 |
1 |
1 1 |
|
А теперь воспользуемся формулой
1− q n = (1− q)(1+ q + q 2 + ... + q n−1 ) .
(Ее можно проверить, просто раскрывая скобки и приводя подобные слагаемые). В результате получим искомую формулу:
b1 + b2 + ... + bn = b1 (1− q n ) 1− q
Если | q |< 1, то можно вычислить и сумму бесконечного числа членов прогрессии.
Так как | q |< 1, то | q |n → 0 , то получим формулу:
n→∞
b1 + b2 + ... + bn |
+ ... = |
|
b1 |
|
1− q |
||||
|
|
|||
Задачи5
1.Какое наибольшее отрицательное рациональное число?
2.Сложите числа 0.(5) и 0.(6) без использования обыкновенных дробей.
3.Переведите числа 1094 и 1024 из десятичной в двоичную систему.
4.Переведите шестнадцатеричные числа BAD, FEED в двоичную систему.
5.Выведите формулу для вычисления количества цифр натурального числа, записанного в 10-й ССч.
6.Обобщите результат задачи 5 на случай произвольной системы счисления.
7.Докажите, что число 0,123456789101112… - иррационально.
8.Найдите ошибку в следующем доказательстве: «Теорема: пусть a > 0 . Тогда для
любого числа n > 0 , n N |
выполняется равенство an−1 = 1. Доказательство: БИ: n = 1 |
|||||||
a0 = 1. |
Пусть теперь, |
|
|
|
|
|
||
по предположению индукции, теорема верна для k = 1, n |
. |
|||||||
Докажем, что она выполняется и для k = n +1. |
||||||||
a(n+1)−1 = an |
= |
an−1 an−1 |
= [согласно ПИ] = |
1 1 |
= 1.» |
|||
|
|
|||||||
|
|
a(n−1)−1 |
1 |
|
|
|
||
9. Следующее доказательство по индукции выглядит корректным, но по непонятной
причине |
для n = 6 левая часть уравнения дает |
1 |
+ |
1 |
+ |
1 |
+ |
1 |
+ |
1 |
= |
5 |
, а правая |
||||||
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
2 |
6 |
12 |
20 |
30 |
|
6 |
|
|||||
|
3 |
− |
1 |
= |
4 |
|
. В чем же дело? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
2 |
6 |
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
5 Задачи 8, 9 взяты из книги Дональда Кнута «Искусство программирования» (том 1), задача 18 – из книги Дьердя Пойа «Математическое открытие».
40 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
«Теорема: |
1 |
|
+ |
1 |
|
+ ... + |
1 |
|
|
= |
|
3 |
|
− |
1 |
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
1 2 2 3 |
|
|
|
(n −1) n 2 |
|
|
|
|
|
n |
|
|
|
|
|
|
||||||||||||||||
Доказательство: БИ: при n = 1 |
|
|
3 |
|
− |
1 |
= |
1 |
. Предполагая, что теорема верна для всех |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
1 |
|
|
1 2 |
|
|
|
|
|
|
||||||||
k ≤ n , получим: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
1 |
+ |
1 |
+ ... + |
1 |
|
|
+ |
|
1 |
|
= |
3 |
|
− |
1 |
+ |
|
1 |
= |
3 |
− |
1 |
. Теорема доказана» |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
1 2 2 3 |
(n −1) n n (n +1) 2 |
|
|
|
n n (n +1) 2 n +1 |
|||||||||||||||||||||||||||||||
10.Докажите обобщение неравенства Бернулли:
(1− a1 )(1− a2 )...(1− an ) ≥ 1− (a1 + a2 + ... + an ) , где 0 < ai < 1, i = 1, n
11.Докажите по индукции: для n ≥ 10 выполняется 2n > n3 .
12.Докажите: 7n +12n +17M18 при любом натуральном n .
13. |
Докажите: (a + a |
+ ... + a |
)2 = a2 |
+ a2 |
+ ... + a2 |
+ 2a a |
2 |
+ 2a a + ... + 2a |
a |
|
1 2 |
n |
1 |
2 |
n |
1 |
1 3 |
n−1 n |
|
14. |
Докажите, что число log3 15 - иррационально. |
|
|
|
|||||
15. |
Пусть задана периодическая дробь в k -ичной системе счисления в виде fk = 0.(sk ) , |
||||||||
|
где sk - некоторое число, заданное в k -ичной ССч. Предложите простую формулу |
||||||||
|
перевода числа fk |
в 10-ную ССч. |
|
|
|
|
|
||
16.Возьмите два числа в двоичной системе и разделите их столбиком
17.Напишите простой алгоритм перевода 2-ых чисел в 16-ричное представление и обратно.
18.(!) Если вы уже знаете закон, то доказать его по индукции – дело техники. Но зачастую вы заранее не знаете зависимости – вы должны угадать ее! Если закон достаточно сложен, то угадать его непросто. Вот один из примеров:
y= x−1 ln x . Найти y(n) . Давайте поэкспериментируем:
y′ = −x−2 ln x + x−2
y′′ = 2x−3 ln x − 3x−3 y′′′ = −6x−4 ln x +11x−4
Теперь давайте попробуем угадать сам закон. Общий вид первого слагаемого определить легко, а вот коэффициент при втором слагаемом сразу в голову не приходит. Можно записать так:
y(n ) = (−1)n n!x− n−1 ln x + (−1)n−1 c x− n−1 , |
n! = 1 2 ... n , n > 0 . |
|
|
|
|||
|
|
n |
|
|
|
|
|
Докажите это соотношение, а затем найдите коэффициент cn . |
|
|
|
||||
19.(!) Пусть { f |
} - последовательность Фибоначчи. Найдите ϕ = lim |
fn+1 |
|
||||
|
|
||||||
|
n |
|
n→∞ |
|
fn |
||
|
|
|
|
||||
|
|
|
|
|
|
||
• |
Сначала найдите числоϕ в предположении, что предел существует. |
||||||
• |
Докажите, что число ϕ действительно является пределом |
fn+1 |
. |
||||
|
|||||||
|
|
|
|
fn |
|
|
|
20.(!) |
Докажите, что полученное |
число ϕ из упражнения 19 представимо в виде |
|||||
1
ϕ = 1+
1
1+
1+ ...
21.(!) С помощью метода, который был применен для вычисления суммы членов арифметической прогрессии, выведите рекуррентную формулу для
S p (n) = 1p + 2p + ... + n p
