eApprox с циклом while - PullRequest
       3

eApprox с циклом while

0 голосов
/ 16 октября 2018

Учитывая положительное число (n), я пытаюсь использовать уравнение e = (1 + 1 / k) ^ k с увеличением k, чтобы найти, когда два последовательных ответа согласуются с n значащими цифрами.Пример, который я привел, n = 1

if k=1:
e=(1+1/1)^1
e=2

and if k=2
e=(1+1/2)^2
e=2.25

Эти двое согласятся на одну значащую цифру, потому что на одной фигуре они оба равны 2. Вот код, который я работал до сих пор, но не понимаюпочему он продолжает возвращать 2.0 независимо от того, какое значение n указано в

import decimal
def significant (d, n):
    """Given a desired precision, express a float to this level of 
precision.
    >>> significant (12.345678, 4)
    12.35
    Params: 
        d (float): # of interest
        n (int):   precision (# significant digits)
    Returns: (float) d rounded to this precision
    """

    decimal.getcontext().prec = n
    return float(decimal.Decimal(d) / decimal.Decimal (1))

def eApprox (n):
    prev=0
    k=1
    e=(1+(1/k))**k
    prob=significant(e,n)
    while str(prob)!=prev:
        prev=str(prob)[:]
        k+=1
    return e

1 Ответ

0 голосов
/ 17 октября 2018

Похоже, что вы хотите eApprox вернуть значение в зависимости от k;в существующем состоянии ваша функция всегда устанавливает k в 1, и поэтому вычисляет только (1+(1/1))**1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...