Перейти к содержанию

03 · Рациональные числа: перекрёстные произведения

Рациональные числа: перекрёстные произведения

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

Перед этой главой

Вы отличаете представителя, класс эквивалентности и нормальную форму.

После главы вы сможете
  • объяснить своими словами математическое определение «Рациональные числа: перекрёстные произведения»
  • показать его представление в данных Python
  • предсказать небольшой запуск по настоящему коду
Математическое определение

При ненулевых знаменателях `p/q = r/s` тогда и только тогда, когда `p*s=q*r`; поэтому `1/2` равно `2/4`.

Представление данных

`Rational` хранит целые числитель и ненулевой знаменатель, а `reduction()` выбирает удобную форму.

Реализация на Python

`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`

Реализация и тесты для параллельного чтения

peano/rational.py · tests/test_rational.py

Математическое определение

Математическое определение

При ненулевых знаменателях p/q = r/s тогда и только тогда, когда p*s=q*r; поэтому 1/2 равно 2/4.

Представление данных

Представление данных

Rational хранит целые числитель и ненулевой знаменатель, а reduction() выбирает удобную форму.

Реализация на Python

Реализация на Python

__eq__ сравнивает перекрёстные произведения, __add__ строит общий знаменатель, сокращение нормализует знак и НОД.

Точное соответствие, используемое в курсе:

`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`

Ход выполнения

Ход выполнения

Сравнение спускается к умножению и равенству целых и показывает повторное использование числовой башни.

Прогноз перед запуском

Предскажите результат равенства и сокращённую форму `2/4`.

Эксперимент · Рациональные числа: перекрёстные произведения Не запущено
⌘ / Ctrl + Enter
Вывод
Сначала запишите прогноз, затем запускайте.

Проверка тестами

Проверка тестами

Тесты сравнивают эквивалентные дроби, хеши и запрет нулевого знаменателя.

Область и ограничения

Область и ограничения

Большие компоненты усиливают стоимость лежащих ниже унарных натуральных.

Какое утверждение верно описывает реализацию «Рациональные числа: перекрёстные произведения»?