2014-04-19 2 views
0

안녕하세요 저는 Scilab을 처음 사용하며 수학적인 배경이별로 없습니다. 나는 또 다른 예를 들어, 코드를 다음 한 다음 코드에 대한 오류 10000 표시되는 오전 :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'); 

나는 여러 가지 다른 오류 메시지를 통해 일했다. 내가 잃어 버렸고 문제가 코드에 있거나 문제를 설정하는 방법인지 알지 못합니다. 현재 오류 메시지는 다음과 같습니다.

!--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 : 

나는 도움을 얻을 것이다. 감사합니다

답변

0

첫 번째 문으로 clear을 추가하여 시작하십시오. 그러면 함수를 실행하기 전에 모든 변수가 지워집니다. 위의 스크립트에서는 ye을 선언하지 않습니다.

문도 x=[x0:h:xn];x0, hxn의 값으로 이상합니다. 이제는 1950 년부터 x 값의 목록을 얻으려고하고 10의 긍정적 인 단계를 5에 도달 할 때까지 얻으려고합니다.

각 줄을 시도하고 결과가 예상대로 표시되는지 확인하는 것이 좋습니다. 코드에 대한 모든 것을 알아야 할 필요는 없지만, x 및 y는 적어도 일부 값을 포함해야합니다. 오류는 인수 2에 대해 비어 있지 않은 행렬이 예상됨을 나타냅니다. 이것은 y이므로 본질적으로 y이 비어 있다고 말합니다.