У меня проблема с выводом этого кода:
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():
maxvalues=[]
for Z in range (1,106):
values=[]
for A in range (Z, 3*Z+1):
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
values.append(C)
D=max(values)
E=values.index(D)
maxvalues.append(D)
print ("the most stable nucleon for an atomic number",Z," has a nucleon number",E+Z,"and its binding energy per nucleon is",D,"mEv")
F=max(maxvalues)
G=maxvalues.index(F)
print ("the most stable nucleon of them all has an atomic number",G,"and its binding energy per nucleon is",F,"mEv")
Как видите, эта функция выполняет вычисление за два цикла, прежде чем перейти к следующему числу Z, она сохраняет все результаты.для этого одного конкретного числа Z и нескольких A (диапазона (Z, 3 * Z + 1)) в массив, затем находит индекс максимального значения и печатает его для этого конкретного числа Z, здесь нет проблем.
Но я хотел найти число Z с наибольшим значением из всех.Поэтому я заставил его повторить процесс для максимумов для каждого числа Z.
Когда я запускаю функцию, она печатает все числа Z, ее самый стабильный изотоп (число E + Z) и соответствующую энергию связи akaмаксимальное значение вычислений для этого конкретного числа Z и чисел A в диапазоне (Z, 3 * Z + 1).В последней строке следует распечатать число Z, имеющее наибольшее значение из всех чисел Z. Программа говорит, что это число Z = 27.Однако, когда я смотрю на значения, напечатанные для всех чисел Z, я вижу, что ответ должен быть Z = 28.Почему не выводится правильное число Z в последней строке вывода?