Hướng dẫn continued fractions in python
Without further information, it's probably a Good Idea™ to use the simple continued fraction expansion of e, as shown in Wikipedia: Show
This sequence can easily be created using a simple list comprehension. To evaluate a simple continued fraction expansion we can process the list in reversed order. The following code will work on Python 2 or Python 3.
output
Pass the program an argument of 20 to get the best approximation possible using Python floats: 2.718281828459045 As Rory Daulton (& Wikipedia) mention, we don't need to reverse the continued fraction list. We can process it in the forward direction, but we need 2 more variables
because we need to track 2 generations of numerators and denominators. Here's a version of Algorithm: Continued Fraction (Python)Known time/storage complexity and/or correctness The continued fraction of a real number $x\in\mathbb R$ can be computed by the following algorithm.1 1 Because floating point arithmetic IEEE-754 “double precision”, python doubles contain 53 bits of precision. Therefore, the algorithm not always computes the write values of the continued fraction. The algorithm also limits the computation to 20 values of the continued fraction, since some continued fractions are not finite. Short Name $\operatorname{contFrac}$ Input Parameters real number $x\in\mathbb R$ Output Parameters continued fraction $[x_0;x_1,x_2,\ldots]$ Python Code | | |
| created: 2019-06-23 17:31:32 | modified: 2019-06-23 19:06:33 | by: bookofproofs |
references: [1357], [8186]1.Proof: (related to "Continued Fraction (Python)")Source code: Lib/fractions.py The A Fraction instance can be constructed from a pair of integers, from another rational number, or from a string. classfractions. Fraction (numerator=0, denominator=1)¶ class
fractions. Fraction (other_fraction) class fractions. Fraction (float) class fractions. Fraction (decimal) class fractions. Fraction (string)The first version requires that numerator and denominator are instances of [sign] numerator ['/' denominator] where the optional >>> from fractions import Fraction >>> Fraction(16, -10) Fraction(-8, 5) >>> Fraction(123) Fraction(123, 1) >>> Fraction() Fraction(0, 1) >>> Fraction('3/7') Fraction(3, 7) >>> Fraction(' -3/7 ') Fraction(-3, 7) >>> Fraction('1.414213 \t\n') Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) >>> Fraction('7e-6') Fraction(7, 1000000) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal >>> Fraction(Decimal('1.1')) Fraction(11, 10) The Changed in version 3.9: The numerator ¶Numerator of the Fraction in lowest term. denominator ¶ Denominator of the Fraction in lowest term. as_integer_ratio ()¶Return a tuple of two integers, whose ratio is equal to the Fraction and with a positive denominator. New in version 3.8. classmethodfrom_float (flt)¶Alternative constructor which only accepts instances of Note From Python 3.2 onwards, you can also construct a from_decimal (dec)¶Alternative constructor which only accepts instances of limit_denominator (max_denominator=1000000)¶Finds and returns the closest >>> from fractions import Fraction >>> Fraction('3.1415926535897932').limit_denominator(1000) Fraction(355, 113) or for recovering a rational number that’s represented as a float: >>> from math import pi, cos >>> Fraction(cos(pi/3)) Fraction(4503599627370497, 9007199254740992) >>> Fraction(cos(pi/3)).limit_denominator() Fraction(1, 2) >>> Fraction(1.1).limit_denominator() Fraction(11, 10) __floor__ ()¶Returns the greatest >>> from math import floor >>> floor(Fraction(355, 113)) 3 __ceil__ ()¶Returns the least __round__ ()¶ __round__ (ndigits)The first version returns the nearest See also Modulenumbers The abstract base classes making up the numeric tower. How do you round in math in Python?Python has a built-in round() function that takes two numeric arguments, n and ndigits , and returns the number n rounded to ndigits . The ndigits argument defaults to zero, so leaving it out results in a number rounded to an integer. Do fractions work in Python?In Python the Fraction module supports rational number arithmetic. Using this module, we can create fractions from integers, floats, decimal and from some other numeric values and strings. There is a concept of Fraction Instance. It is formed by a pair of integers as numerator and denominator. How do you round a decimal number in Python?Python round() Function The round() function returns a floating point number that is a rounded version of the specified number, with the specified number of decimals. The default number of decimals is 0, meaning that the function will return the nearest integer. |