2009-07-15 8 views
5

Was ist die übliche Methode oder der Algorithmus, um implizite Gleichungen von 2 Variablen zu zeichnen?So zeichnen Sie implizite Gleichungen

ich Gleichungen spreche wie

sin (x * y) * y = 20

x * x - y * y = 1

Etc.

Does Wer weiß, wie Maple oder Matlab das machen? Meine Zielsprache ist C#.

Vielen Dank!

Antwort

9

Eine Möglichkeit, dies zu tun ist, um die Funktion auf einer regelmäßigen, 2D-Gitter zu probieren. Dann können Sie einen Algorithmus wie marschierende Quadrate auf dem resultierenden 2D-Gitter ausführen, um Iso-Konturen zu zeichnen.

In einer verwandten Frage, jemand auch an den gnuplot Quellcode verknüpft. Es ist ziemlich komplex, aber es lohnt sich, es durchzugehen. Sie finden es hier: http://www.gnuplot.info/

+2

Danke für Bereitstellung der richtigen Keywords, nach denen gesucht werden soll. Diese Suche (http://www.google.com.sg/search?q=Marching+squares+contours) brachte besonders interessante Links. – ARV

+0

@ARV welcher dieser interessanten Links hat dein Problem gelöst. Konnten Sie erfolgreich einen C# -Code erstellen? – MySchizoBuddy

5

Iterieren Sie den Wert x über den Bereich, den Sie plotten möchten. Lösen Sie für jeden festen Wert von x die Gleichung numerisch mit einer Methode wie interval bisection oder der Newton-Raphson method (für die Sie die Ableitung mit impliziter Differenzierung berechnen oder vielleicht numerisch differenzieren können). Dies gibt Ihnen den entsprechenden Wert von y für eine gegebene x. In den meisten Fällen werden Sie nicht zu viele Iterationen benötigen, um ein präzises Ergebnis zu erhalten, und es ist sowieso sehr effizient.

Beachten Sie, dass die Gleichung in die Form f(x) = 0 müssen verwandeln, obwohl dies immer trivial. Das Schöne an dieser Methode ist, dass sie genau umgekehrt funktioniert (d. H. Einen festen Bereich von y und x pro Wert).

-3

ich denke,

in Matlab Sie Array als Eingabe für x geben.

Dann berechnet es für jedes x y.

dann zieht Linie von x0, y0 x1, y1

dann zieht Linie von x1, y1 bis x2, y2

...

...