Đường cong đại số là một "tập hợp con 1D" nhất định của "mặt phẳng 2D" có thể được mô tả là tập hợp các số không {(x,y) in R^2 : f(x,y)=0 }
của một đa thức f
. Ở đây chúng ta coi mặt phẳng 2D là mặt phẳng thật R^2
để chúng ta có thể dễ dàng tưởng tượng đường cong như vậy có thể trông như thế nào, về cơ bản là một thứ bạn có thể vẽ bằng bút chì.
Ví dụ:
0 = x^2 + y^2 -1
một vòng tròn bán kính 10 = x^2 + 2y^2 -1
một hình elip0 = xy
một hình chữ thập , về cơ bản là sự kết hợp của trục x và trục y0 = y^2 - x
một parabola0 = y^2 - (x^3 - x + 1)
một đường cong elip0 = x^3 + y^3 - 3xy
folium của Descartes0 = x^4 - (x^2 - y^2)
một quả chanh0 = (x^2 + y^2)^2 - (x^3 - 3xy^2)
một trifolium0 = (x^2 + y^2 - 1)^3 + 27x^2y^2
một khối u
Bài tập
Đưa ra một đa thức f
(như được xác định bên dưới) và phạm vi x / y, xuất ra hình ảnh đen trắng có ít nhất 100x100 pixel hiển thị đường cong dưới dạng đường màu đen trên nền trắng.
Chi tiết
Màu sắc : Bạn có thể sử dụng bất kỳ hai màu nào khác mà bạn chọn, thật dễ dàng để phân biệt chúng.
Cốt truyện : Thay vì hình ảnh pixel, bạn cũng có thể xuất hình ảnh này dưới dạng nghệ thuật, trong đó "pixel" nền phải là khoảng trắng / gạch chân hoặc một ký tự khác "trông trống rỗng" và dòng có thể được tạo từ một ký tự trông " đầy đủ" như M
hoặc X
hoặc #
.
Bạn không phải lo lắng về răng cưa.
Bạn chỉ cần vẽ các đường trong đó dấu của đa thức thay đổi từ một bên của dòng này sang bên kia (có nghĩa là bạn có thể sử dụng thuật toán diễu hành vuông), bạn không phải vẽ chính xác "các trường hợp bệnh lý như 0 = x^2
khi dấu hiệu đó xảy ra không thay đổi khi đi từ bên này sang bên kia. Nhưng đường nên liên tục và tách các vùng của các dấu hiệu khác nhau f(x,y)
.
Đa thức : Đa thức được đưa ra dưới dạng (m+1) x (n+1)
ma trận / danh sách các danh sách các hệ số (thực), trong ví dụ bên dưới các thuật ngữ của các hệ số được đưa ra ở vị trí của chúng:
[ 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]
Nếu bạn thích, bạn có thể giả sử ma trận là hình vuông (luôn có thể được thực hiện với phần đệm không cần thiết) và nếu bạn muốn, bạn cũng có thể giả sử rằng kích thước của ma trận được đưa ra làm đầu vào có tính chất quảng cáo.
Trong phần sau đây, các ví dụ từ trên được biểu diễn dưới dạng ma trận được định nghĩa như sau:
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]
Các trường hợp thử nghiệm với x-Range / y-Range:
(Trong một định dạng không thể đọc nhưng sao chép tốt hơn có thể có ở đây trên pastebin .)
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]
Tôi đã có cảm hứng cho một số đường cong từ pdf này.
m
x n
, mà là (m+1)
x (n+1)
. Chúng ta lấy gì làm đầu vào : m, n
, hay m+1,n+1
? Hay chúng ta có thể chọn?