问题标签 [ode45]

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 回答
1589 浏览

matlab - 使用 ODE45 求解 ODE 系统

我正在尝试学习如何使用 MATLAB 求解微分方程组(洛伦兹方程)并将每个解绘制为 t 的函数

其中σ = 10, β = 8/3, 和ρ = 28, 以及x(0) = −8, y(0) = 8, 和z(0) = 27.

这是我正在使用的代码:

但是,这会产生错误,我该如何解决?我不确定缺少哪些输入参数或哪里出错了。我感谢任何帮助,谢谢。

没有足够的输入参数。

示例中的错误(第 9 行) xprime=[-sig x(1) + sig x(2); rho*x(1) - x(2) - x(1) x(3); -β x(3) +
x(1)*x(2)];

0 投票
1 回答
319 浏览

matlab - 数学建模 - Matlab ode45-for 循环

我需要编写一个代码来获取具有“历史”的数学模型的相图。我会在代码之后解释。

详细清单:

  • S=健康人群
  • I=感染人群
  • N=总人口
  • b=出生率(15年前S
  • m=死亡率
  • l=接触感染机会
  • u=疾病死亡率

P并且S仅在不同的时间段(P= 15 年前S)表示相同的事物,并且所有P值都已给出。

代码需要返回 和 的相S图。我绝对不是 100% 确定我的代码是否适合我的目标,但这就是我想出的。当前代码运行但永不结束。欢迎对我的代码提出任何建议或帮助修复错误。IN

如有必要,我还考虑在 ode45 和 plot 之间的 for 循环中添加以下内容:

0 投票
0 回答
60 浏览

matlab - 在 MATLAB ode45 中,如何解决参数依赖于其他参数而不依赖于时间的 ODE 系统?

考虑运载火箭的方程

dv/dt = T/m - D/m - g*sin(gam)

v*d(gam)/dt = -g(-v^2/W)*cos(gam) 其中 W 是一个常数

dh/dt = v*sin(gam)。

其中 v 代表速度,T 是推力。

我的推力值是离散的,因此我必须使用interp1,这很简单。

但是,我的阻力 D ** 取决于 **velocity本身,我该如何合并呢?

如您所见,一个参数是另一个参数的函数。

0 投票
1 回答
402 浏览

matlab - 将参数传递给函数句柄时出错

假设我们有以下函数:

为了运行这个程序,让我们使用以下测试文件:

我尝试将参数传递给函数句柄,

但它给了我以下错误:

一种解决方案涉及使用全局变量,如下所示:

但是运行时间太长了。

我还能如何解决这个问题?我想要的是传递不同的参数,如果我在里面写这样的代码

然后这将重复几次。

0 投票
0 回答
57 浏览

matlab - 我无法解决的 ODE45

我在使用 ODE45 时遇到问题。我在下面给出了matlab代码。我无法启动求解器。可能是语法错误。如果你能找到问题,我会很高兴。

它是填充床反应器的建模和仿真。然而; 在开始真正的模拟之前我得到了错误:)

0 投票
1 回答
82 浏览

matlab - 如何调试这个 Matlab 代码来模拟滑翔机下降?

我有这个 Matlab 项目,但由于某种原因,我无法停止思考它,因为我无法让它工作。

客观的:

这是一个 MATLAB 脚本,可以计算从 10000 英尺高空坠落的滑翔机的压力、温度和密度变化。当它下降时,我们想要使用计算出的这些新值,然后插入一个函数,该函数有 4 个方程,需要使用 ode45 以及 PT 和 Rho 的新值在每个点进行微分。

这是主要代码:

这是功能

我对 Matlab 不是很好,但我已经尽力了!我去找我的教授寻求帮助,但他们说他们太忙了。我什至跟踪了我认识的每一位学长,他们都说他们不知道该怎么做。我的下一个项目将很快被分配,我认为如果我不能做到这一点,那么我将无法进行下一个项目。

0 投票
2 回答
1651 浏览

matlab - MatLab ode45 最小时间步长

我正在尝试使用 MatLab 和 ode45 函数求解微分方程。问题是如何更改最小步长?我想让它更大以避免太小的步骤。我正在尝试这样做:

  • t - 时间
  • q - 找到的解决方案
  • dqdt2 - 我的文件功能
  • q0 - 初始条件
0 投票
1 回答
331 浏览

arrays - MATLAB ODE45:只保存最后一个解决方案

我只想让 ODE45 保留最后一个解决方案。而是从 tspan = [t0 tf]; 返回所有解决方案 我只希望返回的向量成为 tf.

我想这样做的原因是为了避免以下错误:

使用 horzcat 时出错 请求的 442368x1828 (6.0GB) 数组超出了最大数组大小首选项。创建大于此限制的数组可能需要很长时间并导致 MATLAB 变得无响应。有关更多信息,请参阅数组大小限制或首选项面板。

ode45 错误(第 428 行)yout = [yout, zeros(neq,chunk,dataType)];

0 投票
0 回答
126 浏览

matlab - 将变量传递给PARFOR内的ODE求解器中使用的函数

我有一个 ODE 函数,我试图用不同的参数多次求解。这是功能

这是我用来通过更改函数中的变量来多次求解的求解器。

在这种情况下,我正在更新 R0。在其他情况下,我正在更新 f 或 ps (全局变量)。我正在尝试使用 PARFOR 来加快速度,但是在使用 PARFOR 时我找不到将这些全局变量传递给函数的方法。

提示 ?

0 投票
1 回答
286 浏览

matlab - 为什么我在 Octave 的 ODE45 模拟中只得到 NaN och Inf?

我正在使用带有 ODE45 的 Octave 来模拟 ODE 方程组。但问题是 ODE 模拟给出了错误的值。看看这个 Octave 代码:

这给出了:

但在 OpenModelica 中,我有以下代码:

结果如下所示:

在此处输入图像描述

你能告诉我为什么我的模拟会发生这种情况吗?OpenModelica 仿真结果和 Octave 仿真结果之间存在巨大差异。为什么?我是否更改 ODE 求解器并不重要。结果将几乎相同。