При попытке решить проблему оптимизации, я постоянно получаю:В чем разница между делением и возведением в степень для компьютера?
RuntimeWarning: divide by zero encountered in divide
Хотя аналитический писать 1/х и х^(- 1) одно и то же, переписывание своей функции, заменяя каждое подразделение как показанный, решил мою проблему.
Мне было интересно узнать, что отличает компьютер от вычисления либо деления, либо возведения в степень.
EDIT:
Я решение проблемы с участием нанометровых масштабов. Полная ошибка, которую я получал, составляет:
RuntimeWarning: divide by zero encountered in divide
term = alpha/w
где альфа - некоторая константа, а w> 0 - длина. Величины w, которые я ожидаю, имеют порядок 1е-9 или меньше, а альфа порядка 0,1.
Тем не менее, проблема решена. На самом деле я удивлен, что такое простое изменение в коде решает все, и, следовательно, вопрос.
EDIT 2:
Я решил проблему, написав:
term = alpha * w**(-1)
Я знаю ** равен экспоненциации в Python.
exponentiation = повторное умножение (например, инструкция 'mul'). раздел = 'div' инструкция, в основном. –
@MarcB Это не совсем объясняет это в этом случае, так как не сразу видно, как вы повторяете что-то -1 раз. –
Я не уверен, как использование exponentiation вместо деления может исправить вашу проблему, если вы работаете на одних и тех же данных. '0 ** -1' дает' ZeroDivisionError' так же, как '1/0'. Я хотел бы отметить, что ни один из них не дает точно такое же сообщение об ошибке, которое вы описываете, поэтому, возможно, это проблема XY. Можете ли вы дать более подробную информацию (и, возможно, некоторый код), показывающую, что вы на самом деле делаете? – Blckknght