繁体   English   中英

计算 function 的总和

[英]Calculate summation of the function

我有一个点数组列表,例如 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)²

喜欢计算 A¯ 我们可以写

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

我们得到了所有元素的总和,然后我们可以写

 A¯ = Asum/n

那么如何为 Σ(Ai-A¯)² 做到这一点

您正在寻找的是利用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM