问题标签 [differential-equations]

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

plot - 动画点沿使用 ParametricPlot3D 获得的特定解的图的移动

我们有系统:

和初始条件:

我制作了具体的情节:

我知道如何选择一个随机点来绘制整个轨迹,但我找不到一种方法来动画沿着绘制的轨迹移动的点。在此特定示例中,该点应位于 t == 0 并一直移动直到 t == 2。

0 投票
1 回答
1100 浏览

python - 解决 ODE 的 python 时出错

我有一个大学项目,要求我们使用 ODE 和 SciPy 的 odeint 函数模拟卫星接近火星。

我设法通过将二阶 ODE 转换为两个一阶 ODE 来在 2D 中模拟它。但是我被时间限制困住了,因为我的代码使用的是 SI 单位,因此可以在几秒钟内运行,而 Python 的 linspace 限制甚至不能模拟一个完整的轨道。

我尝试将变量和常量转换为小时和公里,但现在代码不断出错。

我遵循了这个方法:

http://bulldog2.redlands.edu/facultyfolder/deweerd/tutorials/Tutorial-ODEs.pdf

代码是:

我不知道如何从 PyLab 复制/粘贴错误代码,所以我拍摄了错误的 PrintScreen:

为 x 运行 odeint 时出错

t=linspace(0.01,24.0,100) 和 xinit=array([0.001,5251]) 的第二个错误:

第二种错误

如果有人对如何改进代码有任何建议,我将不胜感激。

非常感谢!

0 投票
2 回答
11101 浏览

matlab - 通过 Matlab 或计算求解耦合微分方程

通过 Mat-lab 或计算求解耦合非线性微分方程

我在mathematica中尝试过,但得到了一个非常复杂的解决方案。

我该如何绘制它?

我的初始条件是

此外,a 和 b 是常数。

在插入 a 和 b 的值之后,我必须绘制 x 和 y wrt t 。( a= 2 , b = 5 说)

0 投票
1 回答
224 浏览

c++ - 几秒钟后 C++ 代码运行缓慢

我有 C++ 代码可以数值求解偏微分方程。一切正常,但在前 10 次左右的迭代之后,代码开始运行慢约 3 倍。

一些可能相关的信息:

  • 我正在使用包 Eigen 进行大量计算
  • 我将大量数据存储在一个数组中(每次迭代大约 100000 个双精度值)

我不太了解计算机的工作原理或 C++ 编码,我想知道是否有人能指出我正确的方向,以便我可以解决这个问题。

如果有帮助,我也可以发布代码,但它很长。

0 投票
1 回答
303 浏览

matlab - 如何在 MATLAB 中求解这个微分方程?

微分方程为:

k的值为2,请问如何实现该功能并用ode45解决?

0 投票
1 回答
1632 浏览

c++ - 限制 boost::odeint 集成的步数

假设我有以下boost::odeint代码:

如何修改代码以使集成在一定数量的步骤后中断?我正在运行大量集成,并希望避免在集成任何特定系统上花费太多时间。

我曾考虑过使用integrate_n_steps(),但这可能意味着集成会持续到我感兴趣的结束时间。

0 投票
1 回答
273 浏览

boost - 在 odeint 中设置当前状态

我想current_state在 boost::odeint 中设置步进器。

我有以下 MWE:

这条线stepper.set_current_state(x);是行不通的。有没有我可以用来完成此任务的命令?

我意识到我可能只使用:

但是目前还不清楚这是否真的是最好的策略,或者我是否丢失了步进器的一些内部状态(例如当前的步长或误差估计),最好保留这些状态。

0 投票
1 回答
760 浏览

math - 如何在“Mathematica”中绘制方向场?

我是mathematica的新手,我正在尝试学习如何使用它,我试图绘制一个方向场但我做不到,这是我的微分方程:

这是我尝试的一个例子:

f[x_, y_] := e^x + y

sol = DSolve[y'[x] == f[x, y[x]], y, x]

虽然我不知道这段代码是什么意思(用数学语言),但我设法从网上和这个网站上的一些例子和一些答案中收集了它。此代码似乎适用于某些功能,例如:

或其他简单的,但不适用于包含指数或三角函数的函数(并非总是如此 - 不知道为什么!)我想绘制我提供的函数和其他函数的方向场,但我不能很好地理解文档中心中的示例。请帮我解决这个问题,谢谢。

0 投票
2 回答
539 浏览

c++ - 绑定一个 odeint 变量

我正在使用 odeint 来模拟一个系统,其中有几个变量不应小于零。

是否有适当的方法将 odeint 中的变量绑定到特定范围?

0 投票
1 回答
296 浏览

matlab - 在 MATLAB 中使用 ode23:端点未给出值

我正在尝试在 MATLAB 中使用 ode23 求解微分方程,但在给定的问题中,给定的值与端点不同。例如:y'+y=2, y(0)=0, t on [-2,10]。ode23 需要 y0,但在这种情况下,我需要 y(0)=0 而不是 y(-2)=0。如何更改 ode23 的参数,以便它仍然告诉我区间 [-2,10] 上的值以及 y(0)=0 的值?