0

私を助けてください!次のエラーが表示されます:「Step1 の使用中にエラーが発生しました。入力引数が多すぎます。

Step2 のエラー (22 行目) [y0,yp0] = feval('Step1',0, y0, yp0,{y,[]});"

ここに私のプログラムの本体があります

 -    function Step1
    global a p1 p2 T s k1 k2 k3 k4 k5 
    k1=30;%F
    k2=10; %kon
    k3=100;%Stot
    k4=400;%kns
    k5=0.3; %koff
    a=4.6;
    p1=2;
    p2=5;
    T=20;
    s=1;
    %t0=0;
    %t=-10:1: 10;
    t0=-10;

    y=[0,0,0,0];
    y0=[0,0,0,0];
    yp0=[0,0,0,0];
    y=zeros(size(y));
    t=zeros(size(y));
    A = y(1); %Cafree
    B = y(2); %CaF
    C = y(3);  %CaS
    O = y(4);  %Caup
    %diff (A) = yp(1); %Cafree
    %diff(B) = yp(2); %CaF
    %diff(C) = yp(3);  %CaS
    %diff(O) = yp(4);
    if (t<0)
    [t,A,B,C,O]=[diff(B)-k1*diff(A),...
           diff(C)-k2*A*(k3-C)+k5*C,...
        diff(A)+diff(B)+diff(C)+diff(O),...
        diff(O)-k4*A,...
        diff(A)+diff(B)+diff(C)+diff(O)]
    if (0<=t<=T)
       [t,A,B,C,O]=[diff(B)-k1*diff(A),...
           diff(C)-k2*A*(k3-C)+k5*C,...
        diff(A)+diff(B)+diff(C)+diff(O),...
        diff(O)-k4*A,...
        diff(A)+diff(B)+diff(C)+diff(O)-diff(s-a*exp(-t/p1)+(a-s)*exp(-t/p2))];
     else
       [t,A,B,C,O]=[diff(B)-k1*diff(A),...
           diff(C)-k2*A*(k3-C)+k5*C,...
        diff(A)+diff(B)+diff(C)+diff(O),...
        diff(O)-k4*A,...
       diff(A)+diff(B)+diff(C)+diff(O)-diff(-a*exp(-t/p1)+(a-s)*exp(-t/p2)+s*exp(-(t-T)/p2))];
       end
    % Step1= [t,A,B,C,O]

    m=plot(t,A,B,C,O)

    end
    %p=nargout(Step1)

        end


****************************************88888888888888888888888888888

function calcul = Step2( t,y,yp)
global a p1 p2 T s k1 k2 k3 k4 k5 
k1=30;%F
k2=10; %kon
k3=100;%Stot
k4=400;%kns
k5=0.3; %koff
a=4.6;
p1=2;
p2=5;
T=20;
s=1;
% yp=sym(yp,'t','real')
%  syms yp set
 yp=[0,0,0,0];
% nargin(Step1)
t0=0;
y=[0,0,0,0];
y=zeros(size(y));
A = y(1); %Cafree
B = y(2); %CaF
C = y(3);  %CaS
O = y(4);  %Caup
t=[0:1:10];
y0=[0,0,0,0];
yp0=[0,0,0,0];
% % yp=[0,0,0,0];
% diff(A,t) = yp(1); %Cafree
% diff(B,t) = yp(2); %CaF
% diff(C,t) = yp(3);  %CaS
% diff(O,t) = yp(4);
options=odeset('RelTol',1e-5,'AbsTol',1e-4,'Jacobian',@Jac);
[y0,yp0] = feval('Step1',0, y0, yp0,{y,[]});
% [y0,yp0] = decic('Step1',0, y0,[1 1 1 1], yp0,[0 0 0 0],{y,[]});
[t,y]=ode15i('Step1',[0 10],y0,yp0,per,options);
plot(t,y)
grid on
return
end

お手伝いありがとう!!インナ

4

1 に答える 1

0

関数を定義しますStep1

function Step1

これは、Step1 を出力を提供しない、または入力を取得しないと定義しているにもかかわらず、fevalでは入力を渡す (そして出力を期待する) ことを意味します。あなたの関数Step2が定義されています:

function calcul = Step2( t,y,yp)

出力calcu1と入力がありt,y,ypます。Step1の形式になるように再フォーマットしますStep2

于 2013-07-13T14:38:54.537 に答える