Как сделать контурный график условной функции с двумя переменными? - PullRequest
0 голосов
/ 07 мая 2019

Я хочу сделать контурный график условной функции, но получаю ошибку. Это код:

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:

Я думаю, что я каким-то образом применяю логическую логику к массиву (хотя я не понимаю, как это происходит), что является причиной ошибки, но я не знаю, как ее переписать, чтобы я мог получить контурный график. Я всюду искал ответ, но либо не понял его, либо его нельзя было решить с этой проблемой.

Есть предложения? Большое спасибо

...