Показать сообщение отдельно
  #9  
Старый 10.07.2012, 09:51
ZolotukhinDen ZolotukhinDen вне форума
Прохожий
 
Регистрация: 03.07.2012
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Arvo
Код:
if (Gx(En)=gamma) then EL:=(En/Ep);

Вот после этого думаю надо добавить проверку на случай, если Gx(En)<>gamma
А точнее в самом начале функции присвоить Result какое-то значение.

Можно еще все это дело забабахать в еще один цикл while/repeat который выполняется пока не будет достигнуто условие Gx(En)=gamma. Сбособ конечно ужасный, но больше ничего не могу предложить. Если уж совсем жалко процессорного времени, то можно и сделать огранчение на кол-во итераций цикла. Но опять же придется задавать значение при невыполнении условий.
Добавлял проверку на случай Gx(En)<>gamma, присваивая значение функции EL:=0, такой ошибки разумеется не наблюдалось, однако тогда вообще потерь энергии не было - у электронов как было например 5000 эВ, так и оставалось, и энергетический спектр - доля электронов с определенной потерей энергии - вообще был просто столбиком, что неправильно. Код как мне кажется изначально верен - ведь пока Nan не выскакивает, спектр строится нормально.
Ответить с цитированием