登录论坛

查看完整版本 : [MATLAB基础] 含负数的数组的分数次幂怎么不对??


iamhuxiaolei
2009-04-15, 15:11
>> a=[-1 -0.5 -0.2]'

a =

-1.0000
-0.5000
-0.2000
>> a.^(1/3)

ans =

0.5000 + 0.8660i
0.3969 + 0.6874i
0.2924 + 0.5065i
不是应该返回几个负数么,怎么是复数

zy0113
2009-04-15, 15:44
-1开平方或次方都会产生复数。

iamhuxiaolei
2009-04-16, 15:13
但是单个数的时候就不存在这个问题,想不明白怎么回事。
>> -0.5^(1/3)

ans =

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

ans =

-1

laosam280
2009-04-17, 12:56
建议你用点小小的技巧噻:
a=[-1 -0.5 -0.2];
b=-abs(a.^(-1/3))
因为Matlab很多运算都是按照复数规则进行的,比如矩阵的转置等等