Wolfram mathematica 数学解题

Wolfram mathematica 数学解题,wolfram-mathematica,differential-equations,Wolfram Mathematica,Differential Equations,我有一个关于Mathematica中的NDSolve函数的问题。 我有一个由这两个方程定义的振荡器: x' = v v' = -x - u*v^3 其中u是一个常数 如何创建解决此问题的NDSolve?我尝试了以下代码(这取决于时间),但它不起作用: eq1 = x'[t] == v; eq2 = v' == -x[t] - u*v^3; eq3 = x[0] == 2; (初始位移为2m) 非常感谢…您需要为u指定一个数值,以及v[t]的初始条件: u=1.0; solution=NDSo

我有一个关于Mathematica中的NDSolve函数的问题。 我有一个由这两个方程定义的振荡器:

x' = v
v' = -x - u*v^3
其中u是一个常数

如何创建解决此问题的NDSolve?我尝试了以下代码(这取决于时间),但它不起作用:

eq1 = x'[t] == v;
eq2 = v' == -x[t] - u*v^3;
eq3 = x[0] == 2;
(初始位移为2m)


非常感谢…

您需要为
u
指定一个数值,以及
v[t]
的初始条件:

u=1.0;
solution=NDSolve[{x'[t]==v[t], v'[t]==-x[t]-u v[t]^3,x[0]==2,v[0]==-1},{x,v},{t,0,1}]

Plot[{solution[[1,1,2]][t],solution[[1,2,2]][t]},{t,0,1}]

您需要注意,第一个方程一旦就
t
微分,就可以用来代替
v[t]
。但是第二个方程变成了一个二阶常微分方程,需要提供另一个额外的初始条件。我们将给予

v[0]==x'[0]==some number
然后,在为
x
求解此ODE后,您可以恢复
v[t]==x'[t]
我用
操作
的方式给你一个解决方案,这样你就可以从几何角度看清楚情况

(* First equation *)
v[t] = x'[t];
(* 
   Differentiate this equation once and substitute 
   for v[t] in the second equation
*)
Manipulate[
With[{u = Constant, der = derval}, 
     res = NDSolve[{x''[t] == -x[t] - u*x'[t]^3, x[0.] == 2,x'[0.] == der},
     x, {t, 0., 30.}] // First; 
     Plot[Evaluate[{x[t], v[t]} /. res], {t, 0, 30}, PlotRange -> All,
     Frame -> True,Axes -> None, ImageSize -> 600]
   ],
{{Constant, 0.,TraditionalForm@(u)}, 0.,3, .1},
{{derval, -3., TraditionalForm@(v[0] == x'[0])}, -3, 3, .1}
]


希望这对你有所帮助,但下次在你提问之前,你需要先复习一下理论,因为你可以看到你所问的问题涉及的是非常基础和初等的数学,而不是数学编程。祝你好运

谢谢!我想我没有100%清楚我该做什么。。。对不起。无论如何,干得好!如果您还有其他问题,这里的大多数专家现在都转到了。
(* First equation *)
v[t] = x'[t];
(* 
   Differentiate this equation once and substitute 
   for v[t] in the second equation
*)
Manipulate[
With[{u = Constant, der = derval}, 
     res = NDSolve[{x''[t] == -x[t] - u*x'[t]^3, x[0.] == 2,x'[0.] == der},
     x, {t, 0., 30.}] // First; 
     Plot[Evaluate[{x[t], v[t]} /. res], {t, 0, 30}, PlotRange -> All,
     Frame -> True,Axes -> None, ImageSize -> 600]
   ],
{{Constant, 0.,TraditionalForm@(u)}, 0.,3, .1},
{{derval, -3., TraditionalForm@(v[0] == x'[0])}, -3, 3, .1}
]