2014-04-19 7 views
0

Salut, je suis nouveau à Scilab et n'ai pas beaucoup de fond mathématique. Je suis code suivant pour un autre exemple et me montre erreur 10000 pour le code suivant:Scilab Error 10000

function [z]=f(x,y) 
    z=0.026*(1.0-(y/ym))*y; 
endfunction; 

ym=12000; 
x0=1950;y0=2555;xn=5;h=10; 

x=[x0:h:xn]; 

y=ode("rk",y0,x0,x,f); 

disp("x  y") 
disp("--------") 
disp([x'y']); 

function z=fe(x) 
z=ym/(1-(1-ym/y0)*e^(-k*(t-t0))); 
endfunction; 

xe=(x0:h/10:xn); 

n=length(xe) 
for i=1:n 
    ye(i)=fe(xe(i)); 
end; 

plot (x,y,'ro',xe, ye,'-b');legend ('rk4','Exact',3); 
xtitle('solving dy/dx=k(1-y/ym)y','x','y'); 

J'ai travaillé dans plusieurs autres messages d'erreur. Je suis perdu et je ne sais pas si le problème est dans le code ou la façon dont j'ai réglé le problème. Ce qui suit est le message d'erreur actuel:

!--error 10000 
plot: Wrong size for input argument #2: A non empty matrix expected. 
at line  57 of function checkXYPair called by : 
at line  235 of function plot called by : 
plot (x,y,'ro',xe, ye,'-b');legend ('rk4','Exact',3); 
at line  25 of exec file called by : 

J'apprécierais toute aide. Merci

Répondre

0

Commencez par ajouter clear comme première instruction, cela effacera toutes les variables avant d'exécuter votre fonction. Dans le script ci-dessus, vous ne déclarez pas ye.

Également l'instruction x=[x0:h:xn]; est étrange avec les valeurs pour x0, h et xn. Vous essayez maintenant d'obtenir une liste de valeurs x commençant à 1950 et avec des étapes positives de 10 jusqu'à 5 est atteint.

Je recommande d'essayer chaque ligne et voir si le résultat est comme prévu. Vous n'avez pas besoin de tout savoir sur le code, mais probaly x et y doivent contenir au moins quelques valeurs. L'erreur vous indique qu'elle s'attendait à une matrice non vide pour l'argument 2. Ceci est y, donc il est essentiellement dit que y est vide.