es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tengo un número decimal, ¿cómo puedo convertirlo en la división de dos enteros?

Supongamos que tenemos un número de punto flotante; (siempre mayor que 0 y menor que 1); (0 < x < 1) ¿Cómo puedo obtener dos números cuya división produzca un número exacto o cercano al número decimal?

Por ejemplo, si tenemos x = 0.4, quiero tener un algoritmo para encontrar a/b (a y b son enteros) que en este caso serían 2/5;

Y supongamos que una similitud de 6 dígitos es suficiente; por lo tanto (si y: 0.56423348256; a/b = 0.564233778888) está bien;

Gracias de antemano por cualquier idea, ayuda, nombre de algún método que pueda ayudar.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para encontrar dos enteros a y b que produzcan un número de punto flotante x (0 < x < 1), podemos utilizar el algoritmo de expansión en fracción continua.

    Aquí están los pasos:

    1. Inicializa a0 como el entero más grande menor o igual que x, y deja x1 = 1/(x – a0).
    2. Repite los siguientes pasos para i = 1, 2, 3, … hasta obtener el nivel de precisión deseado:

      a. Deja que ai sea el entero más grande menor o igual que xi.

      b. Deja que xi+1 = 1/(xi – ai).

    3. La fracción a0 + 1/(a1 + 1/(a2 + 1/(a3 + … ))) es una representación en fracción continua de x.

    4. Para obtener el nivel de precisión deseado (por ejemplo, 6 dígitos), detenemos el algoritmo cuando dos convergentes consecutivos (a[i-1]/b[i-1] y a[i]/b[i]) tienen una similitud mayor o igual al nivel deseado.

    Nota: En el paso 3, también podemos utilizar la truncación en lugar de la expansión completa en fracción continua para obtener una buena aproximación racional de x.

    Un algoritmo común para hacer esto es la secuencia de Farey, que genera todas las fracciones simples a/b (0 < a < b <= N) en orden creciente, donde N es un número entero positivo grande. Podemos detener el algoritmo cuando a/b tiene una similitud mayor o igual al nivel deseado.

Comments are closed.