Как заменить хранение переменной на встроенную? - PullRequest
0 голосов
/ 09 июля 2019

Я строю калькулятор n-го корня (без импорта math), используя метод Ньютона, а также стремлюсь округлить до пользователя, чтобы минимизировать время вычислений.

Однако мне нужно сохранить переменную для сравнения предыдущего значения с текущим значением, и я не уверен, будет ли код всегда давать правильный ответ (пока игнорировать даже корни отрицательного значения).

Есть ли способ не использовать сохраненную переменную и еще больше увеличить скорость моих вычислений?Вот код:

x,n,acc=[float(i) for i in input().split()]

def newton_nthroot(x,n,acc):
    value=1
    while True:
        store=value
        value += (x-(value**n))/(n*(value**(n-1)))
        if round(value,acc) == round(store,acc):
            break
    print(round(value,acc))

newton_nthroot(x,n,int(acc))

1 Ответ

1 голос
/ 09 июля 2019

Я не уверен, что потеря store действительно увеличит скорость, но я заметил, что вы вычисляете value, добавляя (((x-(value**n)))/(n*(value**(n-1))) (давайте назовем это выражение z), а затем сравниваем value до store.
Вы можете, если хотите, просто рассчитать z и сравнить его с 0:

def newton_nthroot(x,n,acc):
    value=1
    while True:
        z = (x-(value**n))/(n*(value**(n-1)))           
        if round(z,acc) == 0:
            break
        else:
            value +=z
    print(round(value,acc))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...