尝试在MATLAB中求解ODE系统时会产生以下错误:“;未定义函数';存在';对于类型为';单元格'&引用;
当我试图在MATLAB中解两个方程的常微分方程组时,我遇到了一些困难 我使用的代码如下所示:尝试在MATLAB中求解ODE系统时会产生以下错误:“;未定义函数';存在';对于类型为';单元格'&引用;,matlab,simulink,ode,function-handle,undefined-function,Matlab,Simulink,Ode,Function Handle,Undefined Function,当我试图在MATLAB中解两个方程的常微分方程组时,我遇到了一些困难 我使用的代码如下所示: 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
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函数块中,该函数块需要使用Simulink文件中其他块的输出作为输入
我不能直接在Simulink上实现,因为该代码实际上是一个需要求解的更大方程组的实践,其中自变量不是时间而是距离
任何帮助都将不胜感激
谢谢 进行替换
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])
唯一要做的就是正确地解复用输出。是什么让你认为你不能使用你提议的形式的函数?请注意,Simulink解决了系统在每个时间步所表示的微分方程,因此没有必要(您也不应该这样做)调用
ode15s
并尝试在MATLAB函数块中求解微分方程。@Rody Oldenhuis:我查看了MATLAB帮助中的嵌套函数部分,但我相信这可以在不需要嵌套函数和更少代码行的情况下完成。你的回答证明了我的观点。@am304:我不能让Simulink单独处理我的微分方程,因为我的自变量不是时间(Simulink取的独立变量也是时间);在我的代码中,时间控制块的输入,但不控制块内执行的操作。我只是好奇这是否会在Simulink环境中以我所希望的方式工作。感谢您的输入。@elporsche但是ode15s
解关于时间的微分方程?