Loading [MathJax]/jax/output/HTML-CSS/jax.js
Skip to main content
LibreTexts - Ukrayinska

5.1: Генеруючі функції

Template:MathjaxLevin

Існує надзвичайно потужний інструмент в дискретній математиці, який використовується для маніпулювання послідовностями, які називаються генеруючою функцією. Ідея така: замість нескінченної послідовності (наприклад:2,3,5,8,12,) ми дивимося на єдину функцію, яка кодує послідовність. Але не функція, яка дає термінn th як вихід. Замість цього функція, чиї ряди степенів (як з числення) «відображає» терміни послідовності. Так, наприклад, ми б дивитися на потужність ряд,2+3x+5x2+8x3+12x4+ який відображає послідовність2,3,5,8,12, як коефіцієнти.

Нескінченний енергетичний ряд - це просто нескінченна сума термінів форми,cn якаcnxn була деякою постійною. Таким чином, ми могли б написати силовий ряд, як це:

\ begin {рівняння*}\ sum_ {k=0} ^\ infty c_k x^k.\ end {рівняння*}

або розширено так

\ begin {рівняння*} c_0 + c_1x + c_2x^2 + c_3x^3 + c_4x^4 + c_5x^5 +\ cdots. \ end {рівняння*}

При розгляді в контексті генеруючих функцій ми називаємо такий енергетичний ряд генеруючим рядом. Генеруючий ряд генерує послідовність

\ begin {рівняння*} c_0, c_1, c_2, c_3, c_4, c_5,\ ldots. \ end {рівняння*}

Іншими словами, послідовність, породжена генеруючим рядом, - це просто послідовність коефіцієнтів нескінченного многочлена.

Приклад5.1.1

Яку послідовність представляє генерує ряд3+8x2+x3+x57+100x6+?

Рішення

Ми просто зачитуємо коефіцієнти кожногоxn term. So a0=3 since the coefficient of x0 is 3 (x0=1 so this is the constant term). What is a1? It is NOT 8, since 8 is the coefficient of x2, so 8 is the term a2 of the sequence. To find a1 we need to look for the coefficient of x1 which in this case is 0. So a1=0. Continuing, we have a2=8, a3=1, a4=0, and a5=17. So we have the sequence

\ begin {рівняння*} 3, 0, 8, 1,\ frac {1} {7}, 100,\ ldots\ end {рівняння*}

Зверніть увагу, що при обговоренні генеруючих функцій ми завжди починаємо нашу послідовність зa0.

Тепер ви можете дуже природно запитати, чому ми будемо робити таку річ. Однією з причин є те, що кодування послідовності з силовим рядом допомагає нам відстежувати, який термін є який у послідовності. Наприклад, якщо ми пишемо послідовність,1,3,4,6,9,,24,41, неможливо визначити, який термін24 є (навіть якщо ми домовилися, що перший член повинен бутиa0). Однак, якби ми написали генеруючий ряд замість цього, ми б мали1+3x+4x2+6x3+9x4++24x17+41x18+. Тепер зрозуміло, що 24 - це 17-й член послідовності (тобтоa17=24). Звичайно, щоб отримати цю вигоду, ми могли б відобразити нашу послідовність будь-якою кількістю способів, можливо,103142639424174118, але ми цього не робимо. Причина полягає в тому, що генеруючий ряд виглядає як звичайний силовий ряд (хоча ми інтерпретуємо це по-різному), тому ми можемо робити з ним речі, які ми зазвичай робимо з силовими рядами, такими як записати, до чого він сходиться.

Наприклад, з обчислення ми знаємо, що ряд1+x+x22+x36+x424++xnn!+ степенів сходиться до функціїex. Таким чином, ми можемо використовуватиex як спосіб говорити про послідовність коефіцієнтів рядів потужності дляex. Коли ми записуємо приємну компактну функцію, яка має нескінченний ряд потужності, який ми розглядаємо як генеруючий ряд, то ми називаємо цю функцію генеруючою функцією. У цьому прикладі ми б сказали

