我只学了几个月的python,对C完全是个新手,我从网上得到了一个C代码,我很想学习它。但是我只懂python语言,所以有人能帮我把下面的代码翻译成python就太好了。提前谢谢!在
for(i=0; i<n; i++) { /* Foreach particle "i" ... */
ax=0.0;
ay=0.0;
az=0.0;
for(j=0; j<n; j++) { /* Loop over all particles "j" */
dx=x[j]-x[i];
dy=y[j]-y[i];
dz=yz[j]-z[i];
invr = 1.0/sqrt(dx*dx + dy*dy + dz*dz + eps);
invr3 = invr*invr*invr;
f=m[j]*invr3;
ax += f*dx; /* accumulate the acceleration from gravitational attraction */
ay += f*dy;
az += f*dx;
}
xnew[i] = x[i] + dt*vx[i] + 0.5*dt*dt*ax; /* update position of particle "i" */
ynew[i] = y[i] + dt*vy[i] + 0.5*dt*dt*ay;
znew[i] = z[i] + dt*vz[i] + 0.5*dt*dt*az;
vx[i] += dt*ax; /* update velocity of particle "i" */
vy[i] += dt*ay;
vz[i] += dt*az;
}
再次感谢!在
把这当作学习一些C语言的理想机会,它的语法与Python不同。在
这对你很有好处
老实说,除了循环之外,这个已经非常接近python了。。
只维护循环计数器j,它在每次循环迭代后递增。循环对所有 运行。祝你好运。这是直译
(Edit:是直译,但原始C代码中有一些异常,@hughdbrown在评论中指出了这一点——看起来你正试图从完全崩溃的代码中研究这个主题,它甚至无法编译,这对你来说似乎是非常不明智的,所以,无论如何,我将冒昧地修复这个Python“几乎”直译的原始C代码的明显错误和荒谬之处…:
当然,它假设列表x,y,z。。。vx、vy、vz都是预先存在的,并且长度相同
n
,就像C代码片段假设相同的命名数组一样。在相关问题 更多 >
编程相关推荐