Цитата:
Сообщение от 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 не выскакивает, спектр строится нормально.