3169 Taylor Polynomfunktion in Taylorpolynom entwickeln
Kategorie:Mathematik
Klasse:mittel
Eingabe:siehe Spezifikation
Ausgabe:siehe Spezifikation
Abzugebende Files: Taylor.txt, Taylor.java, *.java , 105.txt, 425.txt

Kurzbeschreibung:

Stellen Sie eine Polynomfunktion als Taylorpolynom dar.

Allgemeine Hinweise:

Aufgabenstellung:

Ihre Aufgabe ist es, eine Polynomfunktion durch Entwicklung in ein Taylorpolynom umzuformen. (Mathematisch gesehen entspricht das einer Verschiebung der Funktion entlang der x-Achse.) Gehen Sie dabei wie folgt vor:

Lesen Sie zunächst den Grad, danach die Entwicklungsstelle und abschließend die Koeffizienten (in absteigender Reihenfolge der Exponenten) einer Polynomfunktion ein.
Entwickeln Sie nun die eingelesene Funktion in ein Taylorpolynom:


x0: Entwicklungsstelle n! = 2*3*4*5*...*(n-1)*(n); (n+1)! = n!*(n+1); 0! = 1

Beginnend mit n=0 berechnen Sie nun die n-te Ableitung von f(x0) (benutzen Sie zur Berechnung aller Ableitungen das mitgelieferte Erstrundenprogramm !) und dividieren diese durch (n!).
(Anmerkung: Die 0-te Ableitung einer Funktion ist die Funktion selbst)

Brechen Sie die Berechnung ab, sobald die n-te Ableitung von f(x) gleich 0 ist. (Wichtig: Die n-te Ableitung von f(x), nicht die von f(x0) !) (Also wenn der Grad der Ableitungsfunktion = 0 ist und die Konstante (der Koeffizient von x^0) ebenfalls = 0 ist).

Ansonsten geben Sie nun dieses Zwischenergebnis nach den im Abschnitt AUSGABEDATEN vorgegebenen Regeln aus, erhöhen n um 1 und berechnen den nächsten Term.

Sind sie fertig, so geben Sie abschließend einen Zeilenvorschub aus.

Ein Beispiel: Sie sollen die Funktion

in ein Taylorpolynom entwickeln:





Beachten Sie, dass wir bei diesem Beispiel der Einfachheit halber nicht durch n! dividieren. Vergessen Sie bei Ihren Berechnungen jedoch nicht darauf! Die gesamte Ausgabe lautet:
21.140+32.000(x-2)+17.500(x-2)^2+3.000(x-2)^3

Eingabedaten:

Das Inputfile hat folgendes Format:
"<g> <x0> <kn> <k(n-1)> ... <k1> <k0> 999"
wobei <g> der Grad der Polynomfunktion, (Integer-Zahl >0 und <10)
<x0> die Entwicklungsstelle des Taylorpolynoms, (Integer-Zahl)
<kn> der Koeffizient von x hoch n (Float-Zahl)
...
<k0> der Koeffizient von x hoch 0, also eine Konstante ist. (Float-Zahl)

Das "999" bezeichnet das Ende des Eingabedatensatzes und ermöglicht es Ihnen festzustellen, ob eventuell zuwenig Koeffizienten vorhanden sind.

Beispiel: "5 -2 1.5 5.4 3 -13.01 4 3.5 999"

bedeutet: f(x) = 1.5x^5 + 5.4x^4 + 3x^3- 13.01x^2 + 4x + 3.5 und Sie sollen als Entwicklungsstelle x0=-2 verwenden.

Ausgabedaten:

Ein Zwischenergebnis wird wie folgt ausgegeben:

Ist Ihr Ergebnis = 0, so geben Sie gar nichts aus.
Sonst geben Sie das Ergebnis mit Vorzeichen aus. Ist es kleiner als 0, so reicht ein printFixed(), für positive Ergebnisse müssen Sie das "+" explizit ausgeben. (Beispiel: -13.5 => -13.500; 24 => +24.000)
Achtung: Ist dies die erste Ausgabe für den aktuellen Datensatz und ist das Ergebnis positiv, so geben sie KEIN "+" aus. (Ihre Ausgabefunktion soll also nicht mit "+" beginnen)
Ist n = 0, so geben Sie nur ein Leerzeichen und sonst nichts mehr aus.
Ist n > 0, geben Sie nun ein Leerzeichen, "(x{-|+}<|x0|>)[^<n>]" und noch ein Leerzeichen aus.
Erklärung: <|x0|> ersetzen Sie durch den Betrag von x0, {+|-} ersetzen Sie durch das konträre Vorzeichen von x0, [^<n>] ersetzen Sie durch "^" gefolgt von n, wenn n > 1. Wenn n = 1 dann lassen Sie diesen Ausdruck überhaupt weg.

Beispiele:
Zwischenergebnis= 23, x0= 5, n=2: "+23.000 (x-5)^2"
Zwischenergebnis=-12.5, x0= 0, n=1: "-12.500 (x+0)"
Zwischenergebnis= 14, x0=-2, n=3: "+14.000 (x+2)^3"
Aber:
Bis jetzt noch keine Ausgabe gemacht und Zwischenergebnis= 14, x0=-2, n=3: "14.000 (x+2)^3"

Nachdem die gesamte Berechnung abgeschloßen ist:
Haben Sie überhaupt keine Ausgaben gemacht, so geben Sie "0.000" aus.
Geben Sie in jedem Fall zum Schluß einen Zeilenvorschub aus.

Fehlerbehandlung:

Sämtliche Eingabedatensätze sind immer bis zum definierten Endezeichen einzulesen.
Generell wird bei fehlerhaften Eingabedatensätzen nur eine einzige Fehlermeldung erzeugt, weitere Berechnungen werden nicht mehr durchgeführt.

Enthält der Eingabedatensatz einen ungültigen Datentyp, so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub, ausgegeben werden.

Waren die Datentypen bei allen Eingaben richtig, die eingegebenen Daten dann aber inhaltlich nicht korrekt (z.B. zuviele oder zuwenige Koeffizienten), so soll Ihr Programm "FALSCHE EINGABE", gefolgt von einem Zeilenvorschub, ausgeben.

Beispiele:

Eingabedaten
1 3 0 0 999

2 1 1 2 3 4 5 999

3 2 3 0.5 -2 3.14 999

Ausgabedaten
0.000

FALSCHE EINGABE

25.140 +36.000 (x-2) +18.500 (x-2)^2 +3.000 (x-2)^3


Testen:

Diese Beispiele dienen nur zur Verdeutlichung der Spezifikation und müssen nicht korrekt formatiert sein. Die korrekte Formatierung entnehmen Sie bitte dem mitgelieferten Outputfile. Zum Testen Ihrer Lösung können Sie aus den mitgelieferten Eingabedaten wie folgt eine Ausgabedatei erzeugen:

java Taylor < Taylor.i1 > Taylor.out1

Das erzeugte File Taylor.out1 können Sie dann mit dem mitgelieferten Outputfile Taylor.o1 vergleichen.