// Polynom.java MM 2010 import Tools.IO.*; // Eingaben /** * Polynom, Berechnung mit Hornerschema. */ public class Polynom extends DifferenzierbareFunktion { /* ------------------------------------------------- */ // Attribute /** * Polynomkoeffizienten. */ private double[] koeffizienten = { 0}; /* ------------------------------------------------- */ // set-Methoden /** * Setzt Polynomkoeffizienten fest. * @param koeff Koeffizienten des Polynoms */ public void setPolynom( double[] koeff) { koeffizienten = koeff; } /** * Polynomeingabe ueber Konsole. */ public void konsolenEingabe() { // Eingabe der Polynomkoeffizienten System.out.println( "Polynomeingabe"); int grad; do { grad = IOTools.readInteger ( " Grad des Polynoms (>=0): "); } while( grad < 0); double[] koeff = new double[ grad + 1]; for( int i = 0; i < grad + 1; i++) koeff[ i] = IOTools.readDouble ( " " + i + ". Koeffizient: "); // Setzen der Polynomkoeffizienten setPolynom( koeff); } /* --------------------------------------------------*/ // service-Methoden /** * Berechnen eines Funktionswertes mittels HORNER. * @param arg Argument * @return Wert der Funktion an der Stelle arg */ public double wert( double arg) { double erg = 0; for( int i = koeffizienten.length - 1; i >= 0; i--) erg = erg * arg + koeffizienten[ i]; return erg; } /** * Berechnen einer Ableitung mittels * erweitertem HORNER. * @param arg Argument * @return Wert der ersten Ableitung an der Stelle arg */ public double wertErsteAbleitung( double arg) { double erg = 0, erg1 = 0; for( int i = koeffizienten.length - 1; i > 0; i--) { erg = erg * arg + koeffizienten[ i]; erg1 = erg1 * arg + erg; } return erg1; } /* ------------------------------------------------- */ // toString-Methode /** * Darstellung eines Polynoms. * @return Polynom in linearer Schreibweise */ public String toString() { String str = "" + koeffizienten[ 0]; for( int i = 1; i < koeffizienten.length; i++) str += " + " + koeffizienten[ i] + " x^" + i; return str; } }