gpt4 book ai didi

java - 有效地计算物体的位置、速度和其他运动导数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:44:29 24 4
gpt4 key购买 nike

好吧,这里有一个编程/物理难题,假设是 Java(虽然这并不重要 - 但为了保持一致性,我们将使用 Java)。

我有一个 double 组,其中每个元素代表对象位置的连续导数。所以:

d[0] // position
d[1] // velocity
d[2] // accelleration

等...

至少有 1 个元素,可能有任意数量的元素(但实际上,可能不超过 5 个)。数组末尾以外的所有元素都假定为零。

我们还有一个表示时间的 double t

所以如果 d.length 是 3 那么非常具体:

d[0] += d[1] * t + d[2] * t * t / 2
d[1] += d[2] * t

但是我们如何编写一个迭代解决方案(没有递归!)来更新时间 t 内任意长度 a 的数组的所有元素?

应该为效率和简洁性投票。

编辑:运动定律在这个网站的物理页面上,但基本上每个术语都有以下形式:

power(t,n) / factorial(n)

所以第一个等式的下一项将是 d[3] * t*t*t/6

如果你不熟悉这些方程式,请不要让我解释。

一个测试用例:

final static double[] D = { 5.0, 4.0, 3.0, 2.0, 1.0 };
double t = 10.0

应该给:

[945.0, 300.66666666666663, 73.0, 12.0, 1.0]

由于精度误差,第二个元素可能会有所不同。

最佳答案

我认为这样的方法可行。

int length = d.length;
for (int i = 0; i < length - 1; i++) {
double temp = 0;
for (int j = length - 1; j > i; j--)
temp = (temp + d[j]) * t / (j - i);
d[i] += temp;
}

关于java - 有效地计算物体的位置、速度和其他运动导数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29175664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com