2012-11-18 15 views
5
limit_denominator(max_denominator=1000000) 
Finds and returns the closest Fraction to self that has denominator at most max_denominator. This method is useful for finding rational approximations to a given floating-point number: 

>>> 
>>> from fractions import Fraction 
>>> Fraction('3.1415926535897932').limit_denominator(1000) 
Fraction(355, 113) 

यह एक/999, बी/998, सी/997 की कोशिश करने जैसा कुछ नहीं होना चाहिए .. और सर्वोत्तम अनुमान लगाएं।पाइथन के अंश कैसे हैं .limit_denominator लागू किया गया?

उत्तर

3

fractions मॉड्यूल पायथन में लिखा गया है और आप केवल स्रोत कोड देख सकते हैं। इसमें निम्नलिखित टिप्पणी है।

# Algorithm notes: For any real number x, define a *best upper 
    # approximation* to x to be a rational number p/q such that: 
    # 
    # (1) p/q >= x, and 
    # (2) if p/q > r/s >= x then s > q, for any rational r/s. 
    # 
    # Define *best lower approximation* similarly. Then it can be 
    # proved that a rational number is a best upper or lower 
    # approximation to x if, and only if, it is a convergent or 
    # semiconvergent of the (unique shortest) continued fraction 
    # associated to x. 
    # 
    # To find a best rational approximation with denominator <= M, 
    # we find the best upper and lower approximations with 
    # denominator <= M and take whichever of these is closer to x. 
    # In the event of a tie, the bound with smaller denominator is 
    # chosen. If both denominators are equal (which can happen 
    # only when max_denominator == 1 and self is midway between 
    # two integers) the lower bound---i.e., the floor of self, is 
    # taken. 
+0

एक बाइनरी खोज की तरह दिखता है, "सबसे अच्छा निचला" और "सर्वश्रेष्ठ ऊपरी" अनुमानों के बीच एक्स निचोड़ना –

संबंधित मुद्दे