как получить кривую в scilab

#c #scilab

#c #scilab

Вопрос:

Я сделал следующий алгоритм:

 c=3e8;//m/s 
h=6.6e-34;//J*s 
lambda=200e-9;//m 
E=h*c/lambda;//J 
k0=(2*E)/(h*c);//m^-1 
l=10; 
n=1.33; 
rd=20*10^-6; 
r=1*10^-9:200:10*rd;//m 
for i=1:length(r) 
if r(i)<=rd then 
    Ep(i)=(E*(n^2-1)) (E*l*(l 1)/(k0^2*r(i).^2));//J 
elseif r>rd then 
    Ep(i)=(E*(n^2-1)) (E*l*(l 1)/(k0^2*r(i).^2)); 
end 
end 
clf 
plot2d(r,Ep,style=1); 
 

Я должен получить кривую, и на данный момент моя программа вычисляет только значение.

Комментарии:

1. Нам нужно немного больше контекста относительно того, в чем вопрос, и что это за кривая и так далее? Может быть, какой-то другой код, если это уместно.

2. single — rd это единственное значение r , которое, в свою очередь, заставит ваш цикл for выполнять только 1 итерацию и, таким образом, приведет к одному значению.

3. ну, как вы можете видеть, у меня есть следующие константы: h (plank const), c (скорость света), лямбда (длина волны), l (момент импульса и n (индекс); Мое уравнение: Ep = E * (n ^ 2-1) (El * (l 1))/k0^2 *^r2; где E = hc / лямбда (и представляет энергию падения), k0=2* E / h * c (и представляет волновое число);

4. У меня есть 2 интересующих случая:

5. 1 — это то, что происходит, когда r> rd (и первая часть моей оценки должна быть 0) и 2, когда r<= rd; извините, я забыл вам сказать: r — радиус частицы, и это моя переменная; и rd — радиус предела; если вы знаете физику, этоэто своего рода проблема с барьером потенциала;

Ответ №1:

 c=3.000D 08;
h=6.600D-34;
lambda=0.0000002;
E=h*c/lambda;
k0=(2*E)/(h*c);
l=10;
n=1.33;
rd=0.00002; 
r=1.000D-09:0.000002:10*rd;
for i=1:length(r)
    if r(i)<=rd then
        Ep(i)=(E*(n^2-1)) (E*l*(l 1)/(k0^2*r(i).^2));
    elseif r>rd then
        Ep(i)=(E*(n^2-1)) (E*l*(l 1)/(k0^2*r(i).^2));
    end
end
plot(log(r),log(Ep'));
 

Это график:

График