我想通过使用递归函数来计算(对于一个项目)自避免随机游走。我用两个数组StepX和StepY成功做到了这一点,这两个数组分别跟踪路径的x和y。递归函数类似于:
go(int x, int y, int n,int* StepX,int* StepY)
这可以总结为“对于第n步,在(x,y)记住你已经在StepX和StepY中”。
这个项目已经完成了,我很高兴,但我想知道如何使用(也)一个网格来使它工作,1和0描述已访问/尚未访问的位置,以提高速度。
我认为将函数扩展为
go(int x, int y, int n,int* StepX,int* StepY, int* lattice)
这就是
我有个问题:
创建一个程序,该程序构造一个一维和100000个站点的格。在这个晶格中,在随机位置放置一些陷阱分子,它们的浓度c。将1粒子放置在晶格上的一个随机位置,让它进行随机游动。在这一步中,您将不会设置时间限制,也就是说,您将不会声明特定数目的步骤。当粒子落在陷阱上时,行走将停止.边界条件的...Beware。当粒子到达晶格的边界时,不应允许它逃离晶格,而应留在晶格中,无论是返回原来的位置,还是放置在晶格的相反位置.
我的方法显示在我创建的代码中(我在代码中有注释)。
def steps1d(self,pos,c):
#pos: number of positions
#
请看下面的循环--它调用plot k(k-1)/2次,但实际上从来没有生成过任何图。但是,如果我更改代码以手动调用绘图(例如plot(my_tree,c(1,2),..),则会生成绘图。)
my_tree是一个GBM对象。请参阅下面的完整代码
#there is nothing wrong with this code, but yet it does not work
for (i in my_tree$var.names) {
for (j in my_tree$var.names) {
if (i < j) plot(my_tree,
我试着做这个练习:
氯化钠晶体中的钠和氯原子排列在立方晶格上,但钠和氯之间的原子相互交替,使得每个钠被六氯包围,每个氯被六钠包围。用两种不同的颜色来表示这两种类型的原子,创建氯化钠晶格的可视化。
我的代码是:
from vpython import *
from numpy import *
L = 5
R = 0.5
for i in range(-L,L,2):
for j in range(-L,L,2):
for k in range(-L,L,2):
sphere(pos=vector(i,j,k),radius = R, color