Python 在使用numpy时,难以理解电源中输入值的运行时警告

Python 在使用numpy时,难以理解电源中输入值的运行时警告,python,numpy,Python,Numpy,给出了错误: running.py:26:RuntimeWarning:电源中遇到无效值 但我不明白为什么会这样 import numpy as np d = 120 m = 45 x = np.arange(0, d, 1) y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2) 谢谢你的帮助 import numpy as np d = 120 m = 45 x =

给出了错误:
running.py:26:RuntimeWarning:电源中遇到无效值
但我不明白为什么会这样

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
谢谢你的帮助

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
所以你会得到一堆负数,但如果将它们提高到2.2的幂次,就会得到复数:

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
>>> (-43.97273045)**2.2
(3333.966245482375+2422.2682642773098j)
>>> (-3.95030853e-07)**2.2
(6.6152442046857145e-15+4.806256247845179e-15j)
但是,数组的数据类型是
float64
,因此不能将其提升到导致复数的幂次方:

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
>>> (-43.97273045)**2.2
(3333.966245482375+2422.2682642773098j)
>>> (-3.95030853e-07)**2.2
(6.6152442046857145e-15+4.806256247845179e-15j)
所以所有负数的幂都变成了NaN

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
您可以使用计算负数的奇数根(您实际上是在计算
(thing**11)**(1/5)

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
所以你会得到一堆负数,但如果将它们提高到2.2的幂次,就会得到复数:

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
>>> (-43.97273045)**2.2
(3333.966245482375+2422.2682642773098j)
>>> (-3.95030853e-07)**2.2
(6.6152442046857145e-15+4.806256247845179e-15j)
但是,数组的数据类型是
float64
,因此不能将其提升到导致复数的幂次方:

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    
>>> (-43.97273045)**2.2
(3333.966245482375+2422.2682642773098j)
>>> (-3.95030853e-07)**2.2
(6.6152442046857145e-15+4.806256247845179e-15j)
所以所有负数的幂都变成了NaN

import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)    

你可以计算负数的奇数根(你基本上是在计算
(thing**11)**(1/5)
)。

我很确定这是由于
0.7**(某个大的东西)
收敛到零,所以你是在除以零。当我单独运行第一个带括号的部分时(在减号之前),它工作正常。你提出的问题似乎是后半部分的问题:/我很确定这是由于
0.7**(大的东西)
收敛到零,所以你要除以零。当我单独运行第一个带括号的部分(在减号之前)时,它可以正常工作。你提出的问题似乎是下半年的问题:/
import numpy as np
d = 120
m = 45
x = np.arange(0, d, 1)
y = (m*np.sin((x**(1.1)+30)/(0.7*d))**2.2) - (m*np.sin((2*x**(1.1)+30)/(0.7*d))**2.2)