如何在 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=t0
和t=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 函数 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SWIFT(不是 Objective C)中设置 CGPDFOperatorTableSetCallback [关闭]