如何用mathematica绘制三维空间连续200步沿网格点的随机游走图

2025-01-24 19:32:34
推荐回答(3个)
回答1:

随手贴一个自己的算法

RandomWalk3D[n_] := 

Module[{xrand, yrand, zrand, k, randompointlist, \[Theta], \[Phi]},

xrand = 0;

yrand = 0;

zrand = 0;

randompointlist = {{0, 0, 0}};

For[k = 1, k <= n, 

k++, \[Phi] = RandomReal[{0, 2 \[Pi]}]; \[Theta] = 

RandomReal[{0, \[Pi]}]; xrand = xrand + Sin[\[Theta]] Cos[\[Phi]];

yrand = yrand + Sin[\[Theta]] Sin[\[Phi]]; 

zrand = zrand + Cos[\[Theta]]; 

randompointlist = AppendTo[randompointlist, {xrand, yrand, zrand}]];

Graphics3D[{Red, Line[randompointlist]}]

]

然后运行RandomWalk3D[200]就行了

回答2:

你这个问题画图是次要的,你先想想怎么产生随机游走的三维坐标。如果你随机游走的坐标已经已经产生出来了,画图只要两个函数就可以了,假设你的游走坐标是一个List,只要用Plot3D函数配合画折线的函数就可以了。你更大的问题应该是怎么产生这样的三维坐标列表才对吧。

回答3:

gedian=Tuples[{1, -1}, 3];
steps=Accumulate[Table[gedian[[RandomInteger[{1, 8}]]], {200}]];
Graphics3D[Line[steps]]