Julia的新手,试图测试ODE求解器的速度.我在教程中使用了Lorenz方程
using DifferentialEquations
using Plots
function lorenz(t,u,du)
du[1] = 10.0*(u[2]-u[1])
du[2] = u[1]*(28.0-u[3]) - u[2]
du[3] = u[1]*u[2] - (8/3)*u[3]
end
u0 = [1.0;1.0;1.0]
tspan = (0.0,100.0)
prob = ODEProblem(lorenz,u0,tspan)
sol = solve(prob,reltol=1e-8,abstol=1e-8,saveat=collect(0:0.01:100))
Run Code Online (Sandbox Code Playgroud)
加载软件包的开始时间约为25秒,代码在Jupyter笔记本电脑的Windows 10四核笔记本电脑上运行了7秒.我知道Julia需要先预编译包,这就是加载时间这么长的原因吗?我发现25秒难以忍受.此外,当我使用不同的初始值再次运行求解器时,运行时间(~1s)要少得多,为什么会这样?这是典型的速度吗?
许多用户询问如何使用非零 Dirichlet BC 和内部线性求解器的共轭梯度求解热方程,u_t = u_xx。在转向更困难的抛物线 PDE 版本之前,这是一个常见的简化 PDE 问题。这是如何在DifferentialEquations.jl 中完成的?
我正在尝试使用 Julia 为 n-Machine 系统实现 Swing 方程。当我运行以下代码时,我收到此错误消息:
LoadError: InexactError: Float64(0.0 + 1.0im)
in expression starting at /home/Documents/first_try.jl:61
Swing_Equation(::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}, ::Float64) at complex.jl:37
ODEFunction at diffeqfunction.jl:219 [inlined]
initialize!
Run Code Online (Sandbox Code Playgroud)
出现问题是因为我正在使用du[3] = (u[3] * u[2]) * im
它不能是一种Float64
类型。当我删除im
-时代码工作正常,但它不再是我想要实现的模型。
有什么方法可以解决我的问题?
using Plots
using DifferentialEquations
inspectdr()
# Constants
P_m0 = 0.3 # constant Mechanical Power
P_emax = 1
H = 1.01 # Inertia constant of the system
?_0 = asin(P_m0 / P_emax) # angle of the system
?_0 = …
Run Code Online (Sandbox Code Playgroud) 我是 Julia 编程的新手,我设法解决了一些一阶 ODE,但是当我想转向二阶时,我不知道如何使用求解器来实现所需的方程。
我想解这个方程
y" + y = 0
Run Code Online (Sandbox Code Playgroud)
具有初始条件
y(0) = 3
y'(0) = -0.5
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个朱莉娅代码:
\n\nusing DifferentialEquations\nusing Plots\nusing ParameterizedFunctions\nplotly()\nlorenz = @ode_def Lorenz begin\n dx = \xcf\x83*(y-x)\n dy = \xcf\x81*x-y-x*z\n dz = x*y-\xce\xb2*z\nend \xcf\x83 = 10. \xce\xb2 = 8./3. \xcf\x81 => 28.\nu0 = [1., 5., 10.]\ntspan = (0., 2.)\nprob = ODEProblem(lorenz, u0, tspan)\nsol = solve(prob,save_timeseries=true)\nplot(sol,vars=(:x,:y,:z))\n
Run Code Online (Sandbox Code Playgroud)\n\n其结果是:\n下一个图\n
\n我如何为该图制作动画,以便它可以从 REPL 和 jupyter 运行?
我正在查看DifferentialEquations.jl
包裹.在
DiffEqDevTools/src/ode_tableaus.jl
我所看到的舞台造型
Midpoint
和RK4
.
但我也可以看到这些方案的明确代码
OrdinaryDiffEq/src/integrators/fixed_timestep_integrators.jl
.
我有点期望一些代码使用tableaux而不是有一个明确的解算器.
我不知道如何检查是否正在使用画面.我尝试删除,OrdinaryDiffEq.jl
但后来我的例子不会运行.
这反而表明正在使用显式代码.但在那种情况下,为什么画面存在呢?
我试图使用Julia以数字方式求解抛物线偏微分方程,但我找不到任何可以帮助的可访问文档.
这是一个例子:t,x是1维实数.我想解决u(t,x)= [u1(t,x)u2(t,x)]; 你满足了PDE
du1/dt = d ^ 2u1/dx ^ 2 + a11(x,u)du1/dx + a12(x,u)du2/dx + c1(x,u)
du2/dt = d ^ 2u2/dx ^ 2 + a21(x,u)du1/dx + a22(x,u)du2/dx + c2(x,u)
朱莉娅有可能这样做吗?在Matlab中使用pdepe可以解决这类问题.
我目前正在研究DifferentialEquations.jl的文档,并尝试移植我的旧计算神经科学代码,而不是我自己的,不那么优雅和高性能的ODE求解器.在这样做时,我偶然发现了以下问题:是否可以在返回当前步骤后立即访问并使用求解器返回的结果(而不是等待问题完成)?
我正在寻找一种方法,例如实时绘制模拟神经元的电压电平,这似乎是一个足够简单的任务,并且使用已有的Julia软件包可能很简单,但我无法弄清楚如何.是否必须对回调做任何事情?提前致谢.
simulation differential-equations julia differentialequations.jl
我有以下 ODE 耦合系统(来自离散化积分微分偏微分方程):
xi 是我控制的 x 网格上的点。我可以用下面的简单代码来解决这个问题:
using DifferentialEquations
function ode_syst(du,u,p, t)
N = Int64(p[1])
beta= p[2]
deltax = 1/(N+1)
xs = [deltax*i for i in 1:N]
for j in 1:N
du[j] = -xs[j]^(beta)*u[j]+deltax*sum([u[i]*xs[i]^(beta) for i in 1:N])
end
end
N = 1000
u0 = ones(N)
beta = 2.0
p = [N, beta]
tspan = (0.0, 10^3);
prob = ODEProblem(ode_syst,u0,tspan,p);
sol = solve(prob);
Run Code Online (Sandbox Code Playgroud)
然而,当我使网格更细(即增加 N)时,计算时间会快速增长(我猜缩放比例是 N 的二次方)。对于如何使用分布式并行或多线程来实现这一点有什么建议吗?
是否有可能使用朱莉娅的方程求解器创建一个弹跳球的简单模型?
我从这开始:
using ODE
function bb(t, f)
(y, v) = f
dy_dt = v
dv_dt = -9.81
[dy_dt, dv_dt]
end
const y0 = 50.0 # height
const v0 = 0.0 # velocity
const startpos = [y0; v0]
ts = 0.0:0.25:10 # time span
t, res = ode45(bb, startpos, ts)
Run Code Online (Sandbox Code Playgroud)
它产生有用的数字:
julia> t
44-element Array{Float64,1}:
0.0
0.0551392
0.25
0.5
0.75
1.0
?
8.75
9.0
9.25
9.5
9.75
10.0
julia> res
44-element Array{Array{Float64,1},1}:
[50.0,0.0]
[49.9851,-0.540915]
[49.6934,-2.4525]
[48.7738,-4.905]
[47.2409,-7.3575]
?
[-392.676,-93.195]
[-416.282,-95.6475]
[-440.5,-98.1] …
Run Code Online (Sandbox Code Playgroud) physics differential-equations julia differentialequations.jl