Я пытаюсь создать цикл while, который вычисляет тормозную способность и диапазон тяжелой заряженной частицы, используя уравнение Бете-Блоха. У меня проблемы с настройкой цикла для сохранения каждого значения во время итерации цикла.
Идея состоит в том, что у меня есть уравнение «Остановочная сила» (-dEdx), которое выплевывает значение, сколько энергии теряется в течение dx, когда дано начальное значение энергии.
В приведенном здесь примере кода начальная энергия = 250 (МэВ), и я пытаюсь рассчитать новую энергию для каждого дх. Это должно выглядеть примерно так
E = 250, 249,99, 249,96 и т. Д.
Я не уверен на 100%, есть ли у цикла какие-либо другие проблемы, но я в основном не могу понять, как сохранить каждое отдельное значение E, чтобы я мог построить график того, что происходит с энергией на всем расстоянии, х.
Формула, по-видимому, выделяет только 1 значение для E и не заполняет все остальные столбцы.
Любая помощь будет принята с благодарностью!
clear
clc
c = 2.998e10;
pm = 938.272; % proton mass
em = 0.510991; % electron mass
re = 2.818e-13; % classical electron radius
z = 1; % charge of proton (+)
na = 6.022e23; % avagadros number
rho = 1;
dx = 0.01;
x = 0:dx:350; % 350mm = 35cm
n = na.*10./18.*rho;
E = x*0;
E(1) = 250;
while E > 0
gam = E./pm + 1;
beta = sqrt(gam.^2-1)./gam;
dEdx = (4.*pi.*n.*z^2.*em.*re.^2)./beta.*(log(2.*em.*c.^2.*beta.^2./(75.*(1-beta.^2)))-beta.^2);
dE = -dEdx.*dx;
E(x(E)) = E(x(E)) + dE;
end
Может быть полезно придерживаться всех значений gam, beta, dEdx, dE, E для каждой итерации. например
E = [250, 249,99, 249,96, ..., 0]
Заранее спасибо!