如何在 Matlab 中设置 ode 函数 [关闭]

Posted

技术标签:

【中文标题】如何在 Matlab 中设置 ode 函数 [关闭]【英文标题】:How to setup ode functions in Matlab [closed] 【发布时间】:2021-02-21 17:07:40 【问题描述】:

对我来说,不清楚如何将 ode45 用于 matlab。我有一个向量 u。 有人知道这个错误是什么吗?

function [v, t, d] x =deep(l)
x = max(u(:,1));
v = u;
t = 1;
d = 1;
options = odeset('Events', @deep)

但是当我调用 ode45 时

ode45(@odefun, [0 85], [0 0], options)

我得到这个错误:

  eventValue = feval(eventFcn,t0,y0,eventArgs:);
Error in ode45 (line 148)
  odeevents(FcnHandlesUsed,odeFcn,t0,y0,options,varargin); ```

【问题讨论】:

那个错误不完整,你能告诉我们完整的错误吗? 【参考方案1】:

你的文字和代码有些不一致。

    “我有一个向量 u”:

但是你的函数定义是:

function [v, t, d] x =deep(l)
x = max(u(:,1));
v = u;
t = 1;
d = 1;

函数定义中的向量u 在哪里?

ode45 函数集成了以下类型的函数:

y' = f(t,y)

你应该传递给 ode45 的函数应该有两个参数并且应该返回一个输出:

输入t,独立参数。该函数集成在值t=t0t=tf之间; 输入y,因变量的向量。 输出dy,一个带有因变量导数的向量。

    当你调用ode45函数时:

    ode45(@odefun, [0 85], [0 0], 选项)

你还没有在任何地方定义odefun,MATLAB 应该在那里抛出错误。

您必须更改deep 函数和ode45 调用才能使其工作:

dy = deep(t,y)
dy = ? <- define it

并称它为:

ode45(@deep,tspan,y0)

【讨论】:

我想我忘记了将向量放入其中。给出了这个功能。而且我必须更改 ode45 在第一个低点后停止计算的函数。 ``` 函数 x=deep(l) [t, u]=ode45(@b, [0 91], [0 0 l]); x = max(u(:,1)); ``` 但对我来说,我不清楚我应该如何改变在第一个低点之后的函数,计算,停止。

以上是关于如何在 Matlab 中设置 ode 函数 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHPExcel 中设置流内容? [关闭]

如何在 pcshow Matlab 中设置视角?

如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback [关闭]

如何在 MATLAB GUI 中设置滑块来控制视频?

如何在 Matlab 模式识别工具箱(PRTools)中设置连续标签

在构造函数中设置默认参数?语法[关闭]