首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >julia/Differential方程微分方程的正确定义

julia/Differential方程微分方程的正确定义
EN

Stack Overflow用户
提问于 2020-06-05 04:36:42
回答 1查看 56关注 0票数 1

我有两个变体的代码来解决ODE系统y'=A*y+b。这个不起作用(它运行但给出了错误的结果,即它将初始数据u0作为常量解决方案返回):

代码语言:javascript
复制
using LinearAlgebra
using DifferentialEquations

function RHSfun(du,u,p,t)
    du= p[1]*u + p[2]
    return du
end


A=[-1 0 0; 0 -1 0; 0 0 -1]

b=[1 ; 2 ; 3 ]

parm = [A,b]


 tspan=(0.0,5.0)
 u0=[0.0; 0.0 ; 0.0]
 prob=ODEProblem(RHSfun,u0,tspan,parm)
 sol=solve(prob)

但是如果我从RHSfun中删除了参数du,它就可以工作了,这似乎与文档相反(并且我之前已经解决了用du参数定义的ODE)。

我不是在问写这个问题的其他方法(我知道有几个工作版本),但我想知道为什么上面的方法不起作用。我以前已经用du参数解决过ODEs,因为这是大多数教程说要做的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-05 08:06:07

如果使用就地表单,则必须确保修改du数组,如下所示:

代码语言:javascript
复制
function RHSfun(du,u,p,t)
    du .= p[1]*u + p[2]
    return nothing
end

或者,您可以更高效地使用mul!。请注意,您返回的内容并不重要。如果要使用分配形式,请不要指定变异参数:

代码语言:javascript
复制
function RHSfun(u,p,t)
    du = p[1]*u + p[2]
    return du
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62203699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档