Saltar a contenido

03 · Racionales: productos cruzados y reducción

Racionales: productos cruzados y reducción

Trata una fracción como un par de enteros y haz que su valor no dependa del numerador y denominador elegidos.

Antes de este capítulo

Ya distingues entre un representante, su clase de equivalencia y una forma normal.

Al terminar podrás
  • explicar con tus palabras la definición matemática de «Racionales: productos cruzados y reducción»
  • señalar cómo se representa esa definición en datos de Python
  • predecir una ejecución pequeña a partir del código real
Definición matemática

Con denominadores no nulos, `p/q` y `r/s` son iguales exactamente cuando `p*s=q*r`; así `1/2` y `2/4` tienen el mismo valor.

Representación de datos

`Rational` guarda numerador y denominador enteros, comprueba que el segundo no sea cero y usa `reduction()` para elegir una forma legible.

Implementación en Python

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

Implementación y pruebas para leer junto al capítulo

peano/rational.py · tests/test_rational.py

Definición matemática

Definición matemática

Con denominadores no nulos, p/q y r/s son iguales exactamente cuando p*s=q*r; así 1/2 y 2/4 tienen el mismo valor.

Representación de datos

Representación de datos

Rational guarda numerador y denominador enteros, comprueba que el segundo no sea cero y usa reduction() para elegir una forma legible.

Implementación en Python

Implementación en Python

__eq__ multiplica en cruz, __add__ construye un denominador común y la reducción normaliza el signo y divide por el máximo común divisor.

La correspondencia exacta usada en el curso:

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

Traza de ejecución

Traza de ejecución

La comparación baja hasta la multiplicación y la igualdad de enteros, mostrando la reutilización de la torre numérica.

Predicción antes de ejecutar

Predice el booleano de igualdad y la forma reducida de `2/4`.

Experimento · Racionales: productos cruzados y reducción Sin ejecutar
⌘ / Ctrl + Enter
Salida
Escribe primero tu predicción y después ejecuta.

Comprobación con pruebas

Comprobación con pruebas

Las pruebas comparan fracciones equivalentes, sus hashes y el rechazo del denominador cero.

Alcance y límites

Alcance y límites

Los componentes grandes amplifican el coste de los naturales unarios situados debajo.

¿Qué afirmación describe correctamente la implementación de «Racionales: productos cruzados y reducción»?