Files
blog/maths/gen_fun/index.html
2025-06-03 08:39:37 +00:00

961 lines
37 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://rustbas.github.io/blog/maths/gen_fun/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.6.14">
<title>Немного про производящие функции - Очередные записки очередного гика</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.342714a4.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CJetBrains+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"JetBrains Mono"}</style>
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#_1" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="Очередные записки очередного гика" class="md-header__button md-logo" aria-label="Очередные записки очередного гика" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
Очередные записки очередного гика
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Немного про производящие функции
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="green" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="teal" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/rustbas/blog" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11m-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16m133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61M512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="Очередные записки очередного гика" class="md-nav__button md-logo" aria-label="Очередные записки очередного гика" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg>
</a>
Очередные записки очередного гика
</label>
<div class="md-nav__source">
<a href="https://github.com/rustbas/blog" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11m-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16m133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61M512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
Математика
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../linux/" class="md-nav__link">
<span class="md-ellipsis">
Linux
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../common/" class="md-nav__link">
<span class="md-ellipsis">
Общее
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
<span class="md-ellipsis">
Мотивация
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
<span class="md-ellipsis">
Ликбез
</span>
</a>
<nav class="md-nav" aria-label="Ликбез">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
<span class="md-ellipsis">
Кратко о производящей функции последовательности
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
<span class="md-ellipsis">
Кратко о ряде Тейлора
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
<span class="md-ellipsis">
Кратко о математической индукции
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_7" class="md-nav__link">
<span class="md-ellipsis">
Получение ряда в замкнутом виде
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_8" class="md-nav__link">
<span class="md-ellipsis">
Разложение дроби на элементарные дроби
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#_9" class="md-nav__link">
<span class="md-ellipsis">
Доказательство по индукции
</span>
</a>
<nav class="md-nav" aria-label="Доказательство по индукции">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_10" class="md-nav__link">
<span class="md-ellipsis">
База индукции
</span>
</a>
<nav class="md-nav" aria-label="База индукции">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#n-0" class="md-nav__link">
<span class="md-ellipsis">
\(n = 0\)
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#n-1" class="md-nav__link">
<span class="md-ellipsis">
\(n = 1\)
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_11" class="md-nav__link">
<span class="md-ellipsis">
Переход индукции
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_12" class="md-nav__link">
<span class="md-ellipsis">
Выводы
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1 id="_1">Немного про производящие функции</h1>
<h2 id="_2">Мотивация</h2>
<p>Идея данной публикации родилась в процессе чтения статьи на <a href="https://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D1.80.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B9_.D0.B7.D0.B0.D0.B4.D0.B0.D1.87_.D0.BC.D0.B5.D1.82.D0.BE.D0.B4.D0.BE.D0.BC_.D0.BF.D1.80.D0.BE.D0.B8.D0.B7.D0.B2.D0.BE.D0.B4.D1.8F.D1.89.D0.B8.D1.85_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D0.B8.D0.B9">викиконспектах</a> о производящих рядах. Мне показалось очень интересным, что существует способ решения рекуррентных уравнений с помощью бесконечных сумм.</p>
<p>Здесь мы собираемся рассмотреть что такое производящая функция, разложение в ряд Тейлора, а также затронем математическую индукцию.</p>
<h2 id="_3">Ликбез</h2>
<p>Для начала, по моему мнению, нужно кратко описать сущности, которые появляются в статье. </p>
<h3 id="_4">Кратко о производящей функции последовательности</h3>
<p><em><strong>Производя́щая фу́нкция после́довательности</strong> — алгебраическое понятие, которое позволяет работать с разными комбинаторными объектами аналитическими методами. Они дают гибкий способ описывать соотношения в комбинаторике, а иногда помогают вывести явные формулы для числа комбинаторных объектов определённого типа.</em> (<a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D1%8F%D1%89%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8">Википедия</a>)</p>
<p>Для последовательности <span class="arithmatex">\(\{a_n\}\)</span> производящим рядом называется бесконечная сумма:</p>
<div class="arithmatex">\[\Large{
G(z) = \sum_{n=0}^\infty a_nz^n.
}\]</div>
<p>В данной статье описывается, как использовать производящий ряд последовательности для решения рекуррентных уравнений вида:</p>
<div class="arithmatex">\[\Large{
a_n = f(a_{n-1}, \dots, a_0).
}\]</div>
<h3 id="_5">Кратко о ряде Тейлора</h3>
<p><em><strong>Ряд Те́йлора</strong> — разложение функции в бесконечную сумму степенных функций.</em> (<a href="https://ru.wikipedia.org/wiki/%D0%A0%D1%8F%D0%B4_%D0%A2%D0%B5%D0%B9%D0%BB%D0%BE%D1%80%D0%B0">Википедия</a>)</p>
<p>Для бесконечно дифференцируемой функции <span class="arithmatex">\(f(x)\)</span> в окрестности точки <span class="arithmatex">\(a\)</span> рядом Тейлора называется ряд:</p>
<div class="arithmatex">\[\Large{
f(x) = \sum_{n=0}^\infty \frac{f^{(n)}(a)}{n!}(x-a)^n.
}\]</div>
<p>В нашем случае этот ряд будет полезен тем, что когда мы вычислим производящую функцию последовательности в виде дроби, мы сможем разложить её в ряд и найти общую формулу для элементов последовательности. </p>
<h3 id="_6">Кратко о математической индукции</h3>
<p><em><strong>Математическая индукция</strong> — метод математического
доказательства, который используется, чтобы доказать
истинность некоторого утверждения для всех натуральных
чисел. Для этого сначала проверяется истинность утверждения
с номером <span class="arithmatex">\(1\)</span> — база (базис) индукции, а затем
доказывается, что если верно утверждение с номером <span class="arithmatex">\(n\)</span>, то
верно и следующее утверждение с номером <span class="arithmatex">\(n+1\)</span> — шаг
индукции, или индукционный переход.</em>
(<a href="https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%B8%D0%BD%D0%B4%D1%83%D0%BA%D1%86%D0%B8%D1%8F">Википедия</a>)</p>
<p>Нам понадобится этот метод для того, чтобы доказать верность формулы, которую мы получим. Применяя к нашему случаю, можно сформулировать идею доказательства так:</p>
<ol>
<li>Нужно доказать <strong>базу индукции</strong>. То есть, что формула верна для <span class="arithmatex">\(a_0\)</span> и <span class="arithmatex">\(a_1\)</span>.</li>
<li>Нужно доказать <strong>переход индукции</strong>. В нашем случае, это означает, что нужно проверить, что формула удовлетворяет изначальному рекуррентному уравнению. </li>
</ol>
<p>Идея доказательства состоит в том, что для любого <span class="arithmatex">\(k &gt; 1\)</span> наша формула будет верна, потому что она рекурсивно раскладывается с помощью <strong>верного перехода</strong> до <strong>верных базовых случаев</strong>.</p>
<h2 id="_7">Получение ряда в замкнутом виде</h2>
<p>Первое, что нам нужно сделать, это найти ряд в замкнутом виде, т. е. в виде дроби. </p>
<p>По определению:
$$
\Large{
G(z) = \sum_{n=0}^\infty a_n z^n
}
$$</p>
<p>Тогда можно вынести первые два члена, которые известны:</p>
<div class="arithmatex">\[\Large{
G(z) = a_0 + a_1 z + \sum_{n=2}^\infty a_n z^n
}\]</div>
<p>По формуле чисел Фибоначчи:</p>
<div class="arithmatex">\[
\Large{
G(z) = a_0 + a_1 z + \sum_{n=2}^\infty (a_{n-1} + a_{n-2}) z^n =
}
\]</div>
<div class="arithmatex">\[
\Large{
= a_0 + a_1 z + \sum_{n=2}^\infty a_{n-1} z^{n-1} z +
\sum_{n=2}^\infty a_{n-2} z^{n-2} z^2 =
}
\]</div>
<div class="arithmatex">\[
\Large{
= a_0 + a_1 z + z\underbrace{\sum_{n=2}^\infty a_{n-1} z^{n-1}}_{(I)} +
z^2 \underbrace{\sum_{n=2}^\infty a_{n-2} z^{n-2}}_{(II)}
}
\]</div>
<p>Рассмотрим <span class="arithmatex">\((I)\)</span> и <span class="arithmatex">\((II)\)</span>.</p>
<div class="arithmatex">\[\Large{
(I) = \sum_{n=2}^\infty a_{n-1} z^{n-1} = \left&lt;
\begin{split}
k = n-1\\
n = k+1
\end{split}
\right&gt; = \sum_{k=1}^\infty a_{k} z^{k} =
}\]</div>
<div class="arithmatex">\[\Large{
= \underbrace{a_0 + \sum_{k=1}^\infty a_{k} z^{k}}_
{\sum_{k=0}^\infty a_{k} z^{k}}
- a_0
= \sum_{k=0}^\infty a_{k} z^{k} - a_0 = G(z) - a_0
}\]</div>
<div class="arithmatex">\[\Large{
(II) = \sum_{n=2}^\infty a_{n-2} z^{n-2} =
\left&lt;
\begin{split}
k = n-2\\
n = k+2
\end{split}
\right&gt;
= \sum_{k=0}^\infty a_{k} z^{k} = G(z)
}\]</div>
<p>Здесь мы производим замену и приводим суммы к виду <span class="arithmatex">\(\sum\limits_{i=0}^\infty a_iz^i\)</span>. Очевидно, значение суммы не зависит от названия счетчика <span class="arithmatex">\(i\)</span>. </p>
<p>Таким образом:</p>
<div class="arithmatex">\[\Large{
G(z) = a_0 + a_1 z + z \left( G\left(z\right) - a_0 \right) + z^2G(z) =
}\]</div>
<div class="arithmatex">\[\Large{
= a_0 + a_1 z + z G(z) - a_0 z + z^2 G(z)
}\]</div>
<p>Перенесем все члены с <span class="arithmatex">\(G(z)\)</span> влево:</p>
<div class="arithmatex">\[\Large{
G(z) - zG(z) - z^2 G(z) = a_0 +a_1z-a_0z
}\]</div>
<div class="arithmatex">\[\Large{
G(z)\left(1 - z - z^2\right) = a_0 +a_1z-a_0z
}\]</div>
<p>В итоге, получаем:</p>
<div class="arithmatex">\[\Large{
G(z) = \frac{a_0 +a_1z-a_0z}{1 - z - z^2}
}\]</div>
<blockquote>
<p><em>Замечание</em>: получившееся дробь правильная. То есть степень многочлена в знаменателе больше, чем в числителе.</p>
</blockquote>
<h2 id="_8">Разложение дроби на элементарные дроби</h2>
<p>Мы получили ряд:</p>
<div class="arithmatex">\[\Large{
G(z) = \frac{a_0 + a_1 z - a_0 z}{1 - z - z^2}
}\]</div>
<p>Рассмотрим знаменатель:</p>
<div class="arithmatex">\[\Large{
-z^2 - z + 1 = 0
}\]</div>
<p>Разложим его на множители:</p>
<div class="arithmatex">\[\Large{
D = (-1)^2 - 4 \cdot 1 \cdot (-1) = 5
}\]</div>
<div class="arithmatex">\[\Large{
\begin{split}
z_{1} = - \frac{1 + \sqrt{5}}{2}\\
z_{2} = - \frac{1 - \sqrt{5}}{2}
\end{split}
}\]</div>
<p>Тогда:</p>
<div class="arithmatex">\[\Large{
-z^2 -z + 1 = -(z - z_1)(z - z_2)
}\]</div>
<p>Таким образом, мы можем записать:</p>
<div class="arithmatex">\[\Large{
G(z) = \frac{a_0 + a_1 z - a_0 z}{-(z-z_1)(z-z_2)} =
\frac{A}{z-z_1} + \frac{B}{z - z_2}
}\]</div>
<p>Домножим обе части на <span class="arithmatex">\(-(z-z_1)(z-z_2)\)</span>:</p>
<div class="arithmatex">\[\Large{
a_0 + a_1 z - a_0 z = -A(z-z_2) - B(z-z_1)
}\]</div>
<p>Раскроем скобки и сгруппируем относительно степеней <span class="arithmatex">\(z\)</span>:</p>
<div class="arithmatex">\[\Large{
a_0 + z(a_1 - a_0) = -Az + Az_2 - Bz + Bz_1 = (Az_2 + Bz_1) + z(-A -B)
}\]</div>
<p>Получаем систему линейных уравнений с двумя неизвестными:</p>
<div class="arithmatex">\[\Large{
\begin{cases}
&amp;Az_2 &amp;+ &amp;B z_1 &amp;= a_0\\
&amp;A &amp;+ &amp;B &amp;= a_0 - a_1
\end{cases}
}\]</div>
<p>Решение тривиально, опустим его. Приведу только ответ:</p>
<div class="arithmatex">\[\Large{
\begin{cases}
&amp;A = a_0 - a_1 - \frac{a_0 - a_0z_2 + a_1z_2}{z_1-z_2}\\
&amp;B = \frac{a_0 - a_0z_2 + a_1z_2}{z_1-z_2}
\end{cases}
}\]</div>
<p>Таким образом, получаем следующий результат:</p>
<div class="arithmatex">\[\Large{
\begin{cases}
z_{1} &amp;= - \frac{1 + \sqrt{5}}{2}\\
z_{2} &amp;= - \frac{1 - \sqrt{5}}{2}\\
A &amp;= a_0 - a_1 - \frac{a_0 - a_0z_2 + a_1z_2}{z_1-z_2}\\
B &amp;= \frac{a_0 - a_0z_2 + a_1z_2}{z_1-z_2}\\
G(z) &amp;= \frac{A}{z - z_1} + \frac{B}{z - z_2}
\end{cases}
}\]</div>
<h2 id="_9">Доказательство по индукции</h2>
<h3 id="_10">База индукции</h3>
<h4 id="n-0"><span class="arithmatex">\(n = 0\)</span></h4>
<p>Подставим <span class="arithmatex">\(n=0\)</span> в полученную формулу:</p>
<div class="arithmatex">\[\Large{
a_0 = \left(
-\frac{A}{z_1} - \frac{B}{z_2}
\right)
}\]</div>
<p>Рассмотрим <span class="arithmatex">\(A\)</span>:</p>
<div class="arithmatex">\[\Large{
A = \frac{a_0z_1-a_0z_2-a_1z_1+a_1z_2-a_0+a_0z_2-a_1z_2}{z_1-z_2} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{a_0z_1-\cancelto{0}{a_0z_2+a_0z_2}-a_1z_1+
\cancelto{0}{a_1z_2-a_1z_2}-a_0}{z_1-z_2} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{a_0z_1-a_1z_1-a_0}{z_1-z_2} = z_1\frac{a_0-a_1}{z_1-z_2}-\frac{a_0}{z_1-z_2}
}\]</div>
<p>Проведя аналогичные вычисления для <span class="arithmatex">\(B\)</span> получим:</p>
<div class="arithmatex">\[\Large{
B = \frac{a_0}{z_1-z_2} - z_2 \frac{a_0-a_1}{z_1-z_2}
}\]</div>
<p>Тогда:</p>
<div class="arithmatex">\[\Large{
a_0 = \frac{a_0}{z_1(z_1-z_2)} - \frac{z_1}{z_1}\frac{a_0-a_1}{z_1-z_2} +
}\]</div>
<div class="arithmatex">\[\Large{
+ \frac{z_2}{z_2}\frac{a_0-a_1}{z_1-z_2} - \frac{a_0}{z_1-z_2} =
}\]</div>
<div class="arithmatex">\[\Large{
=\frac{a_0}{z_1(z_1-z_2)} - \cancelto{0}{\frac{a_0-a_1}{z_1-z_2} +
\frac{a_0-a_1}{z_1-z_2}} - \frac{a_0}{z_2(z_1-z_2)} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{a_0z_2-a_0z_1}{z_1z_2(z_1-z_2)} =
-\frac{a_0(z_1-z_2)}{z_1z_2(z_1-z_2)} = -\frac{a_0}{z_1z_2}
}\]</div>
<p>Рассмотрим <span class="arithmatex">\(z_1z_2\)</span>:</p>
<div class="arithmatex">\[\Large{
z_1z_2 = \frac{(1+\sqrt{5})(1-\sqrt{5})}{2\cdot2} = \frac{1-5}{4} = -1
}\]</div>
<p>Подставив результат в наше выражение:</p>
<div class="arithmatex">\[\Large{
-\frac{a_0}{-1} = a_0, \text{ Q.E.D.}
}\]</div>
<h4 id="n-1"><span class="arithmatex">\(n = 1\)</span></h4>
<p>По нашей формуле:</p>
<div class="arithmatex">\[\Large{
a_1 =
-\left(
\frac{A}{z_1^2} +
\frac{B}{z_2^2}
\right) =
}\]</div>
<div class="arithmatex">\[\Large{
= -\left(
\frac{a_0-a_1}{z_1(z_1-z_2)} - \frac{a_0}{z_1(z_1-z_2)} +
\frac{a_0}{z_2(z_1-z_2)} - \frac{a_0-a_1}{z_2(z_1-z_2)}
\right) =
}\]</div>
<div class="arithmatex">\[\Large{
= -\left(
\frac{a_0-a_1}{z_1-z_2} \left(
\frac{1}{z_1} -
\frac{1}{z_2}
\right) +
\frac{a_0}{z_1-z_2} \left(
\frac{1}{z_1^2} -
\frac{1}{z_2^2}
\right)
\right) =
}\]</div>
<div class="arithmatex">\[\Large{
= -\left(
\frac{(a_0-a_1)(z_2-z_1)}{z_1z_2(z_1-z_2)} +
\frac{a_0(z_1^2-z_2^2)}{z_1^2z_2^2(z_1-z_2)} +
\right) =
}\]</div>
<p>Как мы доказали: </p>
<div class="arithmatex">\[\Large{
z_1z_2 = -1
}\]</div>
<p>Также рассмотрим <span class="arithmatex">\(z_1 + z_2\)</span>:</p>
<div class="arithmatex">\[\Large{
z_1+z_2 = \frac{-1-
\cancelto{0}{\sqrt{5}+\sqrt{5}}
-1}{2} =
\frac{-1-1}{2} =
-1
}\]</div>
<p>Подставив значения в выражение, получим:</p>
<div class="arithmatex">\[\Large{
= -\left(
a_0 - a_1 +
\frac{a_0(z_1-z_2)(z_1+z_2)}{(z_1-z_2)} +
\right) =
}\]</div>
<div class="arithmatex">\[\Large{
= -\left(
\cancelto{0}{a_0 - a_0}
-a_1
\right) = -(-a_1) = a_1, \text{ Q.E.D.}
}\]</div>
<h3 id="_11">Переход индукции</h3>
<p>По определению чисел Фибоначчи:</p>
<div class="arithmatex">\[\Large{
a_{n+2} = a_{n+1}+a_n
}\]</div>
<p>где:</p>
<div class="arithmatex">\[\Large{
a_n = \left(
-\frac{A}{z_1^{n+1}}-\frac{B}{z_2^{n+1}}
\right)
}\]</div>
<p>Подставим это в формулу:</p>
<div class="arithmatex">\[\Large{
a_{n+2} = a_{n+1}+a_n =
-\frac{A}{z_1^{n+1}}-\frac{B}{z_2^{n+1}}
-\frac{A}{z_1^{n+2}}-\frac{B}{z_2^{n+2}} =
}\]</div>
<p>Сгруппируем по <span class="arithmatex">\(A\)</span> и <span class="arithmatex">\(B\)</span>:</p>
<div class="arithmatex">\[\Large{
= -A \underbrace{\left(
\frac{1}{z_1^{n+1}}+
\frac{1}{z_1^{n+2}}
\right)}_{(I)}
%
-B \underbrace{\left(
\frac{1}{z_2^{n+1}}+
\frac{1}{z_2^{n+2}}
\right)}_{(II)}
}\]</div>
<p>Рассмотрим <span class="arithmatex">\((I)\)</span> и <span class="arithmatex">\((II)\)</span>:</p>
<div class="arithmatex">\[\Large{
(I) =
\frac{z_1+1}{z_1^{n+2}}
}\]</div>
<div class="arithmatex">\[\Large{
z_1 + 1 =
-\frac{1+\sqrt{5}}{2} + 1 =
\frac{-1-\sqrt{5}+2}{2} =
}\]</div>
<div class="arithmatex">\[\Large{
=
\frac{1-\sqrt{5}}{2} =
\frac{(1-\sqrt{5})(1+\sqrt{5})}{2(1+\sqrt{5})} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{1 - 5}{2(1+\sqrt{5})} =
\frac{-4}{2(1+\sqrt{5})} =
- \frac{2}{1+\sqrt{5}} = \frac{1}{z_1}
}\]</div>
<p>Таким образом:</p>
<div class="arithmatex">\[\Large{
(I) = \frac{1}{z_1^{n+3}}
}\]</div>
<p>Аналогично для <span class="arithmatex">\((II)\)</span>:</p>
<div class="arithmatex">\[\Large{
(II) =
\frac{z_2+1}{z_2^{n+2}}
}\]</div>
<div class="arithmatex">\[\Large{
z_2 + 1 =
-\frac{1-\sqrt{5}}{2} + 1 =
\frac{-1+\sqrt{5}+2}{2} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{-1+\sqrt{5}+2}{2} =
\frac{1+\sqrt{5}}{2} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{(1+\sqrt{5})(1-\sqrt{5})}{2(1-\sqrt{5})} =
\frac{1 - 5}{2(1-\sqrt{5})} =
}\]</div>
<div class="arithmatex">\[\Large{
= \frac{-4}{2(1-\sqrt{5})} =
-\frac{2}{1-\sqrt{5}} =
\frac{1}{z_2}
}\]</div>
<p>Подставив это в <span class="arithmatex">\((II)\)</span>:</p>
<div class="arithmatex">\[\Large{
(II) = \frac{1}{z_2^{n+3}}
}\]</div>
<p>Подставляя <span class="arithmatex">\((I)\)</span> и <span class="arithmatex">\((II)\)</span>:</p>
<div class="arithmatex">\[\Large{
-A \underbrace{\left(
\frac{1}{z_1^{n+1}}+
\frac{1}{z_1^{n+2}}
\right)}_{(I)}
-B \underbrace{\left(
\frac{1}{z_2^{n+1}}+
\frac{1}{z_2^{n+2}}
\right)}_{(II)} =
}\]</div>
<div class="arithmatex">\[\Large{
= -A \frac{1}{z_1^{n+3}}
-B \frac{1}{z_2^{n+3}} =
a_{n+2}, \text{ Q.E.D.}
}\]</div>
<h2 id="_12">Выводы</h2>
<p>В данной публикации были рассмотрены:</p>
<ul>
<li>получение производящей функции из рекуррентного уравнения;</li>
<li>разложение функции в ряд для нахождения <span class="arithmatex">\(n\)</span>-го члена последовательности;</li>
<li>доказана верность полученной формулы с помощью математической индукции.</li>
</ul>
<p>Очевидно, что полезность данной формулы в случае чисел Фибоначчи сомнительна. Но она может служить полезным примером того, как можно решить линейное рекуррентное уравнение. </p>
<aside class="md-source-file">
<span class="md-source-file__fact">
<span class="md-icon" title="Last update">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
</span>
2025-06-02
</span>
</aside>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<div class="md-progress" data-md-component="progress" role="progressbar"></div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.instant", "navigation.instant.progress", "header.autohide"], "search": "../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
<script src="../../assets/javascripts/bundle.13a4f30d.min.js"></script>
<script src="../../javascripts/mathjax.js"></script>
<script src="https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js"></script>
</body>
</html>