4112 | symbdiff | Symbolisches Differenzieren | ||||||||
| ||||||||||
Abzugebende Files: symbdiff.txt, Main.java, symbdiff/*.java , 4698.txt, 4729.txt |
Eine Funktion soll differenziert werden.
Eine Funktion wird eingelesen, soll differenziert und vereinfacht und ausgegeben werden. Die Funktion darf aus einzelnen Termen bestehen, die eine der folgenden Formen haben müssen:
Differentationsregeln:
(<Koeffizient><x><Exponent>)' => <Koeffizient>*<Exponent><x><Exponent>-1 für <Exponent> größer als 1
(<Koeffizient><x>1)' oder (<Koeffizient><x>)' => <Koeffizient>
(<Zahl>)' => fällt gänzlich weg
e(<Zahl><x>)' => <Zahl>e(<Zahl><x>)
sin(<Zahl><x>)' => <Zahl>cos(<Zahl><x>)
cos(<Zahl><x>)' => -<Zahl>sin(<Zahl><x>)
(Ist bei e, sin oder cos keine Zahl vor der Variable <x> wird die erste <Zahl> (also die innere Ableitung) bei der Berechnung der Ableitung weggelassen)
(Term1+Term2)' => Term1' + Term2'
(Term1-Term2)' => Term1' - Term2'
BEACHTE:
Eine Funktion darf aus maximal 6 Termen bestehen.
Vereinfacht soll nur anhand folgender Regeln werden:
Eine Funktion, die aus den zuvor spezifizierten Termen bestehen darf. Innerhalb der Funktion sind keine Leerzeichen erlaubt. Differenziert wird nach nach dem ersten erkannten (deutschen) Alphabetszeichen (keine Umlaute), das nicht eine höhere Funktion (wie sin, cos, e) darstellt. Außer dieser Variable sind keine andersnamigen Variablen erlaubt.
Ausgegeben wird die resultierende Funktion, die laut vorigen Regeln differenziert und vereinfacht wurde. Kürzt sich alles heraus wird einfach 0 ausgegeben. Geben Sie am Ende einen Zeilenvorschub aus.
Genügt die Eingabe nicht den Erfordernissen, ist nur eine Fehlermeldung FALSCHE EINGABE gefolgt von einem Zeilenvorschub auszugeben.
Eingabedaten |
cos(3a)+3a2+5a2-4a3+cos(3a)
e(s)+e(s)-cos(3x |
Ausgabedaten |
-6sin(3a)+16a-12a2
FALSCHE EINGABE |
java Main < symbdiff.i1 > symbdiff.out1
Das erzeugte File symbdiff.out1 können Sie dann mit dem mitgelieferten Outputfile symbdiff.o1 vergleichen.