问题标签 [ode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3655 浏览

matlab - matlab ode45 检索参数

我正在 Matlab 中试验 ode45。我已经学会了如何将参数传递给 ode 函数,但我仍然有一个问题。假设我想计算汽车的轨迹(速度曲线),并且我有一个函数,例如getAcceleration,它可以为我提供汽车的加速度以及正确的档位:[acceleration, gear] = getAcceleration(speed,modelStructure)其中modelStructure代表汽车的型号。

ode 函数将是:

然后我以这种方式调用 Ode45 积分器:

问题是:如何获得矢量存储齿轮?我应该有类似的东西[t,y,gear]=ode45(....)还是应该geary向量内?


我一直在处理我的代码并使用事件函数,我现在能够获得汽车“齿轮”的变化(作为事件)。现在我有一个与相同代码相关的新问题。想象一下,当我评估 de 'dy' 向量时,我能够得到一个进一步的值 Z,这让我可以大幅加快调用加速度计算 (getAcceleration):

并假设我也能够在初始条件下计算 Z。问题是我无法计算 Z 导数。

有没有办法通过 Z 值抛出步进而不集成它?

多谢你们。

0 投票
0 回答
3328 浏览

matlab - BVP 的射击方法解决方案的 ode45/fsolve 问题

我正在尝试使用拍摄方法解决 MATLAB 中的边界值问题。但是,当我尝试通过 fsolve 传递我的函数时,我收到如下警告:警告:在 t=-9.462647e+001 失败。如果不将步长减小到低于时间 t 允许的最小值 (2.273737e-013),则无法满足积分容差。

我尝试了一些常见的解决方法,例如使用不同的 ODE 求解器并更改 ODE 求解和 fsolve 中的容差,但无济于事。目前,当我对我的参数运行 fsolve 时,它​​没有任何改变,这与我最初的猜测相同。

我已经包含了主脚本文件的代码以及 fsolve 调用的函数文件。

0 投票
1 回答
10899 浏览

matlab - Matlab - 求解三阶微分方程

如何使用 ODE45 函数求解这个方程?

我试过这个:

但我需要将 X 部分放在等式中 - 我不知道如何......

0 投票
1 回答
4812 浏览

matlab - MATLAB:使用 ode45 时是否可以有两个事件值?

我想对我的 ode45 运动方程计算有两个限制:位置和时间。我已经让时间事件开始工作,但我不确定是否以及如何添加另一个事件来限制位置。编辑:我在一个 ODE 方程中也有许多不同的粒子耦合在一起,并且一旦它们到达“屋顶”就需要它们单独停止,因为它们都以不同的速度行进......我能通过事件来实现这一点吗?我有一个想法,我将如何做到这一点,但它非常复杂,可能会很慢......

0 投票
1 回答
4252 浏览

matlab - 在 Matlab 中使用 ode45 进行弹丸运动

我正在尝试在 Matlab 中使用阻力对弹丸运动进行建模。一切都很完美......除了我不知道如何让它在“子弹”击中地面时停止。

我最初尝试了一个迭代循环,定义一个数据数组,并在 y 值为负时清空该数组的单元格......不幸的是,ode 求解器不太喜欢这样。

这是我的代码

我认为这会在 y=0 时定义一个事件并停止射弹,但它什么也没做。我究竟做错了什么?

0 投票
1 回答
1198 浏览

matlab - 使用 Matlab ODE 求解器收敛

嗨,我正在解决一个初始值 ODE 问题,并希望能够绘制收敛图。我检查了文档,发现在每个时间步都会计算错误,但我找不到返回这个值的方法。有没有人有任何想法,也许是通过玩输出函数(来自 odeset)。谢谢

0 投票
1 回答
2295 浏览

matlab - 编写实现欧拉方法的matlab函数?

我应该编写一个 MATLAB 函数,它采用 y'(t) = a*y(t) +b 形式的一阶常微分方程,初始点 y(t0)=y0 作为输入,并计算解的前 15 个点. 还绘制前 15 个点的解曲线。我们要求解的方程是 ;y'(t) = 4*y(t)+1,初始点 y(0)=0。

对于这个函数,我写了下面的代码,但这给了我一个关于 y 的错误。我应该如何正确实现欧拉函数?而且我无法确定如何绘制解曲线..

0 投票
1 回答
142 浏览

function - Matlab ode求解器使用函数中的时间来获取事件中的“值”

我进行了广泛的搜索,并认为我不会是唯一一个遇到这个问题的人,但它看起来像我。

我正在通过 ode15s 解决一首颂歌(我的问题可能很棘手),我使用“事件”选项来找到我的兴趣点。问题是:我在“价值”中使用的等式取决于(除其他外)特定时间(因此价值= f(t,y,y'),我找不到将当前时间传递给这个函数,只有 y 向量可用。

有人有什么想法吗?在此先感谢大家,祝大家假期愉快!

0 投票
1 回答
769 浏览

python - 离散值的 ODE 集成

我想使用scipy.integrate.ode求解器。我只能将可调用函数定义f为离散点数组(因为它取决于先前迭代的积分结果)。但从文档看来,集成商希望可调用函数是一个连续函数。我想需要进行某种插值。求解器可以自己处理这个问题,还是我需要编写一些插值程序?是否有一些解释它的 scipy 文档/教程?

0 投票
1 回答
6973 浏览

matlab - 我可以及时向后运行 ode45 吗?

我使用 ode45 来求解微分方程,但 tspan 始终必须使系统及时向前运行。我可以让 ode45 将系统向后运行到负 t 吗?

我遇到的具体问题使用了一个上升指数函数,即从 t=-infinity 到 t=0 的 a*exp(at),对于所有 t>0,该函数为零。如您所见,在我的问题中不可能翻译此函数并使用区间 t=0 到 t=infinity。所以,我希望 ode45 在负 t 下工作。

谢谢!

编辑:经过一番思考,我意识到我的问题措辞很糟糕,而且我的理解也很差,所以让我在这里重申一下。

我的 ODE 的形式为 x'=f(t)x,其中 f(t)=a*exp(at) 从 -infinity 到 0。系统从 t=-infinity 的一些初始条件开始。另一方面,ode45 要求 tspan 为正,并且还需要 t=0 时的初始条件。那么我怎样才能改变这两个标准呢?

谢谢 :)