我使用的是Matlab R2020b(Mac OS 12.0.1(。
当我输入(-8(^(-2/3(时,它返回:
ans =
-0.1250 - 0.2165i
不是应该是0.2500吗?
将负数提升为分数幂是一个复杂的多值运算。MATLAB只是为您选择一个解决方案。例如,对于(-8(^(1/3(的解。从以下多项式方程的根开始:
x^3+8=0
使用MATLAB:
>> roots([1 0 0 8])
ans =
-2.0000 + 0.0000i
1.0000 + 1.7321i
1.0000 - 1.7321i
然后将这个结果提高到-2次方收益率:
>> ans.^-2
ans =
0.2500 + 0.0000i
-0.1250 - 0.2165i
-0.1250 + 0.2165i
MATLAB恰好为您提供了(-8(^(-2/3(计算的第二个解决方案。
底线:每当你处理复杂的多值运算时,如果你想要特定的结果,你需要在代码中考虑到这一点,因为MATLAB可能会选择其他东西。
取决于计算顺序。
(-8)^(-2/3)
的意思是将-2除以3,然后将-8提高到该幂。
但如果你改为((-8)^(-2))^(1/3)
或nthroot((-8)^(-2),3)
,你会得到0.25。