|
Решение рекуррентных уравнений — 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]
|