\ begin {рівняння*} 1, 1,\ frac {1} {2},\ frac {1} {6},\ frac {1} {24},\ ldots,\ frac {1} {n!} ,\ ldots\ mbox {має генеруючу функцію} e^x\ end {рівняння*}

Побудова генеруючих функцій

exПриклад дуже конкретний. У нас досить дивна послідовність, і єдина причина, по якій ми знаємо її генеруючу функцію, полягає в тому, що ми знаємо серію Тейлора дляex. Нашої мети зараз є зібрати деякі інструменти для побудови генеруючої функції певної заданої послідовності.

Давайте подивимося, що генерують функції для деяких дуже простих послідовностей. Найпростіший з усіх: 1, 1, 1, 1, 1,... Як виглядає генеруюча серія? Це просто1+x+x2+x3+x4+. Тепер, чи можемо ми знайти замкнуту формулу для цього силового ряду? Так! Ця конкретна серія насправді просто геометрична серія із загальним співвідношеннямx. Отже, якщо ми використовуємо нашу техніку «множення, зсув та віднімання» з розділу 2.2, ми маємо

\ begin {вирівнювати*} S\ ампер = 1 + x + x^2 + x ^ 3 +\ cdots\\ підкреслення {- xS}\ ампер\ підкреслення {\,\, = ~~~~~~~~x^2 + x^3 + x ^ 4 +\ cdots}\\ (1-х) S\ amp = 1\ кінець {вирівнювати*}

Тому ми бачимо, що

\ begin {рівняння*} 1 + х + x^2 + x^3\ cdots =\ dfrac {1} {1-x}\ end {рівняння*}

Ви можете згадати з обчислення, що це вірно лише на інтервалі збіжності для рядів степенів, у цьому випадку|x|<1., коли Це вірно для нас, але нам все одно. Ми ніколи не збираємося нічого підключати до тих пір,x, поки існує якась цінність,x для якої генеруюча функція та генеруюча серія погоджуються, ми щасливі. І в цьому випадку ми щасливі.

1,1,1,

Генеруюча функція1,1,1,1,1,1, для11x

Давайте використаємо цю основну генеруючу функцію, щоб знайти генеруючі функції для більшої кількості послідовностей. Що робити, якщо миx. замінимоx на Ми отримаємо

\ begin {рівняння*}\ frac {1} {1+x} = 1 - x + x^2 - x^3 +\ cdots\ mbox {який генерує} 1, -1, -1,\ ldots\ end {рівняння*}

Якщо ми замінимоx на,3x ми отримаємо

\ begin {рівняння*}\ frac {1} {1-3x} = 1 + 3x + 9x^2 + 27x^3 +\ cdots\ mbox {який генерує} 1, 3, 9, 27,\ ldots\ end {рівняння*}

Замінившиx в,11x ми можемо отримати генеруючі функції для різних послідовностей, але не для всіх. Наприклад, ви не можете підключити нічого,x щоб отримати генеруючу функцію для2,2,2,2,. Однак ми ще не загубилися. Зверніть увагу, що кожен член2,2,2,2, є результатом множення членів1,1,1,1, на константу 2. Так помножте генеруючу функцію на 2, а також.

\ begin {рівняння*}\ frac {2} {1-x} = 2 + 2x + 2x^2 + 2x^3 +\ cdots\ mbox {який генерує} 2, 2, 2, 2,\ ldots\ end {рівняння*}

Аналогічно, щоб знайти генеруючу функцію для послідовності3,9,27,81,, відзначимо, що ця послідовність є результатом множення кожного члена1,3,9,27, на 3. Оскільки у нас є генеруюча функція для1,3,9,27, ми можемо сказати

\ begin {рівняння*}\ frac {3} {1-3x} = 3\ cdot 1 + 3\ cdot 3x + 3\ cdot 9x^2 + 3\ cdot 27x^3 +\ cdots\ mbox {який генерує} 3, 9, 27, 81,\ ldots\ кінець {рівняння*}

