Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[ Миронченко ] Императивное и объектно-ориентированное програмирование на Turbo Pascal и Delphi

.pdf
Скачиваний:
71
Добавлен:
25.04.2014
Размер:
3.16 Mб
Скачать

31

Для закрепления материала я приведу еще несколько примеров представления чисел в двоичной системе:

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!xn−1 ln x + (−1)n−1 c xn−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