Вычислить суммирование функции - PullRequest
1 голос
/ 30 октября 2019

У меня есть список массивов точек, таких как A [] = {2,5,2,25,84} Я вычислил A 'как Σ ((Ai) / n), где n - количество наборов данных, которые мне нужнорассчитать Σ (Ai-A¯) ² Как мне сделать это с помощью Java-потоков?

, как в приведенном выше примере A¯ будет (2 + 5 + 2 + 25 + 84) / 5, который выходит вбыть 23,6. тогда по следующей формуле это будет (2-23.6) ² + (5-23.6) ² + (2-23.6) ² + (25-23.6) ² + (84-23.6) ²

Как рассчитатьМы можем написать

Integer Asum = A
            .stream()
            .reduce((prev, next) -> prev + next)
            .get();

мы получили суммирование всех элементов, затем мы можем написать

 A¯ = Asum/n

, как это сделать для Σ (Ai-A¯) ²

1 Ответ

0 голосов
/ 30 октября 2019

Вам нужно использовать операцию map вместе с операцией sum терминала, например, в следующем блоке кода:

final int[] a = {2, 5, 2, 25, 84};
double averageOfA = (double) Arrays.stream(a).sum() / a.length; // A¯ in question
// System.out.println(averageOfA); // prints 23.6
double sumOfA = Arrays.stream(a)
            .mapToDouble(num -> Math.pow(num - averageOfA, 2)) // mapping here
            .sum(); // sum of all such values 
// System.out.println(sumOfA); // prints 4929.2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...