Як щодо послідовності2,4,10,28,82,? Тут терміни завжди на 1 більше, ніж сили 3. Тобто ми додали послідовності1,1,1,1, та1,3,9,27, термін за терміном. Тому ми можемо отримати генеруючу функцію, додавши відповідні генеруючі функції:

\ почати {вирівнювати*} 2 + 4x + 10x^2 + 28x^3 +\ cdots\ amp = (1 + 1) + (1 + 3) х + (1 + 9) x^2 + (1 + 27) x^3 +\ cdots\\ ампер = 1 + x + x ^ 2 + x ^ 3 +\ cdots + 1 + 3x 9x^2 + 27x^2 + ^3 +\ cdots\\ амп =\ гідророзриву {1} {1-x} +\ гідророзриву {1} {1-3x}\ кінець {align*}

Веселощі не зупиняються на досягнутому: якщо ми замінимоx в нашій оригінальній генеруючій функції,x2 ми отримаємо

\ begin {рівняння*}\ frac {1} {1-x^2} = 1 + x^2 + x^4 + x^6\ cdots\ mbox {який генерує} 1, 0, 1, 0,\ ldots. \ end {рівняння*}

Як ми могли отримати0,1,0,1,0,1,? Start з попередньою послідовністю і зрушити її на 1. Але як ви це робите? Щоб побачити, як працює зсув, давайте спочатку спробуємо отримати генеруючу функцію для послідовності0,1,3,9,27,. Ми знаємо, що113x=1+3x+9x2+27x3+. Щоб отримати нуль спереду, нам потрібен генеруючий ряд, щоб виглядатиx+3x2+9x3+27x4+ (так що немає постійного терміну). Множення наx має такий ефект. Таким чином, генеруюча функція для0,1,3,9,27, єx13x. Це також буде працювати, щоб отримати генеруючу функцію для0,1,0,1,0,1,:

\ begin {рівняння*}\ frac {x} {1-x^2} = x + x^3 + x^5 +\ cdots\ mbox {який генерує} 0, 1, 0, 1, 0, 1\ ldots\ end {рівняння*}

Що робити, якщо ми додамо послідовності1,0,1,0,1,0, і0,1,0,1,0,1, термін за терміном? Ми повинні отримати1,1,1,1,1,1. Що відбувається, коли ми додаємо генеруючі функції? Це працює (спробуйте)!

\ begin {рівняння*}\ розрив {1} {1-x^2} +\ розрив {x} {1-x^2} =\ гідророзриву {1} {1-x}. \ end {рівняння*}

Ось підлий: що станеться, якщо взяти похідну від11x? Ми1(1x)2. отримуємо З іншого боку, якщо ми розмежовуємо термін за терміном у ряді влади, ми отримаємо,(1+x+x2+x3+)=1+2x+3x2+4x3+ який генерує ряд для1,2,3,4,. Це говорить

1,2,3,

Генеруюча функція1,2,3,4,5, для\d1(1x)2.

Візьміть другу похідну:2(1x)3=2+6x+12x2+20x3+. Так1(1x)3=1+3x+6x2+10x3+ це генеруюча функція для трикутних чисел,1,3,6,10 (хоча тут ми маємоa0=1 покиT0=0 зазвичай).

Різниця

Ми бачили, як знайти генеруючі функції за11x допомогою множення (на константу або наx), підстановки, додавання та диференціації. Щоб використовувати кожен з них, ви повинні помітити спосіб1,1,1,1,1 перетворення послідовності в потрібну послідовність. Це не завжди легко. Це також насправді не так, як ми аналізували послідовності. Одна річ, яку ми часто розглядали, - це послідовність відмінностей між термінами послідовності. Це виявиться корисним у пошуку генеруючих функцій, а також. Послідовність відмінностей часто простіше, ніж вихідна послідовність. Так що, якщо ми знаємо генеруючу функцію для відмінностей, ми хотіли б використовувати це, щоб знайти генеруючу функцію для вихідної послідовності.

Наприклад, розглянемо послідовність2,4,10,28,82,. Як ми могли б перейти до послідовності перших відмінностей:2,6,18,54,? Ми хочемо відняти 2 з 4, 4 з 10, 10 з 28, і так далі. Так що, якщо ми віднімаємо (термін за терміном) послідовність0,2,4,10,28, з2,4,10,28, ми будемо встановлені. Ми можемо отримати генеруючу функцію для0,2,4,10,28, від генеруючої функції for2,4,10,28 шляхом множення наx. UseA для представлення генеруючої функції для2,4,10,28,82, Тоді:

\ почати {вирівнювати*} A\ ампер = 2 + 4x+ 10x^2 +82x^3 + 82x^4 +\ cdots\\ підкреслення {-xA}\ ампер\ підкреслення {\,\, = 0 + 2x + 4x^2 + 10x^3 + 82x^5 +\ cdots}\\ (1-х) A\ amp = 2 + 2x + 6x^2 + 18x^3+ 54x^4 +\ cdots\ кінець {вирівнювати*}

Хоча ми не отримуємо точно послідовність відмінностей, ми отримуємо щось близько. У цьому конкретному випадку ми вже знаємо генеруючу функціюA (ми знайшли її в попередньому розділі), але більшу частину часу ми будемо використовувати цю техніку різниці, щоб знайти,A: чи є у нас генеруюча функція для послідовності відмінностей, ми можемо потім вирішити дляA.

Приклад5.1.2

Знайдіть генеруючу функцію для1,3,5,7,9,.

Рішення

Зверніть увагу, що послідовність відмінностей постійна. Ми знаємо, як знайти генеруючу функцію для будь-якої постійної послідовності. Так позначають генеруючу функцію для1,3,5,7,9, by A. We have

\ почати {вирівнювати*} A\ ампер = 1 + 3x + 5x^2 + 7x^3 + 9x^4 +\ cdots\\ підкреслення {-xA}\ ампер\ підкреслення {\,\, = 0 + х + 3х^2 + 5x^4+ 9x^5 +\ cdots}\\ (1-х) A\ amp = 1 + 2x + 2x + 2x^2 + 2x^3 + 2x^4 +\ cdots\ кінець {вирівнювати*}

Ми знаємо, що2x+2x2+2x3+2x4+=2x1x. Thus

\ begin {рівняння*} (1-х) A = 1 +\ frac {2x} {1-х}. \ end {рівняння*}

Тепер вирішуйте дляA:

\ begin {рівняння*} A =\ гідророзриву {1} {1-x} +\ гідророзриву {2x} {(1-х) ^2} =\ гідророзриву {1+х} {(1-х) ^2}. \ end {рівняння*}

Чи має це сенс? Перш ніж ми спростили два дроби в один, ми додавали генеруючу функцію для послідовності.1,1,1,1, to the generating function for the sequence 0,2,4,6,8,10, (remember 1(1x)2 generates 1,2,3,4,5,, multiplying by 2x shifts it over, putting the zero out front, and doubles each term). If we add these term by term, we get the correct sequence 1,3,5,7,9,.

Тепер, коли у нас є генеруюча функція для непарних чисел, ми можемо використовувати це, щоб знайти генеруючу функцію для квадратів:

Приклад5.1.3

Знаходимо генеруючу функцію для1,4,9,16,. Note, яку ми беремо1=a0.

Рішення

Знову викликаємо генеруючу функцію для послідовностіA. Using differencing:

\ почати {вирівнювати*} A\ ампер = 1 + 4x+ 9x^2 + 16x^3 +\ cdots\\ підкреслення {- xA}\ ампер\ підкреслення {\,\, = 0 + х + 4x^2 + 9x^3 + 16x^4 +\ cdots}\\ (1-х) A\ amp = 1 + 3x + 5x^2 + 7x^3 +\ cdots\ кінець {вирівнювати*}

Так як1+3x+5x2+7x3+=\d1+x(1x)2 we have A=\d1+x(1x)3.

У кожному з прикладів вище ми знайшли різницю між послідовними термінами, які дали нам послідовність відмінностей, для яких ми знали генеруючу функцію. Ми можемо узагальнити це до більш складних зв'язків між термінами послідовності. Наприклад, якщо ми знаємо, що послідовність задовольняє відношення повторенняan=3an12an2? Іншими словами, якщо взяти член послідовності і відняти 3 рази попередній член, а потім додати 2 рази термін перед цим, ми отримаємо 0 (так якan3an1+2an2=0). Це буде триматися для всіх, крім перших двох членів послідовності. Таким чином, після перших двох членів, послідовність результатів цих розрахунків буде послідовність 0, для яких ми точно знаємо генеруючу функцію.

Приклад5.1.4

Послідовність1,3,7,15,31,63, задовольняє відношення повторенняan=3an12an2. Знайти генеруючу функцію для послідовності.

Рішення

Виклик генеруючої функції для послідовностіA. We have

\ почати {вирівнювати*} А\ ампер = 1 + 3х+ 7х^2 + 15x^3 + 31x^4 +\ cdots + a_nx^n +\ cdots\\ cdots\\ -3xa\ ампер = 0 - 3x - 9x^2 - 21x^3 -\ cdots - 3a_ {n-1} x^n -\ cdots\\ підкреслення +~~~2x^2A_ {~} ^ {~^ {~}}}\ ампер\ підкреслення {\,\, = 0 + 0x + 2x^2 + 6x^3 + 14x^4 +\ cdots + 2a_ {n-2} х ^ n +\ cdots}\ (1-3x+2x^2) A\ підсилювач = 1\ кінець {вирівнювати*}

Ми помножилиA by 3x which shifts every term over one spot and multiplies them by 3. On the third line, we multiplied A by 2x2, which shifted every term over two spots and multiplied them by 2. When we add up the corresponding terms, we are taking each term, subtracting 3 times the previous term, and adding 2 times the term before that. This will happen for each term after a1 because an3an1+2an2=0. In general, we might have two terms from the beginning of the generating series, although in this case the second term happens to be 0 as well.

Тепер нам просто потрібно вирішити дляA:

\ begin {рівняння*} A =\ frac {1} {1 - 3x + 2x^2}. \ end {рівняння*}

Множення та часткові суми

Що відбувається з послідовностями при множенні двох генеруючих функцій? Давайте подивимося:A=a0+a1x+a2x2+ іB=b0+b1x+b2x2+. щоб помножитиA іB, нам потрібно зробити багато розподілу (нескінченне FOIL?) але майте на увазі, що ми будемо групувати як терміни і потрібно лише записати перші кілька термінів, щоб побачити шаблон. Постійний термін -a0b0. Коефіцієнтx єa0b1+a1b0. І так далі. Отримуємо:

\ почати {рівняння*} AB = a_0b_0 + (a_0b_1 + a_1b_0) х + (a_0b_2 + a_1b_1 + a_2b_0) x^2 + (a_0b_3 + a_1b_2 + a_2b_1 + a_3b_0) x^3 +\ cdots\ кінець {рівняння*}

Приклад5.1.5

«Помножити» послідовність1,2,3,4, на послідовність1,2,4,8,16,.

Рішення

Новий постійний термін - це просто11. The next term will be 12+21=4. The next term: 14+22+31=11. One more: 18+24+32+41=28. The resulting sequence is

\ begin {рівняння*} 1, 4, 11, 28, 57,\ ldots\ end {рівняння*}

Так як генеруюча функція для1,2,3,4, is 1(1x)2 and the generating function for 1,2,4,8,16, is 112x, we have that the generating function for 1,4,11,28,57, is 1(1x)2(12x)

Розглянемо особливий випадок, коли ви множите послідовність на1,1,1,. Наприклад,1,1,1,1,2,3,4,5. помножте на Перший11=1. член -12+11=3. Тоді13+12+11=6. Наступний член буде 10. Отримуємо трикутні числа. Точніше, ми отримуємо послідовність часткових сум з1,2,3,4,5,. точки зору генеруючих функцій, ми беремо11x (генеруючи1,1,1,1,1) і множимо її на1(1x)2 (генеруючи1,2,3,4,5,), і це дає1(1x)3. Це не повинно бути несподіванкою, оскільки ми знайшли ту саму генеруючу функцію для трикутні числа раніше.

Справа в тому, що якщо вам потрібно знайти генеруючу функцію для суми першихn членів певної послідовності, і ви знаєте генеруючу функцію для цієї послідовності, ви можете помножити її на11x. Щоб повернутися від послідовності часткових сум до вихідної послідовності, ви дивитеся на послідовність відмінностей. Коли ви отримуєте послідовність відмінностей, ви в кінцевому підсумку множите на1x, або еквівалентно, діливши на11x. Множення на11x дає часткові суми, діливши на11x дає відмінності.

Розв'язування рекуррентних відносин з генеруючими функціями

Ми робимо висновок на прикладі однієї з багатьох причин вивчення генеруючих функцій корисно. Ми можемо використовувати генеруючі функції для вирішення відносин повторення.

Приклад5.1.6

Вирішити зв'язок повторенняan=3an12an2 з початковими умовамиa0=1 таa1=3.

Рішення

Ми бачили в прикладі вище, що це повторення відношення дає послідовність1,3,7,15,31,63, which has generating function 113x+2x2. We did this by calling the generating function A and then computing A3xA+2x2A which was just 1, since every other term canceled out.

Але як нам допомагає знання генеруючої функції? Спочатку розбийте генеруючу функцію на дві простіші. Для цього ми можемо використовувати розкладання часткових дробів. Почніть з факторингу знаменника:

\ begin {рівняння*}\ розрив {1} {1-3x + 2x^2} =\ гідророзриву {1} {(1-х) (1-2x)}. \ end {рівняння*}

Розкладання часткового дробу говорить нам, що ми можемо записати цю фракцію як суму двох дробів (розкладаємо заданий дріб):

\ begin {рівняння*}\ розрив {1} {(1-x) (1-2x)} =\ frac {a} {1-x} +\ frac {b} {1-2x}\ text {~~ для деяких констант} a\ text {і} b.\ end {рівняння*}

Щоб знайтиa and b we add the two decomposed fractions using a common denominator. This gives

\ begin {рівняння*}\ розрив {1} {(1-x) (1-2x)} =\ розрив {a (1-2x) + b (1-x)} {(1-х) (1-х) (1-2x)}. \ end {рівняння*}

так

\ begin {рівняння*} 1 = a (1-2x) + b (1-х). \ end {рівняння*}

Це повинно бути вірно для всіх значеньx. If x=1, then the equation becomes 1=a so a=1. When x=12 we get 1=b/2 so b=2. This tells us that we can decompose the fraction like this:

\ begin {рівняння*}\ гідророзриву {1} {(1-x) (1-x) (1-2x)}} =\ розрив {-1} {1-x} +\ гідророзриву {2} {1-2x}. \ end {рівняння*}

На цьому розкладання часткового дробу завершено. Зверніть увагу, що ці два дроби генерують функції, які ми знаємо. Насправді ми повинні мати можливість розширити кожен з них.

\ begin {рівняння*}\ frac {-1} {1-x} = -1 - x - x^2 -x^3 - x^4 -\ cdots\ mbox {який генерує} -1, -1, -1, -1,\ ldots. \ end {рівняння*}\ почати {рівняння*}\ frac {2} {1-2x} = 2+ 4x + 8x^2 + 16x^3 + 32x^4 +\ cdots\ mbox {який генерує} 2, 4, 8, 16, 32,\ ldots. \ end {рівняння*}

Ми можемо дати замкнуту формулу дляnth term of each of these sequences. The first is just an=1. The second is an=2n+1. The sequence we are interested in is just the sum of these, so the solution to the recurrence relation is

\ begin {рівняння*} a_n = 2^ {n+1} - 1\ end {рівняння*}

Тепер ми можемо додати генеруючі функції до нашого списку методів для вирішення рекуррентних відносин.