【问题标题】:How can I simulate with a input u with ODE45 - MATLAB如何使用 ODE45 使用输入 u 进行模拟 - MATLAB
【发布时间】:2020-05-01 18:43:03
【问题描述】:

我有两个函数句柄:

A = @(x, y, z) [10*y - 10*x; 28*x - z*x - y; x*y - 8/3*z]
B = @(u) [u; 0; 0]

如何在 MATLAB 中使用控制变量 u 模拟它们?控制变量 u 随时间变化。

【问题讨论】:

    标签: matlab simulation differential-equations ode45


    【解决方案1】:

    你可以使用:

    [t,out] = ode45(@(t,vars) myfunction(t,vars,U),tsim,xyz0);
    x = out(1);
    y = out(2);
    z = out(3);
    

    其中Uu的值,tsim是模拟时间(最终时间o时间向量),xyz0是变量xyz的初始条件向量,形式为[x0 y0 z0]。 myfunction 定义为:

    function dxyz= myfunction(t,vars,u)
    
        x = vars(1);
        y = vars(2);
        z = vars(3);
    
        % u varying with a condition
        if t>1
            u = newValue;
        end
    
        % u is a function of time u=f(t)
        u = 2*t;
    
        A = [10*y - 10*x; 28*x - z*x - y; x*y - 8/3*z];
        B = [u; 0; 0];
        dxyz = A+B;
    
    end
    

    【讨论】:

    • 但你在变化:)
    • 对不起!忘了告诉你!
    • “u”如何变化? “u”会随时间变化吗?
    • 是的!随时间变化。
    • 听说interp1可以用来从u中插入一个变量U,时间长度为t。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    相关资源
    最近更新 更多