Ortskurve effektiv plotten < Sonstiges < Hochschule < Mathe < Vorhilfe
|
Hallo!
Ich hoffe, dass ich hier richtig bin. Es geht darum, eine Ortskurve, d.h. eine Funktion z=f(w), w [mm] \in \IR, [/mm] z [mm] \in \IC [/mm] möglichst effektiv in einem vorgegebenen z-Wertebereich zu plotten, wobei der dazugehörige w-Wertebereich nicht bekannt ist. Mein momentaner (natürlich völlig ineffizienter) Ansatz startet bei w=0 mit einer Schrittweite von 1 und versucht, die Schrittweite so anzupassen, dass der Abstand zwischen den dazugehörigen z-Werten möglichst "optimal" ist, d.h. in etwa der Größe eines Pixels auf einer Zeichenfläche entspricht. Ist die korrekte Schrittweite gefunden, wird der aktuelle Wert gespeichert und der nächste Wert inkl. Schrittweite wie zuvor beschrieben ermittelt. Das geht bis [mm] +\infty, [/mm] danach werden alle z-Werte, die nicht im anfangs definierten Bereich liegen, gelöscht, um sie nicht zeichnen zu müssen. Danach wird das ganze in die Gegenrichtung von 0 bis [mm] -\infty [/mm] wiederholt.
Das hat natürlich den Nachteil unnötiger Berechnungen und enormer Instabilität, wenn Polstellen oder anderwertige Sprünge in der Funktion auftreten. Gibt es einen besseren Algorithmus, um eine Ortskurve so zu zeichnen bzw. was kann man an der bestehenden Methode ändern, um sie effizienter und stabiler zu machen?
Bin für Hinweise dankbar
Dust Signs
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:26 Sa 23.05.2009 | Autor: | leduart |
Hallo
Da das ja ne Abbildung von C nach C bzw. [mm] R^2 [/mm] nach [mm] R^2 [/mm] ist kannst du keine Ortskurve plotten.
Du kannst ein Gitter (rechteckig oder Polar) in dein Def. Gebiet legen, und das abbilden.
geh zu 3d explore
sieh dir einige der konformen Abbildungen an, dann kannst du unter "Nutserdef" deine eigenen eingeben.
statt als applet kannst du dir auch das Programm runterladen bei http://3d-xplormath.org/j/index_de.html
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:18 Mo 25.05.2009 | Autor: | DustSigns |
Ich habe mich scheinbar nicht klar ausgedrückt und möchte daher an dieser Stelle noch einmal beschreiben, was ich eigentlich erreichen möchte: ich habe eine Funktion f(w)=z, wobei w [mm] \in \IR [/mm] und z [mm] \in \IC, [/mm] also eine Ortskurve, wobei w die Frequenz ist. Nun habe ich beispielsweise eine Funktion [mm] f(w)=\bruch{1-jw}{1+w^{2}}, [/mm] die ich zeichnen möchte. Es geht mir dabei um den Algorithmus des Zeichnens, da ich eine solche Zeichenfunktion implementieren muss (die Programmiersprache spielt keine Rolle, da es mir nur um die prinzipielle Vorgangsweise geht). Mein erster Ansatz war wie gesagt, dass ich von 0 bis [mm] +\infty [/mm] die Schrittweite entsprechend der gezeichneten Werte anpasse, damit deren Abstand zueinander einem Pixel meiner Zeichenfläche entspricht, damit ich weder unnötig genau, noch zu ungenau zeichne.
Dieser Algorithmus ist wie gesagt sehr langsam und instabil, zudem wird er mit steigendem Zoom ineffizient. Wenn ich den sichtbaren Bereich meines Koordinatensystems auf z.B. [-0,1-0,1j,0,1+0,1j] beschränke, so werden einige Punkte unnötigerweise gezeichnet (sie sind ja in diesem Ausschnitt nicht sichtbar), da ich die weiter bis [mm] +\infty [/mm] gehen muss, da ich ja nicht weiß, ob die Kurve für höhere Werte von w nicht wieder in den sichtbaren Bereich tritt. Wüsste ich, dass das nicht der Fall ist, könnte ich den Zeichenvorgang selbstverständlich abbrechen.
Wie gesagt suche ich einen Algorithmus, mit dem ich effektiv einen zumindest pixelgenauen Plot einer beliebigen Ortskurve zeichnen kann, wobei die numerische Stabilität und die Geschwindigkeit höher sein sollte als in meinem bisherigen, primitiven Ansatz.
Ich hoffe, dass ich das Problem genau genug beschrieben habe, um weitere Anregungen zu bekommen. Falls etwas unklar ist, bitte um entsprechende Rückmeldung
Danke im Voraus für eure Hilfe
Dust Signs
|
|
|
|