如何修正弹跳球行程计算的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。
希望对您有所帮助。
这是我用来计算弹跳球行进距离的公式:
其中:
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。
希望对您有所帮助。