// FunktionsTabulator.java MM 2010 import Tools.IO.*; // Eingaben /** * Programm zum Tabellieren von Funktionen. */ public class FunktionsTabulator { /* ------------------------------------------------- */ // Dialog /** * Funktionstabulator: * Funktionseingabe, Wertetabelle. */ public void dialog() { // Ueberschrift System.out.println(); System.out.println( "Funktionstabulator"); // Dialog char weiter = 'j'; do { // Neue Funktion Funktion fkt = funktionsAuswahl(); if( fkt == null) break; fkt.konsolenEingabe(); // Funktionsausgabe System.out.println(); System.out.println( "Funktion " + fkt); do { // Wertetabelle System.out.println(); erzeugeTabelle( fkt); System.out.println(); // Weiter weiter = IOTools.readChar( "Neue Tabelle (j/n)? "); } while( weiter == 'j'); weiter = IOTools.readChar( "Neue Funktion (j/n)? "); } while( weiter == 'j'); // Abschluss System.out.println(); System.out.println( "Programm beendet"); } /* ------------------------------------------------- */ // Funktion /** * Funktionsauswahl. * @return Funktion */ private Funktion funktionsAuswahl() { // Menue aller Funktionen System.out.println( "Funktionsauswahl"); System.out.println ( " Gerade ... 1"); System.out.println ( " Polynom ... 2"); System.out.println ( " Wurzel-Funktion ... 3"); System.out.println ( " e^x - Funktion ... 4"); System.out.println ( " a^x-Funktion ... 5"); System.out.println ( " sin-Funktion ... 6"); System.out.println ( " cos-Funktion ... 7"); System.out.println ( " tan-Funktion ... 8"); System.out.println ( " cot-Funktion ... 9"); System.out.println ( " arctan-Funktion ... 10"); System.out.println ( " ln-Funktion ... 11"); System.out.println ( " log-Funktion ... 12"); System.out.print ( " gebrochenrationale Funktion ... 13"); int eingabe = IOTools.readInteger(": "); // Festlegen der Funktion Funktion fkt = null; switch( eingabe) { case 1: fkt = new Gerade(); break; case 2: fkt = new Polynom( ); break; case 3: fkt = new Wurzel(); break; case 4: fkt = new Exp(); break; case 5: fkt = new Power(); break; case 6: fkt = new Sinus(); break; case 7: fkt = new Cosinus( ); break; case 8: fkt = new Tangens(); break; case 9: fkt = new Cotangens(); break; case 10: fkt = new Arctan(); break; case 11: fkt = new Ln(); break; case 12: fkt = new LogA(); break; case 13: fkt = new RationaleFunktion(); break; default: System.out.println(); System.out.println( "Fehlerhafte Eingabe!"); } return fkt; } /* ------------------------------------------------- */ // Tabellieren /** * Erzeugen und Ausgeben einer Wetetabelle. * @param fkt Funktion */ private void erzeugeTabelle( Funktion fkt) { // Eingabe der Tabellenparameter System.out.println( "Wertbereich"); double x0 = IOTools.readDouble( " Startargument x0 = "); int n = 1; do { n = IOTools.readInteger( " Anzahl n (n > 0) = "); } while( n < 1); double h = IOTools.readDouble( " Schrittweite h = "); // Wertetabelle double[] tabelle = fkt.tabellieren( x0, n, h); // Tabellenausgabe double x = x0; for( int i = 0; i < tabelle.length; i++) { System.out.println ( " F( " + x + ")\t= " + tabelle[ i]); x += h; } } /* ------------------------------------------------- */ // Programm /** * Hauptprogramm, startet Tabellieren von Funktionen. */ public static void main( String[] args) { // Tabulator erzeugen FunktionsTabulator tabulator = new FunktionsTabulator(); // Tabulator starten tabulator.dialog(); } } /* ------------------------------------------------- */ // Testbeispiel /* * Funktion * 8.0 + 4.0 x^1 + -10.0 x^2 + -5.0 x^3 + 2.0 x^4 + 1.0 x^5 * * Wertbereich * Startargument x0 = -2.5 * Anzahl n (n > 0) = 11 * Schrittweite h = 0.5 * F( -2.5) = -5.90625 * F( -2.0) = 0.0 * F( -1.5) = -1.09375 * F( -1.0) = 0.0 * F( -0.5) = 4.21875 * F( 0.0) = 8.0 * F( 0.5) = 7.03125 * F( 1.0) = 0.0 * F( 1.5) = -7.65625 * F( 2.0) = 0.0 * F( 2.5) = 53.15625 */