求解二维运动微分方程

时间:2010-10-21 03:31:47

标签: wolfram-mathematica

我正试图解决一个在力{k1 + k2 * y,k3 * t}下找到物体位置这个非常简单的问题。这就是我进入Mathematica 7的原因:

DSolve[{
  x''[t]*m == k1 + k2*y[t],
  y''[t]*m == k3*t,
  y'[0] == 0,
  y[0] == 0,
  x'[0] == 0,
  x[0] == 0
}, {x[t], y[t]}, t]

我收到此错误:

DSolve :: deqn:在第一个参数{-C m(x ^ [Prime])[t] ^ 2 == k1 + k2 y [t]中预期而不是True的等式或等式列表, m(y ^ [Prime] [Prime])[t] == k3 t,True,y [0] == 0,True,x [0] == 0}。

似乎Mathematica对边界条件x'[0] == 0不满意。为什么会这样?

3 个答案:

答案 0 :(得分:3)

当你输入它时它起作用...尝试在新笔记本中进行

alt text

答案 1 :(得分:2)

当我剪切并粘贴您已发布到M'ma 7.0.1并评估的代码时,我得到了结果

{{x[t] -> (60*k1*m*t^2 + k2*k3*t^5)/(120*m^2), 
     y[t] -> (k3*t^3)/(6*m)}}

你的M'ma错误信息告诉我你在实际的M'ma输入中实际上只有一个素数(即x'[t])。它引用的等式-C m (x^[Prime])[t]^2==k1+k2 y[t]与上面代码的第一行不匹配。

怀疑先前已将x'[0]和y'[0]分配为零,这导致x'[0]==0, ..., y'[0]==0折叠为True。最好的测试方法:杀死你的内核并重新评估上面的输入(在修复拼写错误之后)。

答案 2 :(得分:0)

belisarius和Eric Towers都建议杀死内核并重新评估。它们最有可能是正确的,因为某些东西有先前的定义。您可以通过

检查是否属实
?<variable name>

作为杀死内核的替代方法,我建议通过

清除它们的值
Clear[x, y, k1, k2, k3, m]

或者,如果你真的想摆脱变量的任何定义,那就是Remove。这样,您就不必重新计算当前会话中的任何其他内容。