问题标签 [differentialequations.jl]

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 投票
2 回答
194 浏览

julia - 使用微分方程的终端速度

我是 Juia lang 的新手,并尝试使用 Julia 求解以下微分方程以找到球的终端速度。

F = - m * g - 1/2 rho * v² Cd * A

这是我写的代码:

我认为问题在于我将 y0 作为加速度而不是高度的初始条件。但我还不能很好地理解语法。

我的出发点是这篇文章:https ://nbviewer.jupyter.org/github/JuliaLang/ODE.jl/blob/master/examples/Terminal_Velocity.ipynb

提前感谢您的帮助。

0 投票
1 回答
602 浏览

neural-network - 使用 DiffEqFlux 预测 ODE 参数

我正在尝试构建一个神经网络,它将接受 ODE 系统的解决方案并预测系统的参数。我正在使用 Julia,尤其是DiffEqFlux包。网络的结构是几个简单的Dense层链接在一起,预测一些中间参数(在这种情况下,一些化学反应自由能),然后输入一些确定性(非训练)层,将这些参数转换为进入方程组(在这种情况下,反应速率常数)。我从这里尝试了两种不同的方法:

  1. 将 ODE 求解直接链接到网络的最后一层。在这种情况下,损失函数只是将输入与输出进行比较。

  2. 让 ODE 在损失函数中求解,因此网络输出只是参数。

但是,在这两种情况下,我都Flux.train!无法真正运行。

第一个选项的一个愚蠢的小例子,它给出了我得到的相同错误(我试图让尽可能多的东西与我的实际情况平行,即求解器等,尽管我确实省略了中间确定性层因为它们似乎没有区别)如下所示。

我已经尝试了所有三个求解器层 、diffeq_adjointdiffeq_rddiffeq_fd它们都不起作用,但所有这些都给出了我无法解析的不同错误。

对于另一个选项(我实际上更喜欢,但无论哪种方式都可以),只需将模型和损失函数定义替换为:

抛出与上面相同的错误。

我已经破解了一个多星期了,完全被难住了;有任何想法吗?

0 投票
1 回答
73 浏览

julia - 在 Julia/DifferentialEquations 中使用 VectorContinuousCallback 时输出解中事件的索引

我有一个可能发生许多事件的动态系统。我想终止一个事件上的轨迹积分,但我也想知道哪个事件被激活了。

我找到的解决方法是使用全局变量将事件索引保存在affect!函数中。这是弹跳球示例的修改版本:

这样做有更好的解决方案吗?

0 投票
1 回答
80 浏览

julia - parabolic_squaremesh 未在微分方程中定义

我正在尝试从教程中重现一个示例,但我遇到了未定义的网格:

代码在我尝试使用错误消息创建网格的那一行失败:*UndefVarError: parabolic_squaremesh not defined top-level scope at test.jl:22 所有包都安装没有错误。但是,我无法安装 似乎已贬值的使用 FiniteElementDiffEq 。

0 投票
1 回答
423 浏览

julia - 在 ODE 问题中使用复数返回不精确错误

我正在尝试使用 Julia 实现 n 机系统的 Swing 方程。当我运行以下代码时,我收到此错误消息:

出现问题是因为我使用du[3] = (u[3] * u[2]) * im的不是Float64类型。当我删除im- 但它不再是我想要实现的模型时,代码工作正常。

有什么方法可以解决我的问题?

0 投票
1 回答
134 浏览

julia - 如何在 DiscreteCallback 中的指定时间读取相应的值?

此问题类似,我正在尝试使用与时间相关的输入参数来解决此 ODE 。它由一系列离散的回调组成。在某些时候,参数会改变(不是状态!)。时间和值存储在nx2 Array. 但是我无法获取affect在指定时间找到对应参数值的函数。在给定的示例中,分配给的值u[1]通常是恒定的。考虑这个 MWE(使用非常类似于 Matlab 的方法),它可以在没有回调的情况下正常工作:

这没用。错误出现在第 22 行,因为在 Julia 中似乎没有定义将向量与标量进行比较,或者存在我不知道的特殊语法。

我知道可以在 Julia 中使用与时间相关的参数,但我想这仅适用于连续函数,而不适用于离散变化!?我已经查看了 的帮助interpolate,但我不确定如何将它用于我的具体情况。

有人可以告诉我如何让它工作吗?应该可能只需要几行代码。另外,我不一定想dosetimes成为 的一部分sol.t,除非它们重合。

0 投票
1 回答
171 浏览

callback - Julia 的 DiffEqBiological 中的回调

我在 Julia 中使用 DiffEqBiological 定义了一个反应网络。在特定时间,我想更改参数。但是,我似乎无法更改它们。虽然不是我想做的,但我能够影响变量。

我编写了代码的简化版本,每 20 个单位时间我将其中一个参数从 0.001 更改为 0.1,从 0.1 更改为 0.001。我的代码是

我没有收到任何错误。求解器解决它。但是,回调不会更改参数。我会很感激所有的帮助。我不知道为什么它不起作用。谢谢。

0 投票
1 回答
529 浏览

julia - 如何在 Julia 中访问神经 ODE 的训练参数?

我正在尝试将一个神经 ODE 拟合到使用 Julia 的 DiffEqFlux 的时间序列。这是我的代码:

问题是在 train 函数之前和之后调用n_ode.p(或)给了我保存值。Flux.params(dudt)我本来希望从培训中收到最新的更新值。这就是为什么我创建了一个数组来收集训练期间的所有参数值,然后访问它以获取更新的参数。

我在代码中做错了吗?train 函数会自动更新参数吗?如果没有怎么执行?

提前致谢!

0 投票
1 回答
110 浏览

julia - 如何在 Julia 中使用 ImplicitEuler 求解器?

尝试调用隐式欧拉求解 ODE 时,我收到以下错误:

这就是我调用求解器的方式:

调用 ImplicitEuler 的正确方法是什么?

0 投票
1 回答
165 浏览

julia - 具有指定噪声的随机微分方程灵敏度分析

给定噪声的特定实现,我正在尝试计算随机微分方程 (SDE) 解的泛函梯度。如果不指定噪声,我可以成功计算这些梯度,如DiffEqFlux.jl:使用其他微分方程中所示。我还可以成功地获得针对特定噪声实现的 SDE 的解决方案,如DifferentialEquations.jl: NoiseWrapper Example中所示。但是,当我尝试将两者放在一起时,代码会返回错误。

这是改编自上面引用的两个单独示例的最小工作示例:

我在运行此代码结束时得到的错误是

然后是对堆栈跟踪的无休止的结论(如果您认为它会有所帮助,我可以发布它,但由于它比这个问题的其余部分更长,我宁愿不要把事情搞得一团糟)。

当前不支持为具有指定噪声实现的 SDE 问题计算梯度,还是我只是没有进行适当的函数调用?我很容易相信后者,因为要达到上述代码的工作部分工作的地步有点困难,但是在逐步完成后我找不到任何线索来说明我错误地提供了什么使用 Juno 调试器编写代码。