logo
Самоучитель по Maple

33. Решение рекуррентных уравнений — rsolve Решение рекуррентных уравнений — rsolve

Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple 7 можно найти ряд и других функций, например rsolve для решения рекуррентных уравнений, isolve для решения целочисленных уравнений, msolve для решения по модулю m и т. д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.

Для решения рекуррентных уравнений используется функция rsolve:

rsolve(eqns, fens) ,

rsolve(eqris. fens, 'genfunc'(z))

rsolve(eqns, fens, 'makeproc')

Здесь eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя, генерирующее функциональную переменную.

Ниже представлены примеры применения функции rsolve:

А теперь приведем результат вычисления функцией rsolve n-го числа Фибоначчи. Оно задается следующим выражением:

> eql :- (f(n+2) = f(rn-l) + f(n) . f(0) - 1 . f(l) - 1}:

eql~{f(n+2) = f(n + \) + f(n),f(0)=\,f(l)=l}

В нем задана рекуррентная формула для числа Фибоначчи — каждое новое число равно сумме двух предыдущих чисел, причем нулевое и первое числа равны 1. С помощью функции rsolve можно получить поистине ошеломляющий результат:

Числа Фибоначчи — целые числа. Поэтому представленный результат выглядит как весьма сомнительный. Но на самом деле он точный и с его помощью можно получить числа Фибоначчи. Ниже показан процесс получения чисел Фибоначчи для n = 5, 7, 10 и 20:

> [normal(subs(n=5,al).expanded).normal(subs(n-7.al).expanded).

normal(subs(n=10,al),expanded),normal(subs(n=20.al),expanded)];

[8,21,89,10946]

73.gif

74.gif