Frage

Was ist das übliche Verfahren oder Algorithmus verwendet, um implizite Gleichungen von 2 Variablen zu zeichnen?

Ich spreche von Gleichungen wie

sin (x * y) * y = 20

x * x - y * y = 1

Etc.

Wer weiß, wie Maple oder Matlab dies tun? Meine Zielsprache ist C #.

Vielen Dank!

War es hilfreich?

Lösung

Eine Möglichkeit, dies zu tun ist, um die Funktion auf einem regelmäßiges, 2D-Gitter zu probieren. Dann können Sie einen Algorithmus, wie Marsch Quadrate auf der resultierende 2D-Gitter laufen Iso-Konturen zu zeichnen.

In einer verwandten Frage, jemand auch an den gnuplot Quellcode verknüpft. Es ist ziemlich komplex, aber könnte sich lohnen durchlaufen. Sie können es hier finden: http://www.gnuplot.info/

Andere Tipps

Iterate den Wert x über den Bereich, den Sie darstellen möchten. Für jeden festen Wert von x, lösen die Gleichung numerisch eines Verfahrens wie Intervall bisection Verwendung oder < a href = „http://en.wikipedia.org/wiki/Newton%27s_method“ rel = „noreferrer“> Newton-Raphson-Methode (für die man das Derivat mit impliziter Differenzierung berechnen kann, oder vielleicht numerisch differenzieren ). Dadurch erhalten Sie den entsprechenden Wert von y für einen bestimmten x. In den meisten Fällen brauchen Sie nicht zu viele Iterationen ein zu bekommen sehr genaues Ergebnis, und es ist sehr effizient trotzdem.

Beachten Sie, dass Sie benötigen, um die Gleichung in die Form f(x) = 0 zu verwandeln, obwohl dies immer trivial. Das Schöne an dieser Methode ist, dass es genauso gut umgekehrt arbeitet (das heißt einen festen Bereich von y nehmen und Rechen x pro Wert).

Im moment gibt es mehrere Methoden. Der einfachste Algorithmus, den ich finden konnte descripted hier: https://homepages.warwick.ac. uk / Personal / David.Tall / pdfs / dot1986b-implizite-fns.pdf und beschreibt, was Noldorin hat Sie beschrieben.

Der komplexeste scheint und derjenige zu sein, der eine Menge von Sonderfällen tatsächlich lösen kann, ist hier beschrieben: https://academic.oup.com/comjnl/article/33/ 5/402/480353

ich denke,

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

dann für alle x, y berechnet sie.

zieht dann Linie von x0, y0 x1, y1

zieht dann Linie von x1, y1 bis x2, y2

...

...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top