Научная статья на тему 'Рекуррентные соотношения'

Рекуррентные соотношения Текст научной статьи по специальности «Математика»

CC BY
639
41
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
РЕКУРРЕНТНОЕ СООТНОШЕНИЕ

Аннотация научной статьи по математике, автор научной работы — Златопольский Дмитрий Михайлович

Статья рассказывает о двух способах вычисления членов последовательности, заданной рекуррентным соотношением: с использованием массивов и без использования массивов. Приведены примеры расчетов, задания для самостоятельной работы учащихся.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Рекуррентные соотношения»

Златополъский Дмитрий Михайлович

РЕКУРРЕНТНЫЕ СООТНОШЕНИЯ

И в математике, и в информатике часто встречаются последовательности чисел, в которых каждый последующий член выражается через предыдущие. Например, такими последовательностями являются прогрессии: арифметическая и геометрическая. В первой из них, как известно, каждый последующий член равен предыдущему, увеличенному на разность прогрессии: а1 = а1 _ 1 + во второй - предыдущему, умноженному на знаменатель прогрессии: аг = а1 _ 1 * к.

Формулы, выражающие очередной член последовательности через один или несколько предыдущих членов, называют «рекуррентными соотношениями».

Как вычислить п-й член последовательности, заданной рекуррентным соотношением? Иногда для расчета п-го члена есть

...гactña écfñfrezdfOfñcfi- nocrt&gaáafñ&rtíftocfñu гисел, á tcofMjíux tcA^fuá- посл&рфащий tefcej ítfcefuftfíque...

простая формула. Например, для арифметической прогрессии: an = а1 + d(n - 1). Чаще, однако, такой простой формулы нет или она неизвестна. В этом случае члены последовательности вычисляют по рекуррентному соотношению один за другим от i = 1 до i = n.

Возможны два способа таких вычислений:

1) с использованием массивов;

2) без использования массивов.

Первый способ проиллюстрируем на

примере следующей последовательности: 2, 3, 5, 9, 17, ..., задаваемой рекуррентным соотношением ai = 2 * ai -1 -1, (а1 =2).

Составим программу для расчета n-го члена такой последовательности.

Так как номер искомого члена последовательности заранее неизвестен, то массив, в котором будут храниться вычисляемые значения, следует описать, так сказать, с запасом1, например, на 100 элементов (то есть принимаем, что п < 100).

Будем вычислять члены последовательности по заданному рекуррентному соотношению один за другим от / = 1 до / = п, запоминая значение /-го члена такой последовательности в элементе a [i] массива а. Соответствующая программа на школьном алгоритмическом языке [1] выглядит так (см. листинг 1).

Недостатком такого способа является то, что, хотя нас интересует лишь n-й член последовательности, в процессе вы-

1 В языке программирования Basic допускается описывать массив непосредственно в «теле» программы после задания количества его элементов, так что использованная «хитрость» в программе на этом языке не понадобится.

Листинг 1

цел к ¡Константа - размер массива

к := 100 алг Расчет1

нач цел таб а[1:к], цел 1, п

вывод нс. "Задайте номер искомого члена последовательности" ввод п

а[1]:=2 ¡Первый член последовательности

нц для 1 от 2 до п

| а[1] := 2 * а[1 - 1] - 1 ¡Очередные члены последовательности кц

вывод нс. "Искомый член последовательности равен ", а[п] кон

полнения программы компьютер вычисляет и хранит в памяти все члены последовательности от 1-го до п-го. Кроме того, в памяти выделяется место для большого количества неиспользуемых элементов массива, описанного, как указывалось, с запасом.

Перечисленных недостатков лишен второй метод вычислений - без использования массивов. Действительно, если для вычисления следующего члена последовательности нужно знать только значение предыдущего, то можно не запоминать все члены последовательности в массиве, а иметь одну величину а и при увеличении номера г изменять ее значение; для рассмотренного примера: а := 2 с а - 1. Другими словами, рекуррентное соотношение аг=2*аг-1-1 можно заменить соотношением а = 2 * о, - 1,

новое старое '

которое записывается в виде оператора присваивания а := 2 * а -1 (см. листинг 2).

В рассмотренных примерах (прогрессии и др.) очередной член последовательности

выражается только через один предыдущий элемент. Часто число элементов, от которых зависит очередной член последовательности, больше 1. Рассмотрим, например, последовательность чисел 1, 1, 2, 3, 5, 8, 13, ... Конечно, вы уже установили закон, по которому она строится - каждый следующий член последовательности, начиная с третьего, равен сумме двух предыдущих (это так называемая «последовательность Фибоначчи»). Для нее рекуррентное соотношение имеет вид: ai= ai _2+ai - ах=1, а2= 1

Очевидно, что если для расчета п-го члена последовательности Фибоначчи не использовать массивы, то в процессе вычислений надо хранить значения не одного, а двух предшествующих элементов. Разработаем соответствующую программу.

Используем в ней следующие основные величины:

п - номер искомого члена последовательности;

Листинг 2

алг Расчет2

нач цел а, 1, п

вывод нс, "Задайте номер искомого члена последовательности"

ввод п

а:=2

нц для 1 от 2 до п

|а: = 2*а-1

кц вывод нс, "Искомый член последовательности равен ", а

кон

Листинг 3

алг Последовательность Фибоначчи

нач цел п, очер, пред, предпред, 1

вывод нс, "Задайте номер искомого члена последовательности"

ввод п

пред := 1

пред пред := 1

нц для 1 от 1 до п-2

очер := пред + предпред

предпред := пред

пред := очер

вывод нс, "Искомый член последовательности равен ", очер

кон

очер - очередной рассчитываемый элемент последовательности;

пред - элемент, предшествующий очередному элементу;

предпред - элемент, предшествующий элементу пред.

Сначала имеем: пред = 1; предпред = 1.

Затем рассчитываем очередной (третий) элемент:

...Лребуе^ся б-ичисмм&ь общее

п плрллл&льНл меуиН&ЯЯих

мьммгек...

Рисунок 1.

след = пред + предпред,

после чего «готовимся» к расчету следующего элемента:

предпред = пред пред = след

и определяем его:

очер = пред + предпред

и т. д.

Ясно, что для определения п-го члена последовательности необходимо провести (п - 2) повторений описанных действий (см. листинг 3).

В заключение рассмотрим интересный пример использования рекуррентных соотношений [1]. Пусть, например, требуется вычислить общее сопротивление гирлянды из п параллельно соединенных лампочек (каждая с сопротивлением ,2), если соединительные провода имеют сопротивление ,1 каждый (рисунок 1).

Гирлянда с одной лампочкой выглядит так, как показано на рисунке 2, а ее сопротивление (элементы соединены последовательно) равно: а1 = 2,1 + ,2.

Гирлянду с двумя лампочками (рисунок 3) можно представить по-другому (ри-

Рисунок 2.

м Я! г т г

о о

Рисунок 3. Рисунок 4. Рисунок 5.

сунок 4), здесь Г1 _ гирлянда с одной лампочкой.

Тогда общее сопротивление схемы на рисунке 4 можно определить следующим образом. На участке СЮ параллельно соединены сопротивления и а1, где а1 _ сопротивление гирлянды с одной лампочкой, то есть общее сопротивление участка СЮ равно:

1

а1 • Л2

1 1 а, + Я2

— + — 1

Л2 а1

Так как участки АС, СЮ и ЮВ соединены последовательно, то общее сопротивление схемы с двумя лампочками равно:

а2 = Я1 + Я1 + асю = 2Я1 + —1-

а1 + Я2

Рассуждая аналогично, схему с г лампочками можно рассматривать в виде рисунка 5, здесь аг _р здесь аг _ сопротивление гирлянды с (г _ 1) лампочками, а общее сопротивление схемы на рисунке 5 определить как:

аг = 2 Я1 +

аг-1 •

аг-1 + Я2

Таким образом, мы получили рекуррентное соотношение для расчета сопротивления исходной схемы. Составление программы для определения общего сопротивления схемы при любом количестве лампочек предлагается для самостоятельной работы.

Другие задания для самостоятельной работы учащихся

1. В приведенной программе расчета п-го члена последовательности Фибоначчи последние вычисленные значения величин предпред и пред не используются, что не совсем рационально. Измените программу таким образом, чтобы эти значения ис-

пользовались для определения искомой величины.

2. Начав тренировки, лыжник в первый день пробежал 10 км. Каждый следующий день он увеличивал пробег на 10 % от пробега предыдущего дня. Определите, какой суммарный путь он пробежал за первые 7 дней тренировок.

3. В некотором году (назовем его условно первым) на участке в 100 гектар средняя урожайность ячменя составила 20 центнеров с гектара. После этого каждый год площадь участка увеличивалась на 5 %, а средняя урожайность на 2 %. Определите, какой урожай будет собран за первые шесть лет.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4. Последовательность чисел а0, ар а2, ... образуется по закону: а0 = 1; ак = ак _ 1 + 1/ к (к = 1, 2, ...). Дано натуральное число п (п > 2). Получите ап.

5. Последовательность чисел V 2, V 3, ... образуется по закону: v1 = v2 = 0; v3 = 1,5,

г +1

г2 +1

V -1 - V - 2V/ - з, г = 4, 5, ...

Дано натуральное число п (п > 4). Получите V .

...К.АК/М егф&ь аЯ ^об&флл

афбш 7 фЯей ЛреЯчроёск....

6. Составите программу вычисления суммы:

123

x

1 2 3

x x x

1 + - +-+ - + ... +

1/ 2! 3! n!

где к! = 1*2*3*... * к. (так называемый «факториал числа к»). При расчетах операцию возведения в степень и функцию для расчета факториала числа к не использовать.

7. Найдите 10-й член последовательности, начинающейся с числа 2,5, в которой каждый следующий член равен сумме обратных величин всех предыдущих.

8. При положительном а рекуррентное соотношение

хг _ а X; +

2 2х;_1

можно использовать для вычисления 4а так как элементы последовательности, по-

строенной на таком соотношении, при увеличении г очень быстро приближаются к л/а . Вот, например, как выглядит начало этой последовательности при а = 2: х1 = 1; х2 = 1,5;

х3= 1,4166666667 х4= 1,4142156863 х5= 1,4142135624 х6= 1,4142155624

Составьте программу для определения л/а при заданном а и заданной погрешности е (расчеты должны выполняться, пока рассчитываемое значение не изменится на величину, меньшую е, - см. приведенные чуть выше значения членов последовательности). Примите х1 = 1 (вообще, это может быть любое число).

Литература

1. Кушниренко А.Г., Лебедев А.Г., Зайдельман Я.Н. Информатика 7-9: Учебник для общеобразовательных учебных заведений. М.: Дрофа, 2000.

© Наши авторы. 2006 Our authors, 2006.

Златополъский Дмитрий Михайлович,

кандидат технических наук, доцент Московского городского педагогического университета.

i Надоели баннеры? Вы всегда можете отключить рекламу.