3169 | Taylor | Polynomfunktion in Taylorpolynom entwickeln | ||||||||
| ||||||||||
Abzugebende Files: Taylor.txt, Taylor.java, *.java , 105.txt, 425.txt |
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
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.
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.
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.
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 |
java Taylor < Taylor.i1 > Taylor.out1
Das erzeugte File Taylor.out1 können Sie dann mit dem mitgelieferten Outputfile Taylor.o1 vergleichen.