微分方程对我的微分方程没有任何帮助

时间:2018-09-07 16:06:45

标签: julia differential-equations

我正在尝试求解两体微分方程。 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开始逐字复制的 使用静态数组。我也有自己的两个主体函数版本以及用于设置和调用它的函数,但这也有相同的错误。

对这里可能出什么问题有任何想法吗?

1 个答案:

答案 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)。该链接页面上的文档已修复。