【问题标题】:Solving a gradient dependet ODE in Julia在 Julia 中求解梯度依赖 ODE
【发布时间】:2020-09-11 13:18:55
【问题描述】:

我正在尝试使用 DifferentialEquation.jl 解决以下 ODE:

其中 P 是用于投影的矩阵。我很难想象如何解决这个问题。有没有办法使用 Julia 直接解决它?或者我应该尝试手动重新排列方程(我已经尝试过)以适应通常的微分方程格式? 我已经开始写下一些方程式,这些方程式可以在下面找到,但我并没有走得太远。


function ODE(u, p, t)
    g,N = p
    Jacg = ForwardDiff.jacobian(g, u)
   
    sum = zeros(size(N,1))

    for i in 1:size(Jacg,1)
        sum = sum + Jacg[i,:] .* (u / norm(u)) .* N[:,i]
    end

    Proj_N(N) * sum
    nothing
end

prob = ODEProblem(ODE, u0, (0.0, 3.0), (g, N))
sol = solve(prob)

任何帮助表示赞赏并提前致谢。

【问题讨论】:

    标签: julia scientific-computing differentialequations.jl


    【解决方案1】:

    如果你想使用不合适的形式,你必须返回导数,即

    function ODE(u, p, t)
        g,N = p
        Jacg = ForwardDiff.jacobian(g, u)
       
        sum = zeros(size(N,1))
    
        for i in 1:size(Jacg,1)
            sum = sum + Jacg[i,:] .* (u / norm(u)) .* N[:,i]
        end
    
        Proj_N(N) * sum
    end
    

    我认为您只是混淆了变异和非变异派生形式。

    【讨论】:

    • 这确实有帮助。我将如何协调 Proj_N(N) * sum = 0 的条件。我必须把它变成一个 DAE 问题吗?
    • DAEProblem 或使用 ManifoldProjection 回调。
    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 2015-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    相关资源
    最近更新 更多