作业帮 > 综合 > 作业

python中的数开方后为什么都变成1了

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/05/04 16:56:08
python中的数开方后为什么都变成1了
import numpy as np
c = 0.1
a = np.sqrt(3)
X = np.arange(-3,3,0.01)
Y = np.arange(-3,3,0.01)
X,Y = np.meshgrid(X,Y)
R = (c**2 + 4*c**2*np.cos(X)**2 + 4*c**2*np.cos(X)*np.cos(a*Y) - 0.25)
A = R**(1/2)
Z = np.real(A)
print A
这是我的代码 运行之后 发现A全是1,可是R并不是全是1,这是怎么回事的
python中的数开方后为什么都变成1了
将A=R**(1/2)
改为
A=R**0.5 或 A=R**(1.0/2)
python 2中整数的除法是向下取整的,1/2为0,因此 A=R**(1/2) 计算的是R的0次方
再问: 可是它提示invalid value encountered in sqrt这是怎么回事?
再答: 负数是不能在实数范围内开方的,如果是负数对其开方一般会出错 如果想对负数开方,可以用支持负数开方的库,如下 import cmath cmath.sqrt(-5)