public void plot()
    {
        final double[] data = new double[measures.size()];
        int n = 0;
        double sum = 0.0;
        double min = 0.0;
        for(Double d0 : measures) {
            double h = d0;
            min = n == 0 ? h : Math.min(h, min);
            data[n++] = h;
            sum += h;
        }
        double av = sum / n;
        System.err.println("av="+av);
        System.err.println("min="+min);
        GOpt1D go = new GOpt1D(av, min/100.0); 
        double x0 = go.opt(new GOpt1D.Function() {
                public double eval(double x) { return -s1(data, x); } }, 
                1e-3);
        System.err.println("x0="+x0);
        for(Point2D.Double p : go) {
            System.out.format("%8.5f %8.5f\n", p.getX(), p.getY());
        }
    }