Bir fonksiyonun köklerini belirlemek için Newton yöntemini hepiniz biliyorsunuz, değil mi? Bu görevdeki amacım size bu algoritmanın ilginç bir yönünü tanıtmak.
Newton'un algoritması yalnızca belirli, ancak tüm karmaşık girdi değerlerinin çoğuna yakınsak olur. Karmaşık düzlem üzerindeki tüm girdi değerlerinin yönteminin yakınsamasını resmederseniz, genellikle şöyle güzel bir fraktal elde edersiniz:
Özellikler
Bu görevin amacı, bu tür fraktallar üretmektir. Bu, giriş olarak bir polinom elde edeceğiniz ve ilgili fraktal'ı görüntü olarak çıktı olarak seçtiğiniz bir biçimde yazdırmanız gerektiği anlamına gelir.
Giriş
Giriş, boşluklarla ayrılmış karmaşık sayıların bir listesidir. Onlar tarzda aşağı yazılır <Real part><iImaginary part>
bu sayı gibi,: 5.32i3.05
. Giriş numarasının 4 ondalık basamaktan daha büyük olmadığını ve 1000'den küçük olduğunu varsayabilirsiniz. Bunlardan ilki sıfır olmamalıdır. Örneğin, bu programınıza bir girdi olabilir:
1 -2i7.5 23.0004i-3.8 i12 0 5.1233i0.1
Sayılar, en yüksek güçle başlayan bir polinomun katsayıları olarak yorumlanır. Bu tarifnamenin geri kalanı boyunca, girdi polinomu P olarak adlandırılır . Yukarıdaki giriş bu polinom eşittir:
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
Girdi, size stdin'den, programa iletilen bir argümandan veya programınıza görüntülenen bir istemden gelebilir. Girişin baştaki veya sondaki boşluk karakterleri içermediğini varsayabilirsiniz.
sıva
Fraktal aşağıdaki şekilde yapılmalıdır:
- P'nin kökleri kadar fazla renk ve sapma için ekstra bir renk seçin
- Görünür düzlemdeki her sayı için, yöntemin yakınsak olup olmadığını ve eğer varsa hangi köke doğru olduğunu belirleyin. Noktayı, sonuçlara göre renklendirin.
- Cetvelleri veya diğer süslü şeyleri yazdırmayın
- Noktalara, yani oryantasyon için polinomların kökleri olan siyah bir nokta yazdırın. Her kök çevresine dört adede kadar piksel yazdırabilirsiniz.
- Görünür düzlemi bir şekilde seçmenin, tüm köklerin ayırt edilebildiği ve mümkünse geniş bir alana yayılacağı bir yol bulun. Çıktı çerçevesinin mükemmel bir şekilde yerleştirilmesine gerekmese de, çerçeveyi kabul edilemez bir şekilde seçen bir cevabı kabul etmeyi reddetme hakkını saklı tutarım, örn. her zaman aynı koordinatlarda, tüm kökler bir noktada, vb.
- Çıktı görüntüsünün boyutu 1024 * 1024 piksel olmalıdır.
- Render süresi en fazla 10 dakikadır.
- Tek duyarlıklı kayan nokta değerleri kullanmak yeterlidir
Çıktı
Çıktı, bir marka X işletim sistemi için standart yazılımla okunabilen, seçtiğiniz bir dosya biçiminde raster grafik görüntüsü olmalıdır. Nadir bir format kullanmak istiyorsanız, web sitesine bir görüntüleyici indirebileceğiniz bir link eklemeyi düşünün.
Dosyayı stdout'a gönder. Diliniz stdout'a bir şey koymayı desteklemiyorsa veya bu seçeneği daha az kullanışlı buluyorsanız, başka bir yol bulun. Herhangi bir şekilde, oluşturulan görüntünün kaydedilmesi mümkün olmalıdır.
Kısıtlamalar
- Görüntü işleme kütüphanesi yok
- Fraktal üreten kütüphane yok
- En kısa kod kazanır
Uzantıları
Bu görevi seviyorsanız, noktaları yakınsama hızına veya diğer bazı kriterlere göre renklendirmeyi deneyebilirsiniz. Bazı ilginç sonuçlar görmek istiyorum.