// Exp.java MM 2010 /** * Exponentialfunktion e ^ x, * D = R, W = ] 0, +unendlich[. */ public class Exp extends DifferenzierbareFunktion { /* ------------------------------------------------- */ // service-Methoden /** * Berechnen eines Funktionswertes f( x) = e ^ x. * @param arg Argument * @return e ^ arg */ public double wert( double arg) { return myExpBesser( arg); } /** * Berechnen der ersten Ableitung f'( x) = e ^ x. * @param arg Argument * @return Wert der ersten Ableitung an der Stelle arg */ public double wertErsteAbleitung( double arg) { return wert( arg); } /* ------------------------------------------------- */ // Reihenentwicklung /** * Exponentialfunktion (Reihenentwicklung): * e ^ x = 1 + x + ( x ^ 2) / 2! + ( x ^ 3) / 3! ... * @param x Argument * @return Wert an der Stelle x nach Reihenentwicklung */ public double myExp( double x) { double alteSumme, neueSumme = 1, summand = 1; int i = 0; do // Reihenentwicklung { i++; summand *= x / i; // neuer Summand // System.out.println // ( i + ": " + neueSumme + " " + summand); alteSumme = neueSumme; // neue Summe neueSumme += summand; } while(( neueSumme != alteSumme) && ( i < 1000)); return alteSumme; } /** * Verbesserte Exponentialfunktion: * Fuer x < 0 berechne e ^ x = 1 / (e ^ -x). * @param x Argument * @return Wert an der Stelle x nach Reihenentwicklung */ public double myExpBesser( double x) { if( x < 0) return 1 / myExp( -x); return myExp( x); } /* ------------------------------------------------- */ // toString-Methode /** * Darstellen der Funktion e. * @return Funktion in linearer Schreibweise */ public String toString() { return "e ^ x"; } }