View Full Version : [FRAGE] - tipps zu bsp 4102
myst1cal
02-01-2005, 23:12
ich frag mich obs vielleicht einfacher geht die form zu überprüfen...
ich hab derzeit 27 millionen if-abfragen und hab kein plan wie ich das sonst machen sollte,
angabe gibts hier:
http://eprog.sourceforge.net/eprog/4102/Komplex.html
mfg myst
/PS: bin für jede hilfe dankbar/glücklich :>
Paulchen
03-01-2005, 11:32
grundsätzlich würde ich die auswertung von termen rekursiv angehen: ein objekt, nennen wir es Term, wird mit der kompletten eingabe versorgt; dieses objekt stellt eine methode zur verfügung, die es erlaubt, eine stelle in dem ausdruck zu finden, an welcher dieser in zwei teilausdrücke zerlegt werden kann (entsprechend vorrangregel, klammernsetzung etc.); anschließend werden zwei objekte vom typ Term erstellt, die mit den teilausdrücken versorgt werden und diese weiter zerlegen sollen
dieses verfahren soll dann enden, wenn einem neuen objekt Term nur mehr ein einzelner operand übergeben wird; dann muss an dieser stelle nur überprüft werden, ob dieser ausdruck korrekt ist; jede andere instanz des objektes Term fragt nur ab, ob die beiden teilausdrücke korrekt sind und ob die verknüpfung dieser passt
beispiel: der ausdruck (1+2i)+(-3+5i) soll analysiert werden:
im ersten schritt wird der ausdruck beim zeichen + in zwei teile zerlegt; die teilausdrücke (1+2i) und (-3+5i) werden getrennt verarbeitet:
1+2i wird wieder zerlegt in 1 und 2i, 1 ist reell, 2i ist ein vielfaches von i, diese beiden teile sind durch + verknüpft, also liegt eine komplexe zahl der form a+bi vor => korrekt
-3+5i wird ebenfalls analysiert, ist ebenfalls korrekt
da nun die beiden teilausdrücke (1+2i) und (-3+5i) korrekt sind, muss nur mehr überprüft werden, ob sie korrekt miteinander verknüpft sind; es liegt hier eine addition vor => korrekt
ganz ähnlich kann man nicht nur die form eines ausdrucks auswerten, sondern auch seinen wert berechnen
@ paulchen
deine erklärung ist sehr anschaulich! krasser respekt :thumb:
in der angabe steht allerdings dass man objektorientiert und in packages programmieren soll, aber was bedeutet das genau?
greets shinobi
noch ne frage zur angabe, da steht:
Die Klasse Complex soll von Number (aus der Package java.lang) erben.
was für einen code muss ich da jetzt hinschreiben?
Die umrechnung von der Polardarstellung solte man mit vergessen (5;30) ==> (3+4i)
Die umrechnung von der Polardarstellung solte man mit vergessen (5;30) ==> (3+4i)
Kann mir jemand bitte erklären wie das geht - mathematisch.
Kann mir jemand bitte erklären wie das geht - mathematisch.Eine (komplexe) Zahl z kannst du unterschiedlich anschreiben: entweder als z = a + bi (wobei der Realteil a im karthesischen Koordinatensystem dem x-Wert enspricht und der Imaginärteil b dem y-Wert) oder du stellst dieselbe Zahl mit Hilfe von Polarkoordinaten dar: z = (r,f) (r ist der Abstand zum Ursprung und f der Winkel zur x-Achse).
Für die Umrechnung gelten folgende Formeln:
a = r cos f
b = r sin f
bzw.:
r2 = a2 + b2
tan f = b/a (bzw: sinf = b/r, cosf = a/r)
für z ergibt sich daher: z = r*(cosf + i sinf)
Die Funktion sin cos werden im java mit RAD gerechnet
also
b= r * Math.sin(f/180*Math.PI)
vBulletin® v3.7.1, Copyright ©2000-2009, Jelsoft Enterprises Ltd.