我想做一个条件函数的轮廓图,但是出现错误。 这是代码:
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:
我认为我正在以某种方式将布尔逻辑应用于数组(尽管我不明白这是怎么发生的),这是导致错误的原因,但是我不知道如何重写它,以便可以得到等高线图。 我到处都在寻找答案,但是要么听不懂,要么无法解决这个问题。
有什么建议吗? 非常感谢