J'aimerais créer une petite interface graphique avec Scilab. Pour apprendre son utilisation, j'ai réaliser le script ci-dessous qui sert à étudier la loi de décroissance radioactive.
Mais ça ne marche pas et l'erreur est assez bizarre: il n'arrive pas à extraire les variables pour faire tourner la fonction lorsque l'on appuie sur calcul. Ce qui est bizarre, c'est que dans le prompt scilab, lorsque je tape: N0=get(guientry(1),"string") il me donne la bonne valeur... mais pas lorsque je lance le script.
La fonction marche très bien indépendamment de la fonction "get".
Si quelqu'un a une idée...
voici le code:
- Code: Tout sélectionner
labels1=["Nombre de noyaux à t=0", "pas de calcul", "temps total","lambda", "autre pas de calcul"];
values1=string(zeros(1,5));
guiw1=400; guih1=300; guih2=90;
//close(1);
figure(1,"position",[0,0,guiw1,guih1+20],"figure_name","Décroissance radioactive");
uicontrol("Min",1,"style","text","string","paramètres","position",[0,guih1,guiw1,20],"horizontalalignment","center","backgroundcolor",[1,1,1]);
for k=1:size(labels1,2)
uicontrol("Min",1,"style","text","string",labels1(k),"position",[10,guih1-k*20,200,20],"horizontalalignment","left");
guientry(k)=uicontrol("Min",1,"style","edit","string",values1(k),"position",[210,guih1-k*20,180,20],"horizontalalignment","left");
end
guivariables=["N0","dt","T","lambda","dt1"];
uicontrol("Min",1,"style","pushbutton","string","Calcul","position",[150,5,guiw1/4,25],"callback","radio","horizontalalignment","center","background",[1,0.1,0.1]);
function [tabt,tabN]=radio(N0,dt,T,lambda,dt1)
N0=get(guientry(1),"string");
dt=get(guientry(2),"string");
T=get(guientry(3),"string");
lambda=get(guientry(4),"string");
dt1=get(guientry(5),"string");
t0=0;
P=T/dt;
tabt=[t0];
tabN=[N0];
N=N0;
for p=0:P-1
t=t0+p*dt;
N=N+dt*(-lambda*N);
tabN=[tabN N];
tabt=[tabt t+dt];
end
clf();
plot2d(tabt,tabN,style=-1)
t0=0;
P=T/dt1;
tabt=[t0];
tabN=[N0];
N=N0;
for p=0:P-1
t=t0+p*dt1;
N=N+dt1*(-lambda*N);
tabN=[tabN N];
tabt=[tabt t+dt1];
end
plot2d(tabt,tabN,style=-3)
t=0:1:T;
Nth=guivariables(1)*exp(-lambda*t);
plot(t,Nth,style=-7)
endfunction