簡體   English   中英

如何取負數的任意冪

[英]How to take an arbitrary power of a negative number

當試圖將負數(例如np.sin(5) )提高到小於 1 的任意冪(例如1/3 )時,即使使用np.power也會導致錯誤。 但是為什么會這樣,如何避免 output 成為真正的答案(例如-0.9861162244048773 )?

import numpy as np

np.sin(5)
#Out: -0.9589242746631385

(np.sin(5))**(3)
#Out: -0.881765166036633

(np.sin(5))**(1/3)
__main__:1: RuntimeWarning: invalid value encountered in double_scalars

np.power(np.sin(5),3)
#Out: -0.881765166036633

np.power(np.sin(5),1/3)
__main__:1: RuntimeWarning: invalid value encountered in power
#Out: nan

#The correct answer sought to (np.sin(5))**(1/3) is -0.9861162244048773
-0.9861162244048773*-0.9861162244048773*-0.9861162244048773 == np.sin(5)
#Out: True

如果您遵守算術規則,則不允許計算負數的冪,除非冪是 integer (這里不需要,因為您說power < 1或者您擴展了有效數字的范圍包括復數,或者你可以取它的立方根(正如冪1/3所暗示的那樣)。

對於復數,您可以使用任何 numpy 方法計算任何數字的冪:

np.sin(5 + 0j)**(1/3)
(np.sin(5) + 0j)**(1/3)
np.power(np.sin(5) + 0j, 1/3)

將所有 output 正確答案:

# Out: (0.4930581122024387+0.8540017014186199j)

對於立方根,您需要堅持使用特定的立方根方法:

np.cbrt(np.sin(5))
# Out: -0.9861162244048773

對於你的冪是分數的特殊情況,其中分子是偶正數,fi power=2/3

(np.sin(5)**2)**(1/3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM