calc-Dispersion

node v8.17.0
version: 1.0.0
endpointsharetweet
const { zip } = require('lodash'); /** * 四舍五入, 保留 digit 为小数 */ const round = (number, digit = 2) => { const t = 10 ** digit; return Math.round(number * t) / t; }; const calcAverage = array => { const total = array.reduce((previous, current) => previous + current, 0); return total / array.length; }; const calcDispersionHtt = (xs, ys) => { const x0 = calcAverage(xs); const y0 = calcAverage(ys); const ls = zip(xs, ys).map(([x, y]) => Math.sqrt((x - x0) ** 2 + (y - y0) ** 2)); const l0 = calcAverage(ls); const dispersion = Math.sqrt(calcAverage(ls.map(l => (l - l0) ** 2))); return round(dispersion); }; const calcDispersionMoon = (xs, ys) => { const ls = zip(xs, ys).map(([x, y]) => Math.sqrt(x ** 2 + y ** 2)); const l0 = calcAverage(ls); const dispersion = Math.sqrt(calcAverage(ls.map(l => (l - l0) ** 2))); return round(dispersion); }; // input x的数组, y的数组 const resultHtt = calcDispersionHtt([1,2,3], [4,4,6]); console.log(resultHtt); const resultMoon = calcDispersionMoon([1,2,3], [4,4,6]); console.log(resultMoon);
Loading…

no comments

    sign in to comment