我正试图解决一个问题:我必须使用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]]
答案 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]
答案 1 :(得分:0)
据我所知,你的代码运行正常但情节是空的,因为你只用一个函数调用ParametricPlot
。从文档中,您可以调用ParametricPlot
:
ParametricPlot[{fx[t], fy[t]}, {t, tmin, tmax}]
由于您仍然在解决1D问题并且只有x[t]
,ParametricPlot
无法绘制任何内容;它错过了轨迹的y
坐标。完成2D计算后,ParamatricPlot
应该能够让您想出自己想要的数字。如果您想进行3D计算,则应使用ParamatricPlot3D
。
但问题是:您打算如何计算石墨烯中的电子?电子在第三维中的运动根本不会遵循牛顿力学,因为它在这个方向上受到如此大的限制。事实上,无论如何,我都会对使用牛顿第二定律在石墨烯中保持谨慎,因为石墨烯中的电子表现得像无质量粒子。我把结果的解释留给你了,但是我的物理学家无法抗拒加入这个警告。