03 · Рациональные числа: перекрёстные произведения
Рациональные числа: перекрёстные произведения¶
Рассматривайте дробь как пару целых, значение которой не зависит от выбранного представителя.
Вы отличаете представителя, класс эквивалентности и нормальную форму.
- объяснить своими словами математическое определение «Рациональные числа: перекрёстные произведения»
- показать его представление в данных Python
- предсказать небольшой запуск по настоящему коду
При ненулевых знаменателях `p/q = r/s` тогда и только тогда, когда `p*s=q*r`; поэтому `1/2` равно `2/4`.
`Rational` хранит целые числитель и ненулевой знаменатель, а `reduction()` выбирает удобную форму.
`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`
Математическое определение
Математическое определение¶
При ненулевых знаменателях p/q = r/s тогда и только тогда, когда p*s=q*r; поэтому 1/2 равно 2/4.
Представление данных
Представление данных¶
Rational хранит целые числитель и ненулевой знаменатель, а reduction() выбирает удобную форму.
Реализация на Python
Реализация на Python¶
__eq__ сравнивает перекрёстные произведения, __add__ строит общий знаменатель, сокращение нормализует знак и НОД.
Точное соответствие, используемое в курсе:
Ход выполнения
Ход выполнения¶
Сравнение спускается к умножению и равенству целых и показывает повторное использование числовой башни.
Предскажите результат равенства и сокращённую форму `2/4`.
Сначала запишите прогноз, затем запускайте.
Проверка тестами
Проверка тестами¶
Тесты сравнивают эквивалентные дроби, хеши и запрет нулевого знаменателя.
Область и ограничения
Область и ограничения¶
Большие компоненты усиливают стоимость лежащих ниже унарных натуральных.