Bu sayfadaki yazılar
Sayfanın metni
Sayfa 23
X - SQR (X) - 5 = 0 Böylece 10. satır: DEF FN A(X) = X - SQR (X) - 5 halini alır. İşte burada bir sorunla karşılaşıyoruz. Başlangıç değerlerinde FN A(X) sıfıra eşit olduğundan 40. satırda sıfıra bölme hatası ortaya çıkıyor. X0=0 ve X=3 olarak başlangıç değerlerini değiştirsek bile başka bir sorunla karşılaşırız. X'in değeri bir süre sonra eksiye düşer ve 70. satırda “Illegal Quantity Error” verilir. Bunun sebebi eksi bir sayının karekökünün alınmaya çalışılmasıdır. Bu problemin üstesinden gelmek için Y değişkenini X'in karesi olarak tanımlamak yeterli olacaktır: DEF FN A(Y) = Y^2-Y-5
DEF komutunda bahsi geçen değişkenin ne olduğu hiç önemli değildir. Şu anda uğraştığımız değişken eskisinin karesi olduğu için beklediğimizden farklı bir sonuçla karşılaşmamız gayet normaldir. Bu sefer başarıya ulaşıyoruz. Denklemin kökü olarak, bilgisayar yaklaşık 2.7912874 cevabını verir. Bu sayı aslında Y değeridir ve X değerini bulmak için karesini almamız gerekir. Problemin cevabı X = 2.7912874 olarak bulunur. Bu sonuç işlemi sağlamaktadır, sayının karekökü kendisinden 5 fazladır. Gerçekten kendinizi zorlamak istiyorsanız, kökü kendisinden 5 az olan sayıyı arayın. Şimdi battınız işte. Bu problemde ortaya, reel ve imajiner kısımlarıyla, kompleks sayılar çıkar. Aslında siz kompleks sayılarla başa çıkabiliyorsanız iterasyon metodu sizi yolda bırakmayacaktır. Ama böyle bir problemde gerçek bir kök olmadığı için bir sonuç elde edemezsiniz. Matematiksel iterasyon sanırım oldukça sıktı. Son bir örnekle bu konuyu kapatıyoruz. 10. satırdaki fonksiyonu şöyle değiştirin: DEF FN A(X) = SIN (X) Böylece X'in hangi değerlerinde SIN (X)'in 0'a eşit olduğunu bulabilirsiniz. Aslında bunun sonsuz sayıda çözümü vardır. Genel ifadeyse X = n * PI şeklindedir. Burada n herhangi bir tamsayı, PI de yaklaşık 3.14 olarak bilinen sabittir. İteratif Çözümler adlı programı X0=0 ve X = 1 değerleriyle başlatırsanız sıfıra bölme hatasıyla karşılaşırsınız. Bunun için 20. satırdaki değerleri X0=1 ve X = 3 olarak değiştirin. Kök olarak X = 3.14 kolayca bulunur. Daha önce de belirttiğimiz gibi başlangıç X değerlerinin işlem üzerinde büyük etkisi vardır. Örneğin X0 = 3 ve X = 6 olarak verilen başlangıç değerleriyle program çalıştırıldığında sonuç 6.28 bulunur. Fonksiyonun bir taslağı size hangi başlangıç değerlerinin seçilmesi konusunda iyi bir fikir verebilir.
Görsel İterasyon
Bu kadar matematik yeter herhalde. Bu işin bir de sanatsal yönü var demiştik. Çok basit bir program kullanarak oldukça karmaşık şekiller elde edeceğiz. Programın karışık görünmesi kullanılan sistemden değil Commodore 64 ile grafik çizmenin zorluğundandır. Program ekranın üstünden altına doğru noktalar koyar ve bu işlem soldan sağa doğru gerçekleştirilir. Her noktanın arasında ne kadar boşluk bırakılacağı ise bizim vereceğimiz bir formüle göre hesaplanacaktır. Ekranın koordinat sistemi soldan sağa doğru 0-319, yukarıdan aşağı doğru da 0-199 arasında değerler alabilir. Dış X-döngüsü her dikey çizginin yatay pozisyonunu ve içerideki Y-döngüsü de, X'e bağlı olarak hesaplanan S değerine bağlıdır ve bir sütuna koyulacak iki noktanın arasındaki mesafeyi hesaplar. Örneğin 40. satırdaki formülde S=X+1 yazarsak X=0'daki sütunda tüm noktalar birer aralıkla basılacaktır. X=1 olduğunda noktalar ikişer aralıklarla koyulacak ve X değeri arttıkça aralıklar da artacaktır. Böylece sütun sayısı 320'ye ulaşıncaya kadar bu işlem devam eder. Sonuç olarak S=X+1 fonksiyonunun grafiği, noktaları arasındaki boşluklar artan çizgilerden oluşur, ama göz aldanarak bu noktaları yana doğru açılan eğik çizgiler olarak algılar. Şekil-1'deki sonucu (ve diğer simetrik grafikleri) elde etmek için, verilen “İteratif Desenler” adlı programda bazı değişiklikler yapmanız gerekir. Bunlar zaten programın listesinde görülmektedir: 66. satırdaki REM komutunu ve yıldızları kaldırırsanız değişiklikler gerçekleşmiş olur.
PROGRAM ADI 2: ÇÖZÜMLER
00010 DEF 00020 X05z0:Xz1 00040 :DELTAs(X-X0)/C1-FNACXO)Y/FNA(X)) 00050 :X0sX 0005860 :XsX-DELTA 00070 :PRINT 00080 IF ABS(DELTA)>0.'0001 THEN 40 00090 END
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 22
Diğer Problemler
Biraz önce tartıştığımız iteratif metod başka tür problemlere de uygulanabilir. Örneğin bir sayının küpkökünü almaya ne dersiniz? 40'ın küpkökünü bulmak için şu tanımı yazın: X Daha önce yaptığımız gibi bu ifadeyi düzenlersek ve tüm terimleri bir tarafa toplarsak: X^3-40=0 Şimdi 10. satırdaki ifadeyi DEF FN A(X) = X^3-40 olarak değiştirin ve programı çalıştırın. Program X'in değeri yaklaşık olarak 3.41995189 olduğunda yeterli has-
PROGRAM ADI 3: DESENLER
OOOOL REM 6 ön RK BE 0k DE 00002 REM DESENLER OO003 REM Wu (C)1990 nu O0004 REM Hu .. 00005 REM #4 COMMODORE DERGİSİ! 00006 REM ör m ük ük öt dt 00010 1000:REM GRAFİK AYARLAMALARI
<055> <140> <196> <003> <060>
<045> <124> <234> <223> <242>
00030 FOR Xs0 TO 319 00040 00050 FOR Ys0 TO 199 STEP $ 000860 GOSUB 2000:REM PİXEL'İ X,Y'YE KOY 00065 REM SİMETRİK SEKİLLER İCİN BU ş SATIRI EKLEYİN: 00066 REM Hum : <052> <026> <028> <196> <072> <112> <179> <129>
00070 NEXT Y “00090 GET A$:1F THEN 90 00100 GOSUB 3000 : 00110 END ; $ 00950 REM 90 öğ de arat 00955 REM «Hu 00960 REM Hu BIT .. 00970 REM xu MODU AYARLAMALARI! BE 00980 REM «un . . 00990 REM BİT AC-KAPA İSLEMLERİ 00992 REM Hu . Bu 000099 REM a 06 06 00 ük ön 40 Öf 6 ÖK 8 01000 DEF FNSB(N)-PEEK(MM) OR 24N O1V10 DEF AND -<153> <L74>
<000> <080> <154> <076> <003> <228> <2286>
VİC O'İNCİ REGİSTER
01030 REM 8192'YE KOYUNU (VIC REGİSTER 17'NIN 3. BITİ 1 YAP ) <180> O1040 MM,FNSB(3) <208> REM (VIC REGİSTER 17'NIN 5S. BITI 1 YAP ) O1080 MM,FNSB(S) <249>
01120 REM
002000 AND 7)
“03010 HH, FNRBC3)
sassiyette bir çözüme ulaşıldığını bildirir. Bu sayı da 40'ın küpköküne oldukça yakındır. X için öyle bir değer bulun ki SIN (X) = TAN (X^3) olsun. Bu işlem için de aynı sistemi kullanabilirsiniz. Önce ifadeyi yazın, sonra da düzenleyin:
SIN (X) = TAN (X^3) SIN (X) - TAN (X^3) = 0 ve bu ifadeyi programda 10. satıra yazın: DEF FN A(X) = SIN (X) - TAN (X^3) ve programı çalıştırın. Çabucak X = 0.729 radyan olduğunu görürsünüz. Hangi sayı kendi karekökünden 5 fazladır? Cevabı yine aynı sistemle buluyoruz: X = SQR (X) + 5 veya
<236> <ozL> <054> <154>
01070 BASEs8192:REM BİT-HAR. BASLANGICI 01080 REM HARITASINI 01090 GOSUB 4000 OL100 REM RENK CO VE Ci'i O1110 <189> #EHEKRANI RENKLE DOLDURuwu 01130 FOR TA <145> | 01140 RETURN Lİ 01145 : <105> 01150 REM 01160 REM #u ra MN is <166> 01170 REM «s4 AC um <214> 01180 REM wu <088> 01190 REM NN t 02010 ek KC Fs 02020 POKE - 02030 RETURN * 02970 REM <167) 3 02980 REM uu. ea 0 02990 REM BIT HARİTASINI RESETLE xu <16 02991 REM KA | <188> - 03000 k <038> <044> # tü b <056)> | <053> |
<169> <048> <225>
<116>
03030 RETURN 03960 REM 03965 REM Hu . MEL 03970 REM BIT TEMİZLE. ww 03980 REM 04000 FOR TO 828443 04010 READ B:POKE M,B O40Z20 04030 NEXT O4040 IF CK<>5133 THEN PRİNT «4060-4110 ARASINDA DATA b 04050 SYS O40860 DATA 76,68,3,0,32,31,64,0 DATA. 173,63,3, 133,251,173,64,3 04080 DATA 133,252,174, zi 252, 202,48, 208, 244, i 72,66 96
04090 DATA. 04100 04110 DATA