Универсального алгоритма для конечных сумм и рядов произвольного вида, как я понимаю, нет.
Это так странно, учитывая, что для неопределенных интегралов
он существует.
Между прочим, хорошая мысль! Действительно, почему бы не попробовать свести одну задачу к другой. Пусть у нас есть бесконечный ряд
, в общем случае не обязательно сходящийся. Требуется найти замкнутую формулу для суммы
.
Обозначим
. Здесь
можно назвать
-й частичной суммой ряда. Почему именно
-й? Потому что в данную сумму входит ровно
первых членов ряда. Я знаю, в большинстве случаев принято искать общую формулу вот для такой суммы:
, в которую входит
член, от
до
. В некоторых случаях это действительно удобно, и о них мы поговорим позже. Но на самом деле это не принципиально: если найдена замкнутая формула для
членов, нетрудно по ней построить аналогичную формулу и для
членов. И наоборот.
Далее нужно обратить внимание на следующее: очевидно, что
. Такое уравнение называется линейным неоднородным разностным уравнением первого порядка. Про такие уравнения известно, что в "однородном" случае (когда правая часть нулевая) они решаются легко и просто. Потому что существует метод их решения. Про неоднородные же уравнения можно сказать, что общее решение неоднородного уравнения получается как сумма общего решения однородного уравнения и какого-либо частного решения неоднородного уравнения. Однако же общих способов определения частного решения не существует (или не известно)! И это понятно: если бы они существовали, существовал бы и алгоритм по свертыванию частичных сумм в замкнутые формулы, типа того, который существует для интегралов. Тем не менее, для некоторых специальных видов функции в правой части уравнения существуют стандартные приемы решения этого уравнения. Например, всем известный телескопический ряд
, который легко "раскладывается" на две "половины":
. Здесь сразу же очевидно, что
. Т.е. решение сразу готово.
Кстати, глядя на разностное уравнение
можно подумать, что функция
может быть найдена с точностью до константы. Т.е. если
является решением уравнения, то и
также будет решением, где
- некоторая константа. На самом деле, это не так! Ведь мы уже договорились, что
означает сумму
первых членов ряда. В таком случае сумма нуля членов должна равняться нулю, т.е. должно быть верным
. Кажется, что не всегда это возможно, например, не в случае
. На самом деле, дело в том, что решение было найдено не верно! Правильное решение выглядит так:
.
Ок, если общих методов не существует, значит, остается только перебрать все возможные типы специальных функций и посмотреть, к какому из них относится наша функция. Затем применить к ней соответствующий прием и записать решение. Либо констатировать, что решения нет (в элементарных функциях), если ни к какому не относится. Наверняка, автоматизированные сервисы именно так и работают. Быть может, однако, здесь можно придумать что-то еще...
1)
Преобразование ФурьеНайдем преобразование Фурье для обеих частей нашего разностного уравнения!
Применяя преобразование, получим
.
Здесь большими буквами обозначены фурье-образы для функций, обозначенных соответствующими маленькими буквами.
Решаем это уравнение и получаем
.
Ну, и всё. Осталось сделать только обратное преобразование. Обратное преобразование - всегда некоторый интеграл. Если он выражается в элементарных функциях, значит, и функция
тоже в них выражается. Главное только при решении интеграла не получить исходный ряд. Как говорится, в расследовании главное не выйти на самого себя :)
Можно также оставить этот интеграл, как есть, считая его самого "замкнутой формой".
На самом деле, основная проблема здесь заключается в том, что для большинства функций преобразование Фурье попросту не существует. Оно существует только для нескольких специальных видов функций.
Можно ли то же самое проделать с уравнением, применяя преобразование Лапласа? Здесь я бы уже не был так уверен. Дело в том, что преобразование Лапласа применяется к функциям, равным нулю в отрицательной области. Казалось бы, это не имеет особого значения, поскольку сам интеграл преобразования берется в промежутке от нуля до бесконечности, так что какая разница? Дело в том, однако, что функция
получена сдвигом функции
на единицу влево. Значит, у нее появились ненулевые значения в отрицательной области. Если мы затем начнем ее интегрировать от нуля до бесконечности, не потеряем ли мы часть значений? Это ведь совсем не то же самое, что сдвинуть функцию
вправо. Потому что в этом случае ее значения на отрезке
станут равны нулю, и в этом случае действительно уже всё равно, от какого значения ее интегрировать: от 0 или от 1.
Короче, я бы в данном случае перестраховался и искал преобразование для какого-нибудь такого уравнения:
. Затем, если решение будет найдено, тогда функцию
можно было бы получить из тождества
.
2)
Интегральное уравнениеМожно действовать и более прямолинейно. Представим, что в уравнении
функция
является первообразной для некоторой функции
. В таком случае уравнение можно переписать так:
.
Получилось интегральное уравнение относительно неизвестной функции
с известной функцией
. Понятно, что если решение этого уравнения существует в элементарных функциях, то... а хотя, нет. Если
- элементарная функция, то ее первообразная - вовсе не обязательно. Тем не менее, ясно, что было бы полезно решить такое уравнение.
Для этого я перепишу уравнение так:
Здесь функция
равна единице, когда
, и нулю во всех остальных случаях.
Такая форма будет эквивалентной хотя бы для положительных значений
, а только такие, на самом деле, нас и интересуют. Можно получить и общую форму, верную и для отрицательных значений
. Для этого всего лишь нужно поменять нижний предел интеграла с нуля на минус бесконечность. Однако я все-таки остановлюсь на нуле, поскольку дальше этот интеграл будем рассматривать, как свертку двух функций, от которой можно взять преобразование Лапласа. А свертка для преобразования Лапласа формулируется именно в виде интеграла от 0 до бесконечности. Хотя, я не знаю, почему это именно так: на мой взгляд, если сформулировать ее от минус бесконечности до бесконечности, ошибки не произойдет - особенно если считать, что все функции равны нулю в отрицательной области (кроме, конечно,
). В случае с преобразованиями Фурье именно так и делают. Но да бог с ним: сформулирую, как принято, чтобы не отклоняться от правил и не наделать ошибок.
Полученное уравнение называют неоднородным уравнением Фредгольма первого рода, функция
называется ядром этого уравнения. Полученное уравнение можно решить с помощью преобразования Лапласа, если удастся свести функцию
к некоторой функции
одного аргумента, потому что в этом случае интеграл этого уравнения станет сверткой двух функций,
и
. А преобразование Лапласа от свертки равно произведению лаплас-образов каждой из двух функций
и
по отдельности. Поэтому именно это я дальше и попытаюсь сделать.
Функцию
лучше всего будет представить в виде разности двух единичных ступенчатых функций – функций Хевисайда
.
Во-первых, потому что нужна единая формула для
для всех возможных случаев (а не так, что здесь 1, там 0, и т.д.).
Во-вторых, потому что нужна функция одного аргумента, на место которого можно будет подставить
, чтобы получилась свертка.
В-третьих, потому что преобразование Лапласа хорошо берется от ступенчатой функции.
Итак,
, где
.
Тогда интегральное уравнение можно переписать так:
.
Дальше, как можно догадаться, берем преобразование Лапласа от обеих частей уравнения.
Обозначим:
- образ функции
- образ функции
- образ функции
При этом
.
Тогда получаем уравнение
, решая которое, получаем
.
На самом деле, этот же результат можно было получить намного короче, если вспомнить, что для случая, когда
является первообразной для
, верно
. А получать
мы уже умеем - это было описано в предыдущем пункте.
Самое интересное - что теперь со всем этим делать. Оригинал для
нам известен - это
. Остается получить оригинал для
, составить свертку для этих двух функций - это и будет "замкнутая форма" для
. Проблема в том, что оригинал для
(как и для
) не существует в элементарных функциях. Для
это будет, скорее всего, бесконечная сумма дельта-функций Дирака с разной степенью сдвига. Для
- что-нибудь и того хуже.
Но я предлагаю не заморачиваться слишком сильно, а сразу брать свою функцию
и идти с ней куда-нибудь на сервис
www.wolframalpha.com. Там применить к ней преобразование Лапласа (Laplace transform). Если получилось что-то осмысленное, умножить на
или на
, а затем применить обратное преобразование Лапласа (inverse Laplace transform). Если опять получился результат в элементарных функциях, значит, метод сработал.
3)
Метод операторовУравнение
можно переписать в виде
. Здесь
- оператор, означающий взятие от функции ее первой конечной разности:
. Этот оператор можно представить в виде
, где
- оператор сдвига (т.е. такой, что
),
- тождественный оператор, т.е. такой, что ставит функцию в соответствие самой себе:
.
Тогда наше уравнение принимает вид
. Решая его, получаем:
Получился совершенно точный, но при этом абсолютно бесполезный результат.
Подробнее об элементарной теории операторов можно почитать в книжке Грэхема и Кнута "Конкретная математика" (глава 5: специальные приемы).
4)
Производящая функция z-преобразованиеЭтот метод, пожалуй, единственный позволяет получить какие-то конкретные результаты на практике.
Пусть есть последовательность
, где
.
Производящей функцией такой последовательности называется функция
такая, что
.
При этом сама последовательность
может быть задана какой-нибудь функцией
:
.
Метод начинается с того, что надо как-то получить замкнутую форму для функции
. И здесь даже не надо строить иллюзий: никаких общих методов это сделать нет! Возможно, эта задача даже сложнее, чем получить замкнутую формулу для частичной суммы. За исключением некоторых случаев, например, для последовательности
получить замкнутую формулу в элементарных функциях в принципе невозможно (сейчас это будет доказано), тогда как производящей функцией этой последовательности является самая обычная экспонента.
Собственно, я даже догадываюсь, с чем связано это затруднение. Получение производящей функции по последовательности - это задача, обратная задаче разложения функции в ряд Тейлора. А обратные задачи в большинстве случаев решаются почему-то труднее прямых. Сравнить, например, интегрирование с дифференцированием. Существует общий метод получить производную ЛЮБОЙ элементарной функции. И даже иногда, если она не элементарная. Однако интеграл от элементарной функции - не всегда элементарная функция.
Кстати, не один я так считаю. Например, Иванов Б. Н. в своей книге "Дискретная математика. Алгоритмы и программы", в
главе 3 пишет, что как правило, поиск производящей функции по определению прямыми методами является сложной задачей. Однако заметим, что сама последовательность может быть восстановлена по производящей функции (т.е. обратная задача решается хорошо - мое прим.).
Ничего удивительного, кстати говоря. Как только функция A(x) получена, мы сразу же можем вычислить сумму бесконечного ряда, просто подставив x=1 в A(x) (конечно, если функция A(x) существует в этой точке). Однако в общем случае вычисление бесконечных рядов - задача нетривиальная.
Метод производящей функции, однако, обладает той интересной особенностью, что нет необходимости следить за сходимостью полученного ряда, поскольку символ
в разложении не означает какого-то числа, которое можно было бы подставить на его место. Это просто формальный символ. И тем не менее, метод позволяет получать какие-то содержательные результаты, верность которых затем можно проверять, например, по индукции. Однако прежде чем проверить какой-то результат, его требуется откуда-то получить. Вот это и есть такой метод.
Короче, начинаем с того, что замкнутая форма для
у нас откуда-то уже имеется, на этом не останавливаемся. Тогда коэффициент при
в разложении функции
в ряд Тейлора будет равен
. Вот здесь как раз возникает случай, когда суммируется
членов ряда, от
до
.
На доказательстве этого факта я не останавливаюсь. Можно воспользоваться
методом производящего ряда, где для рекуррентной формулы получают соответствующее уравнение в производящих функциях. Получится уравнение, похожее на уравнение для фурье-образов из первого пункта, типа такого:
. Можно использовать свертку двух последовательностей, одну из которых задать, как {
}. Про свертку последовательностей можно почитать в википедии, в статье "Производящая функция последовательности". Само доказательство есть в книге Грэхема и Кнута "Конкретная математика", в главе 7 "Производящие функции". В разделе "Основные маневры" говорится, что "умножение производящей функции на
дает производящую функцию для последовательности частичных сумм исходной посдедовательности". При этом под частичной суммой, очевидно, у них понимается сумма
начальных членов.
Короче, вся соль теперь в том, как найти замкнутую форму для коэффициента при
в разложении
в ряд Тейлора. В этом может помочь
z-преобразование.
По определению, z-преобразование последовательности функций {
}, это функция
такая, что
. z-преобразование существует не для всех видов функций, а только для тех, что растут не быстрее экспоненты, но не суть.
Таким образом, очевидно, что z-преобразование применяется не к одной конкретной функции, а сразу ко всей последовательности. При этом смысл этого преобразования в том, что по функции
можно получить произвольный член последовательности {
} по формуле
. Интеграл берется по любому замкнутому контуру, включающему все особые точки
. Спрашивается, зачем нужна функция
, если она и так уже имеется по условию? Ни зачем она не нужна! Нужен член последовательности частичных сумм. А это значит, что надо найти z-преобразование вот для такой производящей функции:
. А затем применить к нему обратное z-преобразование.
Как видно, поиск частичной суммы ряда опять свелся к некоторому интегралу, пусть и комплексному. Но это не так уж и страшно, как сейчас станет ясно.
Обозначим {
} последовательность частичных сумм исходной последовательности {
}. Здесь
, где
. Как видно, здесь придется отойти от первоначального определения функции
, как суммы
первых членов рядов, и складывать уже
начальный член.
Производящей функцией последовательности {
} обозначим
, где
. Ну а z-преобразование для
обозначим, как
.
Тогда
,
откуда получаем
.
Рассмотрим какой-нибудь пример.