如何修正弹跳球行程计算的Matlab函数

How to correct Matlab function for bouncing ball travel distance calculation

这是我用来计算弹跳球行进距离的公式:

其中:
h(n) - 弹跳球移动的总距离
H - 落球高度
n - 反弹次数
e - 恢复系数

我创建了 Matlab 函数来进行计算:

function distance = totalDistance(H, n, e)
sum = 0;
bounceHeight = 0;
    for i = 1:n
        bounceHeight  = H*(e^(2*n));
        sum = sum + e^(2*n);
    end
distance = H+(2*H*sum);
end

此函数采用初始下落高度 H、反弹次数 n、恢复系数 e 和 returns 我弹跳球的总距离。

然后我在命令 window 中调用这个函数来检查:

totalDistance(2,2,2)

函数returns错误的结果。它 returns 130 而不是 82.

为什么程序运行不正常?

首先,@Adriaan 在评论中所说的一切都适用。

除此之外,您还有几个问题: 1.变量bounceHeight未被使用。 2. 您需要添加 e^(2*i) 而不是 e^(2*n).

您尝试做的事情也可以用更简单(和更高效的代码)来完成:

h = H + 2*H*sum(e.^(2:2:2*n));

sum 的具体作用是对由变量 e 创建的数组的所有元素求和,该变量从 2 开始计算为列表的幂,以 2n 结尾,增量为 2。

希望对您有所帮助。