Eine algebraische Kurve ist eine bestimmte "1D-Teilmenge" der "2D-Ebene", die als Nullmenge {(x,y) in R^2 : f(x,y)=0 }eines Polynoms beschrieben werden kann f. Hier betrachten wir die 2D-Ebene als die reale Ebene, R^2so dass wir uns leicht vorstellen können, wie eine solche Kurve aussehen könnte, im Grunde eine Sache, die Sie mit einem Bleistift zeichnen können.
Beispiele:
0 = x^2 + y^2 -1ein Kreis mit Radius 10 = x^2 + 2y^2 -1eine Ellipse0 = xyeine Kreuzform, im Allgemeinen der Vereinigung der x-Achse und die y-Achse0 = y^2 - xeine Parabel0 = y^2 - (x^3 - x + 1)eine elliptische Kurve0 = x^3 + y^3 - 3xydas Folium von Descartes0 = x^4 - (x^2 - y^2)eine Lemniskate0 = (x^2 + y^2)^2 - (x^3 - 3xy^2)ein Trifolium0 = (x^2 + y^2 - 1)^3 + 27x^2y^2ein Astroid
Aufgabe
Ausgehend von einem Polynom f(wie unten definiert) und den x / y-Bereichen wird ein Schwarzweißbild mit mindestens 100 x 100 Pixeln ausgegeben, das die Kurve als schwarze Linie auf weißem Hintergrund darstellt.
Einzelheiten
Farbe : Sie können zwei beliebige andere Farben Ihrer Wahl verwenden. Es sollte einfach sein, sie voneinander zu unterscheiden.
Plot : Anstelle eines Pixelbildes können Sie dieses Bild auch als ASCII-Grafik ausgeben, wobei der Hintergrund "Pixel" ein Leerzeichen / Unterstrich oder ein anderes Zeichen sein sollte, das "leer aussieht", und die Linie kann aus einem Zeichen bestehen, das aussieht. " voll "wie Moder Xoder #.
Sie müssen sich nicht um Aliasing kümmern.
Sie nur zu Plotlinien müssen , wo das Vorzeichen der Polynom ändert sich von einer Seite der Linie zum anderen (das heißt Sie zB den Marsch - Square - Algorithmus verwenden könnte), die Sie nicht richtig geplottet müssen „pathologische Fälle wie , 0 = x^2wo das Zeichen tut ändert sich nicht , wenn man von einer Seite der Linie zur anderen geht, aber die Linie sollte durchgehend sein und die Bereiche der verschiedenen Zeichen von f(x,y).
Polynom : Das Polynom wird als (m+1) x (n+1)Matrix / Liste von Listen von (reellen) Koeffizienten angegeben. Im folgenden Beispiel werden die Begriffe der Koeffizienten in ihrer Position angegeben:
[ 1 * 1, 1 * x, 1 * x^2, 1 * x^3, ... , 1 * x^n ]
[ y * 1, y * x, y * x^2, y * x^4, ... , y * x^n ]
[ ... , ... , ... , ... , ... , ... ]
[ y^m * 1, y^m * x, y^m * x^2, y^m * x^3 , ..., y^m * x^n]
Wenn Sie möchten, können Sie davon ausgehen, dass die Matrix quadratisch ist (dies kann immer mit dem erforderlichen Nullabstand erfolgen), und wenn Sie möchten, können Sie auch davon ausgehen, dass die Größe der Matrix als zusätzliche Eingabe angegeben wird.
Die obigen Beispiele werden im Folgenden als eine wie folgt definierte Matrix dargestellt:
Circle: Ellipse: Parabola: Cross: Elliptic Curve: e.t.c
[-1, 0, 1] [-1, 0, 1] [ 0,-1] [ 0, 0] [-1, 1, 0,-1]
[ 0, 0, 0] [ 0, 0, 0] [ 0, 0] [ 0, 1] [ 0, 0, 0, 0]
[ 1, 0, 0] [ 2, 0, 0] [ 1, 0] [ 1, 0, 0, 0]
Testfälle mit x-Bereich / y-Bereich:
(In einem nicht so lesbaren, aber besser kopierbaren Format, das hier im Pastebin verfügbar ist .)
Circle:
[-1, 0, 1] [-2,2] [-2,2]
[ 0, 0, 0]
[ 1, 0, 0]
Ellipse:
[-1, 0, 1] [-2,2] [-1,1]
[ 0, 0, 0]
[ 2, 0, 0]
Cross:
[ 0, 0] [-1,2] [-2,1]
[ 0, 1]
Parabola:
[ 0,-1] [-1,3] [-2,2]
[ 0, 0]
[ 1, 0]
Elliptic Curve:
[-1, 1, 0,-1] [-2,2] [-3,3]
[ 0, 0, 0, 0]
[ 1, 0, 0, 0]
Folium of Descartes:
[ 0, 0, 0, 1] [-3,3] [-3,3]
[ 0, -3, 0, 0]
[ 0, 0, 0, 0]
[ 1, 0, 0, 0]
Lemniscate:
[ 0, 0, -1, 0, 1] [-2,2] [-1,1]
[ 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0]
Trifolium:
[ 0, 0, 0,-1, 1] [-1,1] [-1,1]
[ 0, 0, 0, 0, 0]
[ 0, 3, 2, 0, 0]
[ 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0]
Astroid:
[ -1, 0, 3, 0, -3, 0, 1] [-1,1] [-1,1]
[ 0, 0, 0, 0, 0, 0, 0]
[ 3, 0, 21, 0, 3, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0]
[ -3, 0, 3, 0, 0, 0, 0]
[ 0, 0, 0, 0, 0, 0, 0]
[ 1, 0, 0, 0, 0, 0, 0]
Ich habe die Inspiration für einige Kurven aus diesem PDF.
mx n, sondern (m+1)x (n+1). Was nehmen wir als Eingabe: m, noder m+1,n+1? Oder können wir wählen?



