@Override
	public double evaluate(double z) {

		/* Intervall finden, in dem z liegt */
		int interv = (int) ((z - a) / h);

		/* Intervall [a+interv*h, a+(interv+1)*h] gefunden */

		/* Sonderfaelle, wenn z ausserhalb des Eingangsintervalls liegt */
		if (interv < 0)
			return y[0];
		if (interv >= n)
			return y[y.length - 1];

		/*
		 * Vergleich zwischen linker und rechter Grenze des gefundenen
		 * Intervalls
		 */
		if (Math.abs(z - a - interv * h) < Math.abs(z - a - (interv + 1) * h))
			return y[interv];
		else
			return y[interv + 1];
	}