对二维数组中的坐标进行单独操作

我正在研究计算物理学中的弹丸运动问题,我想对数组中的 x 和 y 坐标执行不同的数学运算。我正在努力解决的代码是在 for 循环中进行索引。


我尝试了不同的索引形式,但不断收到错误,例如“无法将输入数组从形状 (2,2) 广播到形状 (2)”和“使用序列设置数组元素”。


g = 9.81

theta = 30


dt = 0.1

t = 5


n = int(t/dt)

t = zeros(n)

r = zeros((n, 2), float)

v = zeros((n, 2), float)

a = zeros((n, 2), float)


r[0] = array([0,0])

v[0] = array([10*cos(theta), 10*sin(theta)])

t[0] = 0


for i in range(n-1):

    v[i+1] = v[0] - g*dt

    r[i+1] = r[i] + v[i]*dt 

    t[i+1] = t[i] + dt

插入的代码显示了具有不同值的两列(v[x,y] 和 r[x,y]),其中只有 y 坐标是正确的。这是因为 x 坐标应该是恒定的。我不明白如何使x坐标恒定,只对y坐标进行操作。我希望结果计算为:


v[i+1] = v[0]         # x-coordinate

v[i+1] = v[0] - g*dt  # y-coordinate


人到中年有点甜
浏览 128回答 1
1回答

哈士奇WWW

你只需要像这样索引 y 部分v[i+1, 1] = v[i,1] - g*dt
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python