모두 함수의 근사를 근사화하는 Newton 방법을 알고 있습니까? 이 작업의 목표는이 알고리즘의 흥미로운 측면을 소개하는 것입니다.
뉴턴의 알고리즘은 특정이지만 대부분의 복잡한 입력 값에 대해서만 수렴합니다. 복잡한 평면에서 모든 입력 값에 대한 방법의 수렴을 묘사하면 일반적으로 다음과 같은 아름다운 프랙탈이 나타납니다.
명세서
이 작업의 목표는 이러한 프랙탈을 생성하는 것입니다. 즉, 입력으로 다항식을 가져오고 해당 프랙탈을 출력 형식으로 선택한 형식으로 이미지로 인쇄해야합니다.
입력
입력은 공백으로 구분 된 복소수 목록입니다. <Real part><iImaginary part>
이 번호와 같이 스타일로 기록됩니다 5.32i3.05
. 입력 번호의 소수점 이하 자릿수는 4 자리 이하이고 1000보다 작다고 가정 할 수 있습니다. 첫 번째 숫자는 0이 아니어야합니다. 예를 들어, 이것은 프로그램에 대한 입력일 수 있습니다.
1-2i7.5 23.0004i-3.8 i120 5.1233i0.1
숫자는 다항식의 계수로 해석되며 가장 높은 거듭 제곱으로 시작합니다. 이 사양의 나머지 부분에서 입력 다항식을 P 라고 합니다. 위의 입력 값은이 다항식과 같습니다.
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
입력은 stdin, 프로그램에 전달 된 인수 또는 프로그램에 표시된 프롬프트에서 올 수 있습니다. 입력에 선행 또는 후행 공백 문자가 포함되어 있지 않다고 가정 할 수 있습니다.
표현
다음과 같은 방식으로 프랙탈을 렌더링해야합니다.
- P의 뿌리만큼 많은 색상을 선택하고 발산을위한 추가 색상을 선택하십시오.
- 보이는 평면의 각 숫자에 대해 방법이 수렴되는지 여부와 예인 경우 어떤 근에 대해 결정합니다. 결과에 따라 점을 색칠하십시오.
- 통치자 또는 다른 멋진 물건을 인쇄하지 마십시오
- 방향에 대한 다항식 근인 점에 검은 점을 인쇄합니다. 각 루트 주위에 최대 4 개의 픽셀을 인쇄 할 수 있습니다.
- 가능한 한 모든 뿌리가 구별되고 넓게 퍼지는 방식으로 보이는 평면을 선택하는 방법을 찾으십시오. 출력 프레임을 완벽하게 배치 할 필요는 없지만 예를 들어 프레임을 허용 할 수없는 방식으로 선택하는 답변을 거부 할 권리가 있습니다. 항상 같은 좌표에서 모든 뿌리는 한 지점에 있습니다.
- 출력 이미지의 크기는 1024 * 1024 픽셀이어야합니다.
- 렌더링 시간은 최대 10 분입니다.
- 단 정밀도 부동 소수점 값을 사용하면 충분합니다
산출
출력은 선택한 파일 형식의 래스터 그래픽 이미지 여야하며 브랜드 X 운영 체제의 표준 소프트웨어로 읽을 수 있습니다. 드문 형식을 사용하려면 웹 사이트에 뷰어를 다운로드 할 수있는 링크를 추가하십시오.
파일을 stdout으로 출력하십시오. 귀하의 언어가 stdout에 무언가를 넣는 것을 지원하지 않거나이 옵션이 덜 편리하다고 생각되면 다른 방법을 찾으십시오. 어떤 식 으로든 생성 된 이미지를 저장할 수 있어야합니다.
제한 사항
- 이미지 처리 라이브러리가 없습니다
- 프랙탈 생성 라이브러리가 없음
- 가장 짧은 코드가 승리합니다
확장
이 작업이 마음에 들면 수렴 속도 또는 다른 기준에 따라 점을 색칠 할 수 있습니다. 흥미로운 결과를보고 싶습니다.