Tất cả các bạn đều biết phương pháp Newton để tính gần đúng gốc của hàm, phải không? Mục tiêu của tôi trong nhiệm vụ này là giới thiệu cho bạn một khía cạnh thú vị của thuật toán này.
Thuật toán của Newton chỉ hội tụ cho một số nhất định, nhưng hầu hết tất cả các giá trị đầu vào phức tạp. Nếu bạn hình dung sự hội tụ của phương thức cho tất cả các giá trị đầu vào trên mặt phẳng phức, bạn thường nhận được một fractal đẹp như thế này:
Thông số kỹ thuật
Mục tiêu của nhiệm vụ này là, để tạo ra các fractals như vậy. Điều này có nghĩa là, bạn lấy một đa thức làm đầu vào và phải in ra fractal tương ứng dưới dạng hình ảnh theo định dạng mà bạn chọn làm đầu ra.
Đầu vào
Đầu vào là một danh sách các số phức được phân tách bằng khoảng trắng. Chúng được viết theo phong cách <Real part><iImaginary part>
, như số này : 5.32i3.05
. Bạn có thể giả sử rằng số đầu vào không quá 4 chữ số thập phân và nhỏ hơn 1000. Đầu tiên trong số chúng không được bằng không. Ví dụ: đây có thể là một đầu vào cho chương trình của bạn:
1 -2i7,5 23.0004i-3,8 i12 0 5.1233i0.1
Các số được hiểu là các hệ số của một đa thức, bắt đầu với công suất cao nhất. Trong suốt phần còn lại của đặc tả này, các đa thức đầu vào được gọi là P . Đầu vào trên bằng với đa thức này:
f (x) = x 5 + (-2 + 7,5 i ) x 4 + (23.0004 - 3,8 i ) x 3 + 12 i x 2 + 5.1233 + 0.1 i
Đầu vào có thể đến với bạn từ stdin, từ một đối số được truyền cho chương trình hoặc từ một dấu nhắc được hiển thị cho chương trình của bạn. Bạn có thể giả sử rằng đầu vào không chứa bất kỳ ký tự khoảng trắng đầu hoặc cuối nào.
Kết xuất
Bạn phải kết xuất fractal theo cách sau:
- Chọn nhiều màu như gốc của P cộng với một màu phụ cho phân kỳ
- Đối với mỗi số trong mặt phẳng nhìn thấy, xác định xem phương thức có hội tụ không và nếu có với gốc nào. Tô màu điểm theo kết quả.
- Không in thước kẻ hoặc những thứ ưa thích khác
- In một điểm đen tại các điểm, đó là các gốc đa thức để định hướng. Bạn có thể in tối đa bốn pixel xung quanh mỗi gốc.
- Tìm cách chọn mặt phẳng nhìn thấy theo cách, rằng tất cả các rễ đều có thể phân biệt và lan rộng khắp nó, nếu có thể. Mặc dù không yêu cầu vị trí hoàn hảo của khung đầu ra, tôi có quyền từ chối chấp nhận câu trả lời chọn khung theo cách không được chấp nhận, ví dụ: luôn luôn ở cùng tọa độ, tất cả các gốc nằm trong một điểm, v.v.
- Hình ảnh đầu ra phải có kích thước 1024 * 1024 pixel.
- Thời gian kết xuất tối đa là 10 phút
- Sử dụng các giá trị dấu phẩy động chính xác duy nhất là đủ
Đầu ra
Đầu ra phải là hình ảnh đồ họa raster ở định dạng tệp bạn chọn, có thể đọc được bằng phần mềm tiêu chuẩn cho hệ điều hành thương hiệu X. Nếu bạn muốn sử dụng một định dạng hiếm, hãy xem xét thêm một liên kết đến một trang web nơi người ta có thể tải xuống một trình xem cho nó.
Xuất tập tin ra thiết bị xuất chuẩn. Nếu ngôn ngữ của bạn không hỗ trợ đưa thứ gì đó vào thiết bị xuất chuẩn hoặc nếu bạn thấy tùy chọn này không thuận tiện, hãy tìm một cách khác. Theo bất kỳ cách nào, nó phải có thể lưu hình ảnh được tạo ra.
Hạn chế
- Không có thư viện xử lý ảnh
- Không có thư viện tạo fractal
- Mã ngắn nhất sẽ thắng
Tiện ích mở rộng
Nếu bạn thích nhiệm vụ này, bạn có thể thử tô màu các điểm theo tốc độ hội tụ hoặc một số tiêu chí khác. Tôi muốn thấy một số kết quả thú vị.