
/**
 * Beschreiben Sie hier die Klasse FunktionsTester.
 *
 * @author Cellum
 * @version 1.0
 */

public class GanzrationaleFunktion extends Funktion {
    private final double[] koeffizienten;
    /**
     * Konstruktor für Objekte der Klasse GanzrationaleFunktion
     */
    public GanzrationaleFunktion(double[] koeffizienten) {
        if (koeffizienten.length > 0)
            this.koeffizienten = koeffizienten;
        else
            this.koeffizienten = new double[]{0};
    }

    /**
     * Gibt den Funktionswert an der Stelle x zurück
     */
    public double getFunktionsWert(double x) {
        double result = 0;
        for (int i = 0; i < koeffizienten.length; i++) {
            result += koeffizienten[i] * Math.pow(x, i);
        }
        return result;
    }

    /**
     * Gibt die Ableitungsfunktion der aktuellen Funktion zurück
     */
    public Funktion getAbleitung() {
        double[] ableitungsKoeffizienten = new double[koeffizienten.length - 1];
        for (int i = 0; i < ableitungsKoeffizienten.length; i++) {
            ableitungsKoeffizienten[i] = koeffizienten[i] * (koeffizienten.length - 1 - i);
        }
        return new GanzrationaleFunktion(ableitungsKoeffizienten);
    }
}

