(-8)^(-2/3) возвращает неверный результат

#matlab

Вопрос:

Я использую Matlab R2020b (Mac OS 12.0.1).

Когда я войду (-8)^(-2/3), он возвращается:

 ans =   -0.1250 - 0.2165i  

Разве вместо этого не должно быть 0,2500?

Ответ №1:

Возведение отрицательных чисел в дробную степень-сложная многозначная операция. MATLAB просто выбирает одно из решений для вас. Например, для решений (-8)^(1/3). начните с корней следующего полиномиального уравнения:

 x^3 8=0  

Использование MATLAB для этого:

 gt;gt; roots([1 0 0 8]) ans =  -2.0000   0.0000i  1.0000   1.7321i  1.0000 - 1.7321i  

Затем доведение этого результата до -2 дает мощность:

 gt;gt; ans.^-2 ans =  0.2500   0.0000i  -0.1250 - 0.2165i  -0.1250   0.2165i  

MATLAB случайно дал вам второе решение выше для расчета (-8)^(-2/3).

ИТОГ: Всякий раз, когда вы имеете дело со сложными многозначными операциями, если вы хотите получить конкретные результаты, вам нужно будет учитывать это в своем коде, потому что MATLAB может выбрать что-то другое.

Комментарии:

1. Matlab не дал такого результата, вместо этого он всегда возвращает корень основной ветви (-pi, pi] , т. Е. (-8)^(-2/3) = 8*exp(pi*(-2/3)) = -0.1250 - 0.2165i .

Ответ №2:

Зависит от порядка расчета.

(-8)^(-2/3) означает разделить -2 на 3, а затем увеличить -8 до этой степени.

Но если вы сделаете ((-8)^(-2))^(1/3) это или nthroot((-8)^(-2),3) вместо этого, вы получите 0,25.