Bu sayfadaki yazılar
Sayfanın metni
Sayfa 20
Devamlı tekrar eden sıkıcı işlerimizi yapmaları için bilgisayarları ürettik. Bu ay tekrar eden fonksiyonların iki işlevini inceleyeceğiz: grafik iterasyonu ve matematik iterasyon. Tabii gene işin çoğunu bilgisayarınız yapacak. Öncelikle iteratif matematiğin temellerine şöyle bir bakacağız. Eğer sizin eğilimleriniz daha çok sanatsalsa bu bölümü atlayıp, fonksiyonların görsel olarak kullanıldığı diğer bölüme geçin. Şimdiden sayfaları çevirdiğinizi duyar gibiyim.
Matematiksel İterasyon
İterasyonun matematiksel tanımı şöyle yapılabilir: 1. X için bir değer alın,
2. Bu değeri yine X'e bağlı bir fonksiyonda yerine koyun,
3. Bir önceki adımda bulduğunuz değere dayanarak X için yeni bir değer alın,
4. Belirli bir kriter sağlanana kadar ikinci adıma dönüp durun. | Şimdi bu biraz soyut oldu. Bir örnekle konuyu daha iyi anlayacağınızdan eminim. Hesap makineleri bulunmadan önce sayıların kareköklerini hesaplamak için bir yöntem vardı. İşlemin defalarca yapılması ve sayıların iyice rafine edilmesi (iterasyon) sayesinde istenilen hassasiyette sonuçlar bulunabilirdi. İteratif yöntemlerle çözüm yapılmasını Sir Isaac Newton'a borçluyuz. Bu ne-
denle adı geçen sistem Newton Metodu olarak bilinir. Bir sayının (daha doğrusu herhangi bir ifadenin) karekökünü hesaplamak için Newton'un sekant sistemine dayanan bir metod kullanacağız. Bu metodu bilgisayarda uygulamak oldukça kolaydır. Başlangıç için 3'ün karekökünü bulalım. Matematiksel bilgilerinizden herhalde “3'ün karekökünü bulun” ifadesinin “Öyle bir X bulun ki, X'in karesi 3'e eşit olsun” ifadesine eşit olacağını biliyorsunuzdur. İşte bu ikinci ifadeyi cebrik olarak yazabiliriz: X*X=3. Bu ifadenin her iki tarafının da karekökünü alarak birinci ifadeyi elde edebilirsiniz: X = SQR(3). Buradaki SQR komutu BASIC'te karekök almak için verilen komuttur. Hesap makineniz veya bilgisayarınız hiç uğraşmadan bu ifadedeki X değerinin yaklaşık olarak 1.732'ye eşit olduğunu size bildirecektir. Biz birinci ifadenin karekökünü bulmak için biz iteratif metodu kullanacağız. X'in değeri ifadenin her iki tarafını da eşit yapmalıdır. İfadenin tüm terimlerini bir tarafa toplayarak sıfıra eşitliyoruz: X^2-3=0. Bu ifadeyi sıfıra eşitleyen X değerleri bizim fonksiyonumuzun kökleri olacaktır. Bu fonksiyon için aradığımız değerler 3'ün kareköküdür. Bu fonksiyonu BASIC'te şöyle tanımlayacağız: DEF FN A(X) = X^2-3. Eğer bilgisayara PRINT FN A(7) komutunu verirsek, ifadedeki X değerinin yerine 7 koyulur ve işlem gerçekleştirilip, sonuç ekrana yazılır. 7'nin karesi alınır ve bundan 3 çıkarılır. Çıkan sonuç 0 değil de 46'dır. Eğer PRINT FN A(1) komutunu verirsek (1'in karesi eksi 3)
—2 sonucunu alırız, ki bu sonuç da aradığımız değeri sağlamaz. Fonksiyonda 7 çok büyük, 1 de küçük bir değer vermektedir. Bizim aradığımız değer ise sıfırdır. Önce bu ifadeyi çözmek için kaba bir iterasyon yapalım: 10 DEF FN A(X) = X^2-3 20 FOR X = 1 TO 7 STEP 0.01 30 PRINT X, FN A(X) 40 NEXT X Sağ kolondaki sayıların akışını izleyin ve sayıların eksiden artıya geçtiği yeri bekleyin ve geçiş gerçekleşince
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 21
RUN STOP tuşuna basın. Tahmin edeceğiniz gibi fonksiyonun çözümü eksiden artıya bu geçişin olduğu yerdedir. Ekranda X ve FN A(X)'in değerleri şöyle görünmelidir:
1.72999998 —7.10005499E-03 1.73999998 Yuvarlak değerlerle, FN A(1.73), —0.007'ye ve FN A(1.74)'de 0.028'e eşittir. Böylece bizim aradığımız X değerinin 1.73 ve 1.74 arasında yer aldığı görülür. Eğer iki basamağa kadar hassasiyet istiyorsak, 3'ün karekökünün 1.7 olduğunu söyleyebiliriz.
FN A(X) değerini işaret değiştirdiği zaman, 20. satırdaki STEP komutundan sonra gelen sayıyı değiştirerek istediğiniz hassasiyette sonuçlar elde edebilirsiniz. Bu problemde basit bir algoritma kullanılıyordu ve anlaşılması kolaydı. Sekant metodu, iterasyon işlemini hızlandırmak için özel yollara başvurur. Bu metodun teoriğini anlatmayacağız. Önerme aslında çok basittir, programa bakarak anlayabilirsiniz. Öncelikle X0 ve X'e başlangıç değerleri vermemiz gerekir. Bu iki değer birbirinden farklı olmak üzere her-
21 hangi iki sayı olabilir ama bu değerlere bağlı olarak işlemlerin hızı da değişecektir. 20. satırda 0 ve 1 değerleri seçilmektedir. İterasyonun döngüsü 80. satırda DELTA değerine bağlı olarak IF...THEN ifadesiyle yapılmaktadır. Eğer ABS (DELTA) değeri 0.0001'den küçükse döngüden çıkılır ve program biter. DELTA denen değer X'in şu andaki ve bir önceki değeri olan X1'e bağlı olarak değişmektedir ve hesabı şöyle yapılır: DELTA = (X — X0) / (1 — FN A(X0) / FN A(X)). 50. satırda X'in eski değeri X0'a atanır ve 60. satırda X'in yeni değeri DELTA'ya bağlı olarak hesaplanır. X = X — DELTA. 70. satırda ise X ve FN A(X) değerleri yazılır. Eğer her şey yolunda gidiyorsa DELTA sıfıra yaklaşır ve X'in değerinin azalması yavaşlar. FN A(X) değeri sıfıra yaklaştıkça X'in değeri de aranan kök değerine yaklaşır.