Я испытываю некоторую несогласованность с кал c, когда пытаюсь вычислить некоторые средние значения. Видимо, я делаю что-то не так, но не могу понять.
У меня есть пример массива образцов скорости:
[3.3, 3.3, 3.32, 3.32, 3.22, 3.22, 3.14, 3.14, 3, 3, 3, 3, 3.02, 3.02, 2.96, 2.96, 2.92, 2.92, 2.88, 2.88, 2.88, 2.88, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, 2.88, 2.88, 2.88, 2.88, 2.86, 2.86, 2.84, 2.84, 2.86, 2.86, 2.88, 2.88, 2.9, 2.9, 2.86, 2.86, 2.84, 2.84, 2.84, 2.84, 2.82, 2.82, 2.8, 2.8, 2.64, 2.64, 0, 0, 2.22, 2.22, 2.3, 2.3, 2.4, 2.4, 2.44, 2.44, 2.58, 2.58, 2.6, 2.6, 2.62, 2.62, 2.62, 2.62, 2.58, 2.58, 2.54, 2.54, 2.52, 2.52, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.48, 2.48, 2.46, 2.46, 2.44, 2.44, 2.44, 2.44, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42]
Теперь, чтобы найти среднюю скорость, я делаю
[3.3, 3.3, 3.32, 3.32, 3.22, 3.22, 3.14, 3.14, 3, 3, 3, 3, 3.02, 3.02, 2.96, 2.96, 2.92, 2.92, 2.88, 2.88, 2.88, 2.88, 2.86, 2.86, 2.86, 2.86, 2.86, 2.86, 2.88, 2.88, 2.88, 2.88, 2.86, 2.86, 2.84, 2.84, 2.86, 2.86, 2.88, 2.88, 2.9, 2.9, 2.86, 2.86, 2.84, 2.84, 2.84, 2.84, 2.82, 2.82, 2.8, 2.8, 2.64, 2.64, 0, 0, 2.22, 2.22, 2.3, 2.3, 2.4, 2.4, 2.44, 2.44, 2.58, 2.58, 2.6, 2.6, 2.62, 2.62, 2.62, 2.62, 2.58, 2.58, 2.54, 2.54, 2.52, 2.52, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.48, 2.48, 2.46, 2.46, 2.44, 2.44, 2.44, 2.44, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42, 2.42]
.reduce(function(acc, val) { return acc + val; }, 0)/100
Результат: (м / с s)
2.670800000000001
Теперь, чтобы преобразовать в темп, я делаю
1000/2.670800000000001 = 374.41964954320787
Итак, 374,41964954320787 секунд
Теперь, если я сначала преобразую этот массив значений скорости в темп с то же преобразование, что и
speedArray.map(v => 1000/v)
Я получаю этот массив
[303.03030303030306, 303.03030303030306, 301.20481927710847, 301.20481927710847, 310.55900621118013, 310.55900621118013, 318.4713375796178, 318.4713375796178, 333.3333333333333, 333.3333333333333, 333.3333333333333, 333.3333333333333, 331.12582781456956, 331.12582781456956, 337.83783783783787, 337.83783783783787, 342.4657534246575, 342.4657534246575, 347.22222222222223, 347.22222222222223, 347.22222222222223, 347.22222222222223, 349.65034965034965, 349.65034965034965, 349.65034965034965, 349.65034965034965, 349.65034965034965, 349.65034965034965, 347.22222222222223, 347.22222222222223, 347.22222222222223, 347.22222222222223, 349.65034965034965, 349.65034965034965, 352.11267605633805, 352.11267605633805, 349.65034965034965, 349.65034965034965, 347.22222222222223, 347.22222222222223, 344.82758620689657, 344.82758620689657, 349.65034965034965, 349.65034965034965, 352.11267605633805, 352.11267605633805, 352.11267605633805, 352.11267605633805, 354.6099290780142, 354.6099290780142, 357.14285714285717, 357.14285714285717, 378.78787878787875, 378.78787878787875, Infinity, Infinity, 450.45045045045043, 450.45045045045043, 434.7826086956522, 434.7826086956522, 416.6666666666667, 416.6666666666667, 409.8360655737705, 409.8360655737705, 387.5968992248062, 387.5968992248062, 384.6153846153846, 384.6153846153846, 381.6793893129771, 381.6793893129771, 381.6793893129771, 381.6793893129771, 387.5968992248062, 387.5968992248062, 393.7007874015748, 393.7007874015748, 396.8253968253968, 396.8253968253968, 400, 400, 400, 400, 400, 400, 403.2258064516129, 403.2258064516129, 406.5040650406504, 406.5040650406504, 409.8360655737705, 409.8360655737705, 409.8360655737705, 409.8360655737705, 413.22314049586777, 413.22314049586777, 413.22314049586777, 413.22314049586777, 413.22314049586777, 413.22314049586777, 413.22314049586777, 413.22314049586777]
Теперь выполняем вычисление сохранения AVG для этого
Как это oo.filter(v => v !== Infinity).reduce(function(acc, val) { return acc + val; }, 0)/98
370.3021539217866
AVG темп этих выборок:
370.3021539217866
УВЕДОМЛЕНИЕ над массивом имеет 2 значения бесконечности, и поэтому деление с 98, а не 100
, что не то же самое, что преобразование AVG СКОРОСТЬ в темпе
Что я могу делать не так?