问题标签 [odeint]
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.
odeint - 集成自适应和集成时间对负步长给出不同的答案
我在 Boost 中使用 odeint 库。使用integrate_adaptive函数时,结果符合预期。但是,当使用integrate_times 时,ODE 会在非常不同的时间进行评估,这些时间超出了积分范围。这对我来说是个问题,因为我的 ODE 没有为它正在评估的某些值定义。
下面的代码演示了这个问题。计算 ODE 的 x 值将打印到屏幕上。
我正在使用以下命令编译和运行:
该代码产生以下输出:
积分范围是从 x = 1 到 0,但在使用积分时间时,ODE 的 x 值小于 0。
python - odeint 在 python 中的这种实现有什么问题?
我正在使用 odeint 来求解一组耦合的一阶非线性微分方程。函数 dHs(t,v) 是一个返回耦合 DE 数组的函数。我正在尝试解决并绘制它们。我以前这样用过:
然后它在哪里被绘制并且工作得很好,但是现在我试图概括它并使用数组中的n个条目dHs(tRel,vij),它给了我一个错误
对于代码
其中 v 是用于替换 arrEq 的符号数组,V_0 是对应于 v 中相同位置的符号的初始值数组。
我在做什么/叫错了导致第二种方法不起作用但第一种方法起作用。我使用完全相同的输入(方程相同),只是用不同的方法来解决它。
python - 为什么 odeint 时间在 python 中以不同方式演变这两者?
我有两个程序,一个可以接受 N 个耦合 ODE,一个可以使用 2 个耦合 ODE。如果我将 2 个相同的 ODE 输入到两个代码中,并且具有相同的时间跨度,我会得到不同的答案。我知道正确答案,所以我可以推断我的 N many 程序是错误的。
这是 2 等式专用的代码:
这是专用的N方程:
其中 dHs(tRel,vij) = dHsFunction(t,V_s) 即完全相同的 ODE。同样,y0 和 v0 完全相同。但是当我在 N 很多情况下打印 y[0] 时,我得到的输出是:
与以下 2 个专用案例相反:
其中第二个结果是正确的,并绘制了正确的图表。
如果需要更多代码或其他任何内容,请告诉我。谢谢。
c++ - 无法编译使用 boost 中的 odeint 的 C++
我在 Ubuntu 12.04 上,并且在 /usr/include 中已经有了一些提升文件。我做了一个
并且也安装了很多文件。我不想删除这个 boost 并从源代码安装,因为其他几个包依赖于 ubuntu repos 的版本。这是我要运行的示例代码:-
在第一次编译g++ -o test test.cpp
时,它抛出了一个错误
/usr/include/boost/numeric/odeint.hpp permission denied
所以我使用递归更改了所有 odeint 文件的文件权限
这一次,它没有说权限被拒绝,而是抛出了 400 行错误,如下所示 ->来自终端的错误日志
我该如何编译它?文档或其他任何地方都没有 odeint 的安装指南
python - 具有复杂初始值的 scipy odeint
我需要求解具有复杂初始值的复杂域定义的 ODE 系统。scipy.integrate.odeint 不适用于复杂系统。我喜欢将我的系统分成实部和虚部并分别求解,但我的 ODE 系统的 rhs 涉及因变量本身及其复共轭之间的乘积。我该怎么做?这是我的代码,我尝试在 Re 和 Im 部分中破坏 RHS,但由于复数之间的内部乘积,我认为解决方案与不破坏它的解决方案不同。在我的脚本中,u1 是一个(非常)长的复杂函数,例如 u1(Lm) = f_real(Lm) + 1j* f_imag(Lm)。
我得到的错误是这个 TypeError: array cannot be safe cast to required type odepack.error: Result from function call is not a proper array of
floats。
python - 如何在 scipy odeint 中包含导数?
当我在一个简单的微分方程中包含一个导函数时,我不断收到一长串错误,如下面的代码所示。我究竟做错了什么?
错误输出的一小部分似乎重复了几次如下:
编辑:上面的代码在 scipy 0.9.0 中运行没有错误,但在 0.12.0 中给出了上述错误
Edit2:现在已经解决了错误,我需要在积分器中添加第二个函数,如下所示:
我该怎么做?
c++ - odeint (c++) - 下采样观察
抱歉,如果这是一个简单的问题-但是是否有“最佳实践”来对 odeint 中状态变量的演变进行下采样?
下面,我复制了一个很好的示例,用于构建“观察者”来记录本文中提供的状态变量 ( http://www.codeproject.com/Articles/268589/odeint-v2-Solving-ordinary-differential-equations )
您如何将观察者更改为仅每 10 步记录一次状态(例如)。我想知道是否有比放入 if 语句更优雅的解决方案:
python - ValueError 和 odepack.error 使用Integrate.odeint()
我正在尝试编写一个方程来建模,然后绘制一个积分控制系统(特别是关于巡航控制)。但是,每当我运行它时,我都会收到两个错误:
ValueError: object too deep for required array odepack.error: 函数调用的结果不是正确的浮点数组。
我读过这些问题:
- scipy curve_fit 错误:函数调用的结果不是正确的浮点数组
- 如何使用 scipy odeint 求解这个微分方程?
- 对象对于所需数组来说太深 - scipy.integrate.odeint
看起来它们应该会有所帮助,但是我不确定如何将它们应用于我的问题。我对 python 还很陌生,所以如果我错过了一些明显的事情或做了一些特别愚蠢的事情,请多多包涵。我对绘制它没有任何问题,所以一旦我弄清楚如何真正让它工作,我想我已经准备好了。
请让我知道您是否还有其他需要我的东西!
python - Python:odeint 求解具有可变系数的 ODE (QHO)
我正在尝试y'' + (epsilon-x^2)y = 0
使用 odeint 数值求解方程。我知道解决方案(QHO 的波函数),但 odeint 的输出与它没有明显关系。我可以很好地解决具有常数系数的 ODE,但是一旦我转向可变系数,我就无法解决我尝试过的任何一个。这是我的代码:
和情节:[没有足够的代表:] https://drive.google.com/file/d/0B6840LH2NhNpdUVucUxzUGFpZUk/edit?usp=sharing
在此处查找解决方案图:http: //hyperphysics.phy-astr.gsu.edu/hbase/quantum/hosc5.html
python - 集成控制系统运行不正常
昨天我在这里发布了一个问题:ValueError and odepack.error using integration.odeint()我认为已成功回答。但是,从那以后我注意到了一些事情。
- 运行此程序时,它不会趋向于所需的速度 vr
- 当运行程序并随着时间的变化而改变角度(代表道路的坡度)时,它并不总是返回到所需的速度 vr,甚至不会返回到先前的稳定状态。
该程序旨在模拟集成控制系统(特别是巡航控制)。它目前从速度 v0 开始,以该速度运行一段时间,然后启用巡航控制。在这一点上,我们应该看到速度的变化(我们确实做到了),最终稳定在所需的速度 vr 上。它没有。由于未知原因,它达到了其他一些值,并且该值根据骑行的坡度而有所不同。无论初始速度如何,它仍然无法达到所需的速度
我玩过不同的参数和变量无济于事。我认为问题在于控制器没有通过正确的当前速度,但是我不确定如何解决该问题。
如果您需要更多信息,请告诉我。如果我应该编辑上一个问题,请告诉我,我会这样做,提前抱歉。
这是我的代码:
速度的第一个急剧变化是启动巡航控制时,第二个是骑行坡度变化时