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)
Я буквально в шоке. Я не могу понять, что происходит. Если я просто поставлю числа вручную, я смогу рассчитать результат. Но если я делаю их вычислительно, я получаю сообщение об ошибке???
Ну, они выглядят одинаково, они не одинаковы, с кодом:
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'>
.
Затем вы применили возведение в степень со значением разных типов, а именно <type one типа '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)