あなたは皆、関数の根を近似するニュートン法を知っていますよね?このタスクの私の目標は、このアルゴリズムの興味深い側面を紹介することです。
ニュートンのアルゴリズムは、特定の、しかしほとんどすべての複雑な入力値に対してのみ収束します。複素平面上のすべての入力値に対するメソッドの収束を想像すると、通常、次のような美しいフラクタルが得られます。
仕様書
このタスクの目標は、そのようなフラクタルを生成することです。つまり、入力として多項式を取得し、対応するフラクタルを出力として選択した形式の画像として印刷する必要があります。
入力
入力は、空白で区切られた複素数のリストです。これらは<Real part><iImaginary part>
、この番号のようにスタイルで書き留められています5.32i3.05
。入力番号の小数点以下の桁数は4以下で、1000より小さいと想定できます。最初の数値はゼロであってはなりません。たとえば、これはプログラムへの入力になります。
1-2i7.5 23.0004i-3.8 i12 0 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ピクセルを印刷できます。
- 可能であれば、すべてのルートが識別可能であり、広範囲に広がるように、可視プレーンを選択する方法を見つけます。出力フレームを完全に配置する必要はありませんが、許容できない方法でフレームを選択する回答を受け入れることを拒否する権利を留保します。常に同じ座標で、すべてのルートが1つのポイントにあるなど。
- 出力画像のサイズは1024 * 1024ピクセルにする必要があります。
- レンダリング時間は最大10分です
- 単精度浮動小数点値を使用するだけで十分です
出力
出力は、ブランドXオペレーティングシステムの標準ソフトウェアで読み取り可能な、選択したファイル形式のラスターグラフィックスイメージでなければなりません。まれな形式を使用する場合は、視聴者をダウンロードできるWebサイトへのリンクを追加することを検討してください。
ファイルをstdoutに出力します。お使いの言語が標準出力への出力をサポートしていない場合、またはこのオプションの利便性が低い場合、別の方法を見つけてください。いずれにしても、生成されたイメージを保存できる必要があります。
制限事項
- 画像処理ライブラリなし
- フラクタル生成ライブラリなし
- 最短のコードが勝ちます
拡張機能
このタスクが気に入ったら、収束の速度やその他の基準に従ってポイントに色を付けてみてください。興味深い結果が見たいです。