Как сделать чтобы дробь не сокращалась?

Форум пользователей пакета Maple

Модератор: Admin

Drizhenko
Сообщения: 36
Зарегистрирован: Пт окт 28, 2005 11:01 am

Как сделать чтобы дробь не сокращалась?

Сообщение Drizhenko » Ср дек 26, 2007 6:43 pm

Есть цикл, в котором к дроби прибавляется один этаж. В общем цепная дробь. Пытаюсь сделать алгоритм, но дробь соращается. Как сделать чтобы она не скокращалась? Например ввожу: s:=((8*a+a)/a)/a; Отевет: 9/a, А мне нужно просто вывести на экран эту трехэтажную дробь, потом она станет четырехэтажной и т.д.

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Чт дек 27, 2007 10:43 am

Такое представление дроби называется continued fraction. Смотрите хелп по этим ключевым словам и пакет numtheory.

Drizhenko
Сообщения: 36
Зарегистрирован: Пт окт 28, 2005 11:01 am

Сообщение Drizhenko » Сб янв 05, 2008 10:26 am

Спасибо. Функция cfrac() то что нужно. Она мне безусловно пригодится. Но в связи с этим возник такой вопрос:

Код: Выделить всё

W:=(0.4*S^2+0.5*S+0.2)/(0.3*S^4+0.5*S+0.4);
massiv:=cfrac(W, 'quotients');

Получается цепная дробь записанная в форме матрицы или массива. А можно ли совершить обратное преобразование. Т.е. из одномерного массива в цепную дробь?

aar
Сообщения: 100
Зарегистрирован: Чт авг 10, 2006 11:27 am

Сообщение aar » Сб янв 05, 2008 12:11 pm

А можно ли совершить обратное преобразование. Т.е. из одномерного массива в цепную дробь?

В хелпе я не вижу такой процедуры, но это несложно самому запрограммировать. Удачи.