Я хочу сделать контурный график условной функции, но получаю ошибку.
Это код:
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:
Я думаю, что я каким-то образом применяю логическую логику к массиву (хотя я не понимаю, как это происходит), что является причиной ошибки, но я не знаю, как ее переписать, чтобы я мог получить контурный график.
Я всюду искал ответ, но либо не понял его, либо его нельзя было решить с этой проблемой.
Есть предложения?
Большое спасибо