我想做一个条件函数的等高线图,但是我得到了一个错误。 代码如下:
from math import *
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
a1=15.8
a2=18.3
a3=0.714
a4=23.2
def bindingenergy(Z,A):
if A%2==1:
a5=0
elif A%2==0 and Z%2==0:
a5=12
else:
a5=-12
B=a1*A-a2*A**(2/3)-a3*((Z**2)/A**(1/3))-a4*(((A-2*Z)**2)/A)+(a5/A**(1/2))
C=B/A
return C
s=np.arange(1,300)
t=np.arange(1,100)
X, Y=np.meshgrid(t,s)
E=bindingenergy(X,Y)
plt.ion()
plt.contourf(X,Y,E,25, cmap=cm.rainbow)
plt.colorbar()
plt.show()
当我运行程序时,我得到一个错误: ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()
为了这条线
if A%2==1:
我想我是在某种程度上把布尔逻辑应用到一个数组(虽然我不知道这是怎么发生的),这就是错误的原因,但是我不知道如何重写它,这样我就可以得到轮廓图。 我到处都在寻找答案,但不是不明白就是不适用于这个问题。你知道吗
有什么建议吗? 多谢了
目前没有回答
相关问题 更多 >
编程相关推荐