Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Самоучитель по Maple.docx
Скачиваний:
258
Добавлен:
08.03.2016
Размер:
17.32 Mб
Скачать

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

34. Решение уравнений в целочисленном виде — isotve Решение уравнений в целочисленном виде — isolve

Иногда бывает нужен результат в форме только целых чисел. Для этого используется функция isolve(eqns, vans), дающая решение в виде целых чисел. Приведем примеры ее применения:

> iso1ve({2*x-5=3*y}):

{x = 4 + 3_Zl,y=\ + 2_Z1]

> iso1ve(y^4-z^2*y^2-3*x*z*y*2-x^3*z);

Во втором из приведенных примеров в выводе появилась вспомогательная переменная %1, которая упрощает запись результата при текстовом формате его вывода (Character Notation). Напоминаем, что в стандартной математической нотации вспомогательная переменная вида %N не формируется. В этом случае упомянутый пример будет выглядеть следующим образом:

Результат вычислений одинаков при любом формате вывода, но иногда вывод в текстовом формате с выделением вспомогательных переменных имеет преимущество, поскольку выглядит более компактным.

75.gif

35. Функция msolve. Функция msolve

Функция msolve(eqns,vars.m) или msolve(eqns,m) обеспечивает решение вида Z mod m (то есть при подстановке решения левая часть4 при делении нат дает остаток, равный правой части уравнения). При отсутствии решения возвращается объект NULL (пустой список).

Ниже даны примеры использования функции msolve:

> mso1ve({3*x-4*y=l,7*x+y=2}.12);

{у = 5,х=3}

> msolve(2^i=3.19);

{(=13 + 18_Z7~}

> mso1ve(8*j-2,x,17);

{/ = 3 + 8*}

На этом мы завершаем рассмотрение функций для решения уравнений, неравенств и систем с ними.