data = {1, 2, 5, 4, 5, 6, 7, 8}
A = {1}
B = {0}
currentA = 1
currentB = 0
For[n = 2, n <= 8, n++, {
currentA = currentA + (data[[n]] - currentA)/n
A = AppendTo[A, currentA]
currentB = currentB + (data[[n]] - A[[n - 1]])*(data[[n]] - A[[n]])
B = AppendTo[B, currentB]
}]
A
B
ListPlot[A, AxesLabel -> {"n", "均值"}]
ListPlot[B, AxesLabel -> {"n", "方差"}]
public class Accumulator
{
private double m;
private double s;
private int N;
public void addDateValue(double x)
{
N++;
s=s+1.0*(N-1)/N*(x-m)*(x-m);
m=m+(x-m)/N;
}
public double mean()
{
return m;
}
public double var()
{
return s/(N-1);
}
public double stddev()
{
return Math.sqrt(this.var());
}
}
blog.csdn.net/u014485485/…