Ошибка математического домена Python при использовании pow - PullRequest
3 голосов
/ 01 февраля 2012

Вот код:

exp = 1.79
def calc(t):
    return pow(t - 1, exp)

Входные значения t находятся в диапазоне от 0 до 1 (например, 0,04). Этот код выдает «исключение математического домена», но я не уверен почему.

Как мне это решить?

Ответы [ 3 ]

5 голосов
/ 01 февраля 2012

Если t находится в диапазоне от 0 до 1, то t - 1 находится в диапазоне от -1 до 0. Отрицательные числа не могут быть увеличены до дробной степени ни встроенными pow, ни math.pow.

3 голосов
/ 01 февраля 2012

Отрицательные числа, возведенные в дробный показатель, не приводят к действительным числам. Вам придется использовать cmath, если вы настаиваете на том, чтобы вычислять и использовать их, но учтите, что вам понадобится некоторый опыт работы с комплексными числами, чтобы использовать результат.

>>> cmath.exp(cmath.log(0.04 - 1) * 1.79)
(0.7344763337664206-0.5697182434534497j)
0 голосов
/ 01 февраля 2012
exp = 1.79
def calc(t):
    return pow(t - 1, exp)

print calc(1.00) # t-1 is 0, there will be no error.
print calc(0.99) # t-1 is negative, will raise an error.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...