所以,我在R中有以下代码:
y
a <- -0.1
test <- (1/((y+as.numeric(!y))*(a-1)))
test
test^a
-0.9090909^a
给我输出:
> y
[1] 0.00000000 0.06024096 0.00000000 0.01098901 0.00000000 0.00000000
[7] 0.01829268 0.00000000 0.06976744 0.00000000 0.04380665 0.01351351
[13] 0.00000000 0.00000000 0.00000000 0.00000000 0.00310559 0.00000000
[19] 0.00000000 0.00000000 0.09957447 0.00000000 0.03738318 0.00000000
> a <- -0.1
> test <- (1/((y+as.numeric(!y))*(a-1)))
> test
[1] -0.9090909 -15.0909091 -0.9090909 -82.7272727 -0.9090909
[6] -0.9090909 -49.6969697 -0.9090909 -13.0303030 -0.9090909
[11] -20.7523511 -67.2727273 -0.9090909 -0.9090909 -0.9090909
[16] -0.9090909 -292.7272727 -0.9090909 -0.9090909 -0.9090909
[21] -9.1297591 -0.9090909 -24.3181818 -0.9090909
> test^a
[1] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
[17] NaN NaN NaN NaN NaN NaN NaN NaN
> -0.9090909^a
[1] -1.009577
我不明白为什么在测试电源时它给了我NaN,显然,我可以简单地从测试中复制一个值并将其提升到电源a,这样就可以了。使用test [1] ^ a也不起作用。
答案 0 :(得分:8)
-0.9090909 ^ a
与-(0.9090909 ^ a)
相同。请注意括号。
但是,您的test
包含负值,而您无法取负数的根。请尝试(-0.9090909) ^ a
进行验证:
> (-0.9090909) ^ -0.1
[1] NaN
答案 1 :(得分:3)
你正试图取一个负数的根。如果您希望进行复杂的算术运算,则需要转换为复数
as.complex(test) ^ a
# [1] 0.9601644-0.3119763i 0.7249946-0.2355650i 0.9601644-0.3119763i
# [4] 0.6115633-0.1987090i 0.9601644-0.3119763i 0.9601644-0.3119763i
# [7] 0.6435367-0.2090978i 0.9601644-0.3119763i 0.7357171-0.2390490i
#[10] 0.9601644-0.3119763i 0.7022627-0.2281790i 0.6243418-0.2028609i
#[13] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.9601644-0.3119763i
#[16] 0.9601644-0.3119763i 0.5389643-0.1751201i 0.9601644-0.3119763i
#[19] 0.9601644-0.3119763i 0.9601644-0.3119763i 0.7623605-0.2477059i
#[22] 0.9601644-0.3119763i 0.6912151-0.2245894i 0.9601644-0.3119763i