0

当我尝试在 MATLAB 中求解两个方程的 ODE 系统时,我遇到了一些困难。

我正在使用的代码如下:

x0=-1;              %Initial condition for variable x
y0=-10;             %Initial condition for variable y
dx=@(t,x,y) y+2.*t; %First ODE
dy=@(t,y) y;        %Second ODE
f={dx;dy};          %Array that contains the first and second ODE's

[t,g]=ode15s(f,[0 1],[x0 y0]);  %Call for ode15s solver

当我执行此代码时,我收到以下错误:

'cell' 类型的输入参数的未定义函数 'exist'。

我不想创建样式的功能

function f=myodes(t,x,y)
etc etc
end

因为此代码旨在嵌套在函数代码中,然后将插入到 Simulink 中的 MATLAB Function 模块中,该模块需要使用 Simulink 文件中其他模块的输出作为输入。

我不能直接在 Simulink 上执行此操作,因为该代码实际上是我需要求解的一组更大方程的练习,其中自变量不是时间而是距离。

任何帮助,将不胜感激。

谢谢!

4

1 回答 1

1

进行替换

z ≣ [x; y]

这样

dz ≣ [dx; dy]

您将其实现为

x0 = -1;    %// Initial condition for variable x
y0 = -10;   %// Initial condition for variable y

%// The ODEs. Note that z ≣ [x; y]
f = @(t,z) [
    z(2)        %// First ODE
    z(2)+2*t];  %// Second ODE

%// Call for ode15s solver
[t,g] = ode15s(f, [0 1], [x0 y0])

剩下要做的就是正确解复用您的输出。

于 2014-01-20T15:11:28.150 回答