Bir cebirsel eğri, {(x,y) in R^2 : f(x,y)=0 }
bir polinomun sıfırları kümesi olarak tanımlanabilen "2D-düzlemi" nin belirli bir "1D altkümesidir" f
. Burada 2D düzlemi gerçek düzlem olarak R^2
görüyoruz, böylece böyle bir eğrinin neye benzeyebileceğini kolayca tahmin edebiliyoruz, temel olarak bir kalemle çizebileceğiniz bir şey.
Örnekler:
0 = x^2 + y^2 -1
yarıçapı bir daire 10 = x^2 + 2y^2 -1
bir elips0 = xy
bir çapraz şekil, temel olarak x ekseni ve y ekseninin birleşimi0 = y^2 - x
bir parabol0 = y^2 - (x^3 - x + 1)
bir eliptik eğri0 = x^3 + y^3 - 3xy
Descartes folium0 = x^4 - (x^2 - y^2)
bir lemniskate0 = (x^2 + y^2)^2 - (x^3 - 3xy^2)
üç yapraklı0 = (x^2 + y^2 - 1)^3 + 27x^2y^2
bir astroid
Görev
Bir polinom f
(aşağıda tanımlandığı gibi) ve x / y aralıkları verildiğinde, eğriyi beyaz bir arka plan üzerinde siyah çizgi olarak gösteren en az 100x100 piksellik siyah beyaz bir görüntü elde edin.
ayrıntılar
Renk : Seçtiğiniz diğer iki rengi kullanabilirsiniz, bunları ayırmak kolay olmalıdır.
Çizim : Bir piksel görüntüsü yerine bu görüntüyü "ascii-art" olarak da çıktılandırabilirsiniz, burada "pikseller" arka planı boşluk / alt çizgi veya "boş görünen" başka bir karakter olmalıdır ve çizgi, " dolu "gibi M
veya X
veya #
.
Takma ad konusunda endişelenmenize gerek yok.
Sadece polinomun işaretinin çizginin bir tarafından diğer tarafa değiştiği çizgileri çizmeniz yeterlidir (yani yürüyen kare algoritmasını kullanabileceğiniz anlamına gelir), 0 = x^2
işaretin olduğu gibi patolojik vakaları doğru bir şekilde çizmeniz gerekmez. değil diğer hattın bir taraftan giderken değişir. Ama çizgi sürekli ve farklı işaretlerin bölgelerini ayıran olmalıdır f(x,y)
.
Polinom : Polinom(m+1) x (n+1)
(gerçek) katsayıların bir matrisi / liste listesi olarak verilir , aşağıdaki örnekte katsayıların terimleri konumlarında verilmiştir:
[ 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]
İsterseniz, matrisin kare olduğunu varsayabilirsiniz (bu her zaman gerekli sıfır dolgusu ile yapılabilir) ve isterseniz, matris boyutunun ek girdiler olarak verildiğini varsayabilirsiniz.
Aşağıda, yukarıdaki örnekler bu şekilde tanımlanan bir matris olarak temsil edilmektedir:
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]
X-aralığı / y-aralığı olan test senaryoları:
(Burada okunaklı olmayan ancak daha iyi kopyala yapıştırma özelliğine sahip bir formatta macunda mevcuttur .)
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]
Bu pdf'den bazı eğriler için ilham aldım .
m
x n
değil (m+1)
x'dir (n+1)
. Girdi olarak ne alıyoruz:, m, n
veya m+1,n+1
? Yoksa seçebilir miyiz?