问题标签 [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.
apache - 在 apache ode 下上传 ZIP 文件时出错:null model
我有一个在 Intalio BPMN 设计器中创建的工作流和一个包含构建目录(deploy.xml、wsdl、bpel)内容的 ZIP 文件,问题是为什么这个工作流没有部署在 Apache ODE 中。
Apache ODE 中显示的错误是:Invocation of operation deploy failed: java.lang.IllegalArgumentException: Null model。
欢迎任何帮助
python - 每个时间步更新 ODE 求解器中的初始条件
我想解决一个 ODE 系统,在前 30,000 秒内,我希望我的一个状态变量从相同的初始值开始。在这 30,000 秒之后,我想将该状态变量的初始值更改为不同的值,并在其余时间模拟系统。这是我的代码:
所以,换句话说,我想odeint
在前 30,000 秒内每次调用 y0[1] 为相同的值 (100)。在将信号输入系统之前,我正在有效地尝试让系统平衡一段时间。我考虑过像if t < 30000: y0[1] = 100
我的函数的第一行那样做一些事情ode_rhs()
,但我不太确定它是否有效。
matlab - 是否可以从 matlab 提高 ODE 求解器的速度?(ode45 ode15s 等)
我写了一个代码来解决一个在matlab中使用ode45和ode15s的系统。我想知道是否可以在我的脚本中使用多核(或并行代码)来提高代码的速度。
有人试过这个吗??
谢谢
matlab - 在 Matlab 中保存 ode45 中的导数值
我正在模拟具有质量弹簧和双摆的(有些奇怪的)系统的运动方程,我有一个质量矩阵和函数 f(x),并调用 ode45 来求解
我有 5 个状态变量,q= [ QDot, phi, phiDot, r, rDot]'; (删除了 Q,因为没有任何东西依赖它,QDot 是当前的。)现在,为了计算一些力,我还想保存 rDotDot 的计算值,ode45 会为每个积分步骤计算该值,但是 ode45 不会返回这个值。我搜索了一下,但我发现的唯一两个解决方案是 a) 将其转换为 3 阶问题并将 phiDotDot 和 rDotDot 添加到状态向量中。我想尽可能地避免这种情况,因为它已经是非线性的,这确实使事情变得更糟,并增加了计算时间。
b) 扩充状态以直接计算函数,如此处所述。但是,在示例中,他说要在质量矩阵中添加一行零。这是有道理的,因为否则它将集成导数,而不仅仅是在某一点上对其进行评估,另一方面它会使质量矩阵变得奇异。似乎对我不起作用...
这似乎是一个基本的事情(想要状态向量的导数值),有什么我没有想到的非常明显的事情吗?(或者不那么明显的东西也可以....)
哦,全局变量不是很好,因为 ode45 在优化它的步骤时多次调用 f() 函数,所以全局变量的大小和返回的状态向量 q 根本不匹配。
如果有人需要,代码如下:
matlab - 使用 MATLAB 计算 ODE
微分方程:
α'(t)=s(β-βα+α-qα^2)
β'(t)=(s^-1)(-β-αβ+γ)
γ'(t)=w(α-γ)
初始值
α (0) = 30.00
β (0) = 1.000
γ (0) = 30.00
计算
我想解决从 t_0=0 到 t=10 的问题,同时使用值 s = 1、q = 1 和 w = 0.1610
我不知道如何为 ODE 编写函数,非常感谢您的帮助!
matlab - Matlab - Odeset - Odeplot
我想使用 odeplot 所以逐步得到结果,而不是事后绘制结果。我试过这样写,但我无法让它工作,所以我希望能得到一些帮助。
matlab - Matlab:求ODE系统的系数
我有所有数据和一个由三个方程组成的 ODE 系统,它有 9 个未知系数(a1、a2、...、a9)。
如何使用 Matlab 找到 ODE 的这些系数(a1,...,a9)?
matlab - Matlab:可变步长 ODE 求解器中的 if 语句和 abs() 函数
我正在网上阅读这篇文章,其中有人提到使用“if statements”和“abs()”函数可能会对 MATLAB 的可变步长 ODE 求解器(如 ODE45)产生负面影响。根据 OP,它会显着影响时间步长(需要太低的时间步长),并在最终积分微分方程时给出较差的结果。我想知道这是否是真的,如果是,为什么。此外,如何在不求助于固定步骤求解器的情况下缓解这个问题。我在下面给出了一个示例代码来说明我的意思:
其中函数“dragcof”由以下给出:
matlab - MATLAB 的 ode45 如何处理高度耦合的 ODE(其中 y' 取决于 x' 而 x' 取决于 y' 等)?
如果我有两组高度耦合的 ODE,例如:
或者如果我有这样的系统:
ode45 通常会如何处理这个问题?如果我要执行以下操作:
或类似的第二个问题:
并运行 ode45,MATLAB 会毫无怨言地产生结果,但我有点犹豫,因为我不确定它是如何处理这样一个耦合方程组的。和建议?
matlab - MATLAB:使用“assignin”在 ode45 中保存参数
我在 MATLAB 中使用 ode45 运行一组 ODE,我需要保存其中一个变量(这不是导数)以供以后使用。我正在使用函数“assignin”在基础工作区中分配一个临时变量,并在每一步更新它。这似乎可行,但是,数组的大小与从 ode45 获取的解向量的大小不匹配。例如,我有以下嵌套函数:
在上面的代码中,theta(弧度)、K(负值)、P 和 G 是常数,为了这个例子,可以取任何值。Zspan 只是 ODE 求解器的积分时间步长,Y0 是初始条件向量 (4x1)。同样,为了这个例子,这些可以取任何合理的值。现在在主文件中,使用以下内容调用该函数:
这个方法没有被 MATLAB 抱怨,但问题是 Ve_out 的大小与 Z 或 Y 的大小不一样。原因是因为 MATLAB 对其算法多次调用 ODE 函数,所以解决方案是将比 Ve_out 略小。正如 am304 所建议的那样,我可以通过给 ode 函数一个 Z 和 Y 向量(例如 DY = 动量(Z,Y))来简单地计算 DY,但是,我需要使用“assignin”(或类似方法)来解决这个问题,因为另一个这个问题的版本在 DY 和 Ve 之间存在隐式依赖性,并且在每次迭代时计算 DY 的计算成本太高(我将在多次迭代中运行这个问题)。