Wolfram mathematica 在Mathematica中求微分方程解的零
给定以下代码:Wolfram mathematica 在Mathematica中求微分方程解的零,wolfram-mathematica,differential-equations,Wolfram Mathematica,Differential Equations,给定以下代码: s := NDSolve[{x''[t] == -x[t], x[0] == 1, x'[0] == 1}, x, {t, 0, 5 }] Plot[Evaluate[{x[t]} /. s], {t, 0, 3}] 这是微分方程的解。当t的范围在0到3之间时,我如何数值求解x[t]的零点 最初的问题由@rcollyer回答。我正在回答您在对rcollyer答案的第一次评论中提出的问题: 但是如果我们的s是“s:=NDSolve[{x'[t]^2==-x[t]^3-x[t]+1
s := NDSolve[{x''[t] == -x[t], x[0] == 1, x'[0] == 1}, x, {t, 0, 5 }]
Plot[Evaluate[{x[t]} /. s], {t, 0, 3}]
这是微分方程的解。当t的范围在0到3之间时,我如何数值求解x[t]的零点
最初的问题由@rcollyer回答。我正在回答您在对rcollyer答案的第一次评论中提出的问题: 但是如果我们的s是“s:=NDSolve[{x'[t]^2==-x[t]^3-x[t]+1,x[0]==0.5},x,{t,0,5}]”,那么FindRoot函数只会返回一个错误,而绘图显示0.6左右有一个零 因此: 编辑 回答rcollyer的评论,“第二行”来自平方导数,如:
s = NDSolve[{x'[t]^2 == Sin[t], x[0] == 0.5}, x[t], {t, 0, Pi}];
Plot[Evaluate[{x[t]} /. s], {t, 0, Pi}]
来自:
DSolve[{x'[t]^2 == Sin[t]}, x[t], t]
(*
{{x[t] -> C[1] - 2 EllipticE[1/2 (Pi/2 - t), 2]},
{x[t] -> C[1] + 2 EllipticE[1/2 (Pi/2 - t), 2]}}
*)
但是,如果我们的s是“s:=NDSolve[{x'[t]^2==-x[t]^3-x[t]+1,x[0]==0.5},x,{t,0,5}]”,那么FindRoot函数只会返回一个错误,而绘图显示0.6左右有一个零。@LiKun,我没有提到它,但这里使用
:=
(SetDelayed
)没有任何意义。每次访问s
时,它都会重新执行NDSolve
,但对于您的系统来说,这不是必需的。改为使用=
(Set
),则s
将只执行一次。@LiKun错误是什么?看起来有一个奇点可能会导致error@FooBah,不可能有奇点,它是一个具有通解的二阶线性微分方程,a Sin[t]+b Cos[t]
@rcollyer我指的是你的第二部分:x'[t]^2===-x[t]^3-x[t]+1第二行从哪里来?
{t -> 0.60527}
s = NDSolve[{x'[t]^2 == Sin[t], x[0] == 0.5}, x[t], {t, 0, Pi}];
Plot[Evaluate[{x[t]} /. s], {t, 0, Pi}]
DSolve[{x'[t]^2 == Sin[t]}, x[t], t]
(*
{{x[t] -> C[1] - 2 EllipticE[1/2 (Pi/2 - t), 2]},
{x[t] -> C[1] + 2 EllipticE[1/2 (Pi/2 - t), 2]}}
*)