无法在Mathematica中求解库仑力微分方程

时间:2014-10-26 09:06:15

标签: wolfram-mathematica

我正试图解决一个问题:我必须使用Mathematica在石墨烯晶格中找到电子的轨迹。我试图用NDSolve求解库仑力方程并绘制每个方向的结果,但我得到了一个白色图。有人可以帮帮我吗?先感谢您。这是x方向的代码:

coordx = {0.6327, 1.88058, 3.03927, 4.28716, 5.44584, 6.69373, 
   7.85241, 9.10029, 1.9728, 3.22069, 4.37937, 5.62726, 6.78594, 
   8.03382, 9.19251, 10.4404, 3.3129, 4.56079, 5.71947, 6.96736, 
   8.12604, 9.37393, 10.53261, 11.7805, 4.653, 5.90089, 7.05956, 
   8.30746, 9.46614, 10.71403, 11.87271, 13.1206};
me = 9.01*10^-31;
pi = 3.14159;
epsilon0 = 8.854*10^-12;
q = -1.6*10^-19;
Q = 1.6*10^-19;
step = 0.01;
Forzax[p_, r_] := 
 Sum[(Q*q)/(4 pi*epsilon0*Norm[r - p[[i]]]^2), {i, Length[p]}]
Forzax[coordx, {x[t]}];
NDSolve[{x''[t] == Forzax[coordx, {x[t]}]/me , x[0] == 0, 
  x'[0] == 0}, {x[t]}, {t, 0, 1500}]
Show[ParametricPlot[Evaluate[{x[t]} /. %], {t, 0, 1500}, 
  PlotRange -> All]]

2 个答案:

答案 0 :(得分:1)

我不知道你想要绘制什么,但是这些修改似乎可以描绘你的功能。

sol = NDSolve[{x''[t] == Forzax[coordx, {x[t]}]/me,
    x[0] == 0, x'[0] == 0}, {x}, {t, 0, 1500}];
f = sol[[1, 1, 2]];
Plot[f[t], {t, 0, 1500}, PlotRange -> All]

enter image description here

答案 1 :(得分:0)

据我所知,你的代码运行正常但情节是空的,因为你只用一个函数调用ParametricPlot。从文档中,您可以调用ParametricPlot

ParametricPlot[{fx[t], fy[t]}, {t, tmin, tmax}]

由于您仍然在解决1D问题并且只有x[t]ParametricPlot无法绘制任何内容;它错过了轨迹的y坐标。完成2D计算后,ParamatricPlot应该能够让您想出自己想要的数字。如果您想进行3D计算,则应使用ParamatricPlot3D

但问题是:您打算如何计算石墨烯中的电子?电子在第三维中的运动根本不会遵循牛顿力学,因为它在这个方向上受到如此大的限制。事实上,无论如何,我都会对使用牛顿第二定律在石墨烯中保持谨慎,因为石墨烯中的电子表现得像无质量粒子。我把结果的解释留给你了,但是我的物理学家无法抗拒加入这个警告。