Program Döküm Eki sayı 58, sayfa 26

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 26

Bir polinom düşünün! 5. dereceden ve ucubik katsayılara sahip olsun. Bu polinomun köklerini bulmak için ihtiyacınız olan işte böyle bir programdır.

Programda Newton-Raphson metodu kullanılmaktadır. Bu metotda, işleme bir sayı alınarak başlanır. Daha sonra bu sayının denklemi sağlayıp sağlamadığına bakılır. Eğer sağlamıyorsa, ki büyük bir olasılıkla ilk alınan bu sayı kök olmayacaktır, fonksiyonun türevinin bu sayı için değeri bulunur. Ve bir sonraki deneme noktası aşağıdaki eşitliğe göre hesaplanır:

Buna göre deneme aralığında polinomun türevinin sıfıra eşit olması gerekiyor. Aynı zamanda polinom deneme aralığında ya "concave up" ya da "concave down" olmalıdır. Yani fonksiyonun ikinci türevinin işareti, deneme aralığında x'in her değeri için aynı olmalıdır. Bu metodun grafik olarak açıklamasını ise şöyle yapabiliriz. Önce aşağıdaki gibi herhangi bir fonksiyonun grafiğini düşünün.

[a, b] aralığında fonksiyon "concave up"'tır. Programda ilk olarak seçilen sayının ise real ve x1 noktasında olduğunu varsayın. X1 noktasında fonksiyonun sıfır değerini almadığı grafikten görülmektedir. Öyleyse başka bir sayıyı denemeliyiz. Bunun için önce fonksiyonun türevinin x1 noktasındaki değeri bulunur. Şimdi, m noktasından eğriye bir teğet çizelim. Bu teğet x-eksenini x2 noktasında kessin. Fonksiyonun, türevinin x1'deki değeri q açısının tanjantıdır. Ve bu da f(x1)/(x1-x2)'ye eşittir. Buradan da bir sonraki denenecek olan sayı x2 çekilebilir. Fakat fonksiyon x2 noktasında da sıfır değerini almıyor. Öyleyse yukarıdaki işlemleri bir daha tekrar edip fonksiyon istenen hassasiyet değerinin altına düşünceye kadar hesaplamalara devam ederiz. Peki ya ilk deneme noktası fonksiyonun eksi olduğu yere, örneğin c noktasına denk gelseydi ne olacaktı? Bu noktadan çizilen teğet x-eksenini fonksiyonun artı değerlere sahip olduğu yerde kesiyor. Yani program bu bölgeye sıçrayacak ve köke yine bu kısımdan yaklaşmaya başlayacaktır.

Başka bir soru: İlk deneme sayısı yerel minimum veya maksimum noktalarına denk gelseydi ne olurdu? Buralarda birinci türevin sıfır olması nedeniyle "?DIVISION BY ZERO" hatası bekliyoruz. Ama C-64 bu hatayı vermiyor. Çünkü, ilk başta alınan karmaşık sayı polinomda yerine

Klavyeyle gezinmek için ← ve → tuşları.