Как в Matlab сделать результат кубического корня однозначным?

Рейтинг: 1Ответов: 1Опубликовано: 04.03.2015

Почему в Matlab результат кубического корня может быть правильным, но не однозначным? Например,

>> (-5-3)^(1/3)

ans =

   1.0000 + 1.7321i

А если сразу:

>> -8^(1/3)

ans =

    -2

Понятно, что в обоих случаях извлекается кубический корень из -8, но ответ-то разный, хотя и правильный в обоих случаях.

Как можно контролировать, какой результат нужно получить - комплексный или действительный?

Ответы

▲ 2Принят

Можно nthroot использовать для вычисления реального значения корня n-й степени.

Судя по документации оператор A.^B для отрицательного A и дробного B по модулю меньшего 1 всегда вернёт комплексное значение корня.

Если произошло, как вы описываете, то у унарного - приоритет ниже, чем у ^, сделайте так (-8)^(1/3) - и получите ожидаемый комплексный результат.