【问题标题】:Error while solving State space equations using ode45使用 ode45 求解状态空间方程时出错
【发布时间】:2020-03-04 05:53:19
【问题描述】:

我的代码应该在程序结束时输出一个 X 的列向量。我遇到了很多错误。 请帮忙!

    clc;
    clear;
    t0=0;
    tend=.001;
    T=[t0 .00005];
    T1=[.00005 tend];
    temp=1;
    X(:,1) = [0;0;0;0];

    for k=1:2   
    for i= temp:50*(k)
            [T,X]=ode45(@(T,X)sys(T,X,A1,B1),T,X(:,1));
        else
            [T1,X1]=ode45(@(T1,X1)sys1(T1,X1,A0,B0),T1,X(:,end));
        end
    end
    temp=50;
    end 

    function Xdot = sys(T,X,A1,B1,U)
    Xdot= A1*X + B1*U;
    end
    function Xdot = sys1(T1,X,A0,B0,U)
    Xdot= A0*X + B0*U;
    end

错误如下:

Not enough input arguments. 
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.
 Error in ode45 (line 115)
    odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, 
    varargin);

【问题讨论】:

  • 请您将错误添加到您的帖子中。
  • @DaneBrouwer 我添加了错误。

标签: matlab state-space ode45


【解决方案1】:

您似乎没有将参数 U 设置为函数 syssys1

我已经用<U missing>突出了下面对应的地方:

if sw(i)==0 && X(2,i)> vdon || sw(i)==1 && X(1,i)>0
    sw(i+1)=1;
    [T,X] = ode45( @(T,X) sys(T,X,A1,B1, <U missing> ), T, X(:,1) );
else
    sw(i+1)=0;
    [T1,X1] = ode45( @(T1,X1) sys1(T1,X1,A0,B0, <U missing> ), T1, X(:,end) );
end

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    相关资源
    最近更新 更多