#python #math #numbers #numeric
#python #математика #числа #числовое
Вопрос:
from numpy import log as ln
z = 3
k = 2
x = 1 - ln(1 z) / ln(1 k)
y = 1/5
print("The x=", x)
Q = x**y
print(Q)
Результат
The x= -0.26185950714291484
c:Users-Desktop... RuntimeWarning: invalid value
encountered in double_scalars
Q = x**y
nan
Я беспокоюсь о том, чтобы понять проблему здесь. Понятно, что я могу распечатать
x
, но я не могу воспользоваться этим.
Между тем, когда я пишу код как
x = -0.26185950714291484
y = 1/5
print("The x=", x)
Q = x**y
print(Q)
Я получаю
The x= -0.26185950714291484
(0.6188299348758349 0.44960626529008196j)
Я буквально в шоке. Я не могу понять, что происходит. Если я просто введу числа вручную, я смогу вычислить результат. Но если я выполняю их вычислительно, я получаю ошибку???
Ответ №1:
Ну, они выглядят одинаково, потому что они не совпадают с кодом:
from numpy import log as ln
z = 3
k = 2
x = 1 - ln(1 z) / ln(1 k)
y = 1/5
print("The x=", x)
Q = x**y
print(Q)
у вас есть переменная ‘x’ типа <class 'numpy.float64'>
, тогда как с:
x = -0.26185950714291484
y = 1/5
print("The x=", x)
Q = x**y
print(Q)
переменная ‘x’ имеет тип <class 'float'>
.
Затем вы применили возведение в степень со значением разных типов, а именно <введите одно значение типа ‘numpy.float64’> (т.е. ‘x’) с другим значением типа <class ‘float’> (т.е. ‘y’). Вы хотите избежать проблем, чтобы преобразовать ‘x’ в float было хорошо:
from numpy import log as ln
z = 3
k = 2
x = 1 - ln(1 z) / ln(1 k)
y = 1/5
Q = float(x)**y
print(Q)
Вывод:
(0.6188299348758349 0.44960626529008196j)