Множитель целости
а. Напишите процедуру
pseudoremainder-terms
, которая работает в точности как
remainder-terms
, но только прежде, чем позвать
div-terms
, домножает делимое на множитель целости, описанный выше. Модифицируйте
gcd-terms
так, чтобы она использовала
pseudoremainder-terms
, и убедитесь, что теперь
greatest-common-divisor
выдает ответ с целыми коэффициентами в примере из упражнения
2.95
б. Теперь у НОД целые коэффициенты, но они больше, чем коэффициенты
P1
. Измените
gcd-terms
, чтобы она убирала общий множитель из коэффициентов ответа путем деления всех коэффициентов на их (целочисленный) НОД.
Итак, вот как привести рациональную функцию к наименьшему знаменателю:
- Вычислите НОД числителя и знаменателя, используя версию
gcd-terms
из упражнения 2.96 - Когда Вы получаете НОД, домножьте числитель и знаменатель на множитель целости, прежде чем делить на НОД, чтобы при делении не получить дробных коэффициентов. В качестве множителя можно использовать старший коэффициент НОД, возведенный в степень
1 + O1 − O2
, гдеO2
– порядок НОД, аO1
— максимум из порядков числителя и знаменателя. Так Вы добьетесь того, чтобы деление числителя и знаменателя на НОД не привносило дробей. - В результате этой операции Вы получите числитель и знаменатель с целыми коэффициентами. Обычно из-за всех множителей целости коэффициенты окажутся очень большими, стало быть, на последнем шаге следует избавиться от лишних множителей, вычислив (целый) наибольший общий делитель числителя и знаменателя и поделив на него все термы.
Комментарии отсутствуют.