我正在尝试求解两体微分方程。 DifferentialEquations.jl曾经很容易地求解我的方程,但是在某个时候,它开始将nothing
的初始条件交给微分方程。
这是最近出现的范围界定问题的潜在问题吗?
using Unitful, RecursiveArrayTools, DifferentialEquations
function propagateTrajNewWay(df::DataFrame, idx::Int)
x = df.E[idx]u"m"
y = df.F[idx]u"m"
z = df.G[idx]u"m"
r0 = [x, y, z]
vx = df.dE[idx]u"m/s"
vy = df.dF[idx]u"m/s"
vz = df.dG[idx]u"m/s"
v0 = [vx, vy, vz]
rv0 = ArrayPartition(r0, v0)
tspan = (df.time[idx]u"s", df.time[end]u"s")
μ = 3.986004418e14u"m^3/s^2"
# prob = ODEProblem(twoBody, u0, tspan)
# println(prob)
# sol = solve(prob, VCABM(), reltol = 1e-12, abstol = 1e-12)
prob = ODEProblem((t, y, dy) -> twoBodyNew(t, y, dy, μ), rv0, tspan)
sol = solve(prob, VCABM())
return sol
end
function twoBodyNew(t, y, dy, μ)
show(y)
r = norm(y.x[1])
dy.x[1] .= y.x[2]
dy.x[2] .= -μ .* y.x[1] / r^3
end
function propWholeTraj(df)
for ii = 1:size(df, 1)
propagateTrajNewWay(df, ii)
end
end
propWholeTraj(df)
其中的代码基本上是从this page开始逐字复制的 使用静态数组。我也有自己的两个主体函数版本以及用于设置和调用它的函数,但这也有相同的错误。
对这里可能出什么问题有任何想法吗?
答案 0 :(得分:1)
函数签名应为nodes <- data.frame(name = unique(c(links$source, links$target)))
links$source <- match(links$source, nodes$name) - 1
links$target <- match(links$target, nodes$name) - 1
links$value <- 1
nodes$name <- sub('_[0-9]+$', '', nodes$name)
library(networkD3)
library(htmlwidgets)
sankeyNetwork(Links = links, Nodes = nodes, Source = 'source',
Target = 'target', Value = 'value', NodeID = 'name')
。始终为twoBodyNew(t, y, μ, dy)
。该链接页面上的文档已修复。