15. Sayı Yarışma!
Cevapları
Sayın Commodore Dergisi Yetkilisi, Derginizin 5. sayısında yayınlanan yarışma sorusunu çözdüğüme inanıyorum. Soruda, “A noktasından B noktasına en kısa yoldan gitmek için X'in konumu ne olmalıdır?” deniliyor. Herhalde asıl sorulmak istenen “A'dan B'ye en kısa sürede nasıl gidilir?” Aksi takdirde elbette ki A ile B arasındaki en kısa yol düz bir çizgidir. Çözümü bulan iki ayrı program yazdım:
PROGRAM 1:
Yol Zaman = Hız olduğuna göre A'dan B'ye gitmek için her zaman X'in fonksiyonu olarak şu şekilde ifade edilebilir:
Zaman(X)- V 400? 4x2 x )? 5000
Bilindiği gibi bu fonksiyonun türevini alırsak ve sıfıra eşitlersek zaman minimum değeri için X'in olması gereken değeri buluruz. Ben de 1. programda bu yolu izledim. Programın başında zaman ve türev fonksiyonları tanımlandıktan sonra 10. satırdan itibaren türevi sıfıra eşitleyen X değeri aranıyor. Bu işlemler 0-400 m. aralığı içinde yapılıyor. Akıl yürütme ile X'in bu aralıkta bulunması gerektiği anlaşılır. Ayrıca türev fonksiyonu sınırlardan birinde negatif değerinde ise pozitiftir. Zorunlu olarak bu aralıkta bir köke sahip olacaktır. Basit bir mantıkla aralık devamlı 2'ye bölünmekte ve 0,001 değerinden daha küçük olunduğunda X değeri ve bu durumda harcanacak olan zaman dakika olarak yazdırılmakta. Burada X değeri X noktasının sol kenara olan uzaklığının metre cinsinden ifadesidir. Program çalıştığında X = 216,66 m. Zaman = 20,9389
PROGRAM 2:
Bu programı “türev almak mümkün değil” düşüncesiyle yazdım.
PRİNT 147)
1
Ancak hem kesinliği az, hem de harcadığı zaman fazla. Yapılan iş şöyle: 0-400 aralığı önce 2 m'lik adımlarla taranıyor. Zaman fonksiyonunda bir artış olduğu zaman son adım 0,2 m'lik adımlarla taramaya başlanıyor. Adımlar devamlı 1/10 oranında küçültülerek işlem tekrarlanıyor. Adım 0,0002 m. olduğunda işleme son veriliyor ve X değeri yazdırılıyor.
X-216,7 m.
Programı size ilişikte sunuyorum. Son olarak, bu yarışmaları hazırladığınız için size çok teşekkür ederim. Saygılarımla, Feza Buzluca
ADRES: Feza Buzluca KARTALTEPE PETROL SİT. BLOK 23-4 34730 BAKIRKÖY İSTANBUL
SONA
LL
Program minimum X değerini binary search (ikili araştırma) ile buluyor. B, alınan aralığın başlangıcı, S ise sonudur. X, bu aralığın tam orta noktasıdır. Değişkenlerin ilk değerleri aşağıdaki gibidir:
B = 0, S = 500, X = 250, 0 <= X <= 1000. X'in bir eksik değeri için Y1, bir fazla değeri için Y2 hesaplanır. Burada Y değerleri yolculuğu tamamlamak için gereken sürenin saat cinsinden 1000 katını tutar. (Çünkü hız km/saat'ten m/saat'e çevrilmemiştir, bölünmüş olacaktır ki, bu da kıyaslamayı etkilemez.)
OX bir önceki X değerini tutar. Eğer yeni hesaplanmış olan X değeri bir önceki değerine eşit oluyorsa bilgisayarın hassasiyet sınırına ulaştığından döngü biter ve en son X değerinde hesaplanarak print edilir. I iterasyon sayısını tutar ve kullanıcıya bir fikir vermek amacıyla print edilir. Program çalışmaya aşağıdaki basamaklarla devam eder:
pe o 500 41000 0X-0
Sonunda x -216.689825 ve 1-23
— olarak hesaplanır ve print edilir. 250 x? — (Pisagor B Xx s XB — |600? 4 (1000-x)* teoreminden) 125 250 Bataklığı 0X-250 | seçme süresi - SI SAX saat x Normal yeri 3000 NALET seçme adresi S2- XB saat 125 187-5 250 5000 0X-125 Toplam süre - SI * S2 10 15
26 ve 25 sa 35 45 sa
İF THEN
IF THEN
IF THEN 15
PRINT DEGERİ VEREN
"ITERASYON
Programda yukarıdaki sistem kullanılmıştır. Yalnız Y değerleri toplam sürenin 1000 katı olarak hesaplanır. Çünkü her iki Y değerini de 1000'e bölmek kıyaslamayı etkilemediğinden bu işleme gerek yoktur. O
Adres: Mustafa ATA Rüştüsarp Cad. Gonca Sok. Gonca Apt. No: 4/8 Küçükyalı/ İstanbul
Sayın Commodore Dergisi İlgilileri, Derginizin 5. sayısında yayınlanan yarışma sorusunu çözdüğümü sanıyorum. BASIC programına esas olan denklem ve bu denklemin parçalanmış halde yer aldığı program aşağıdadır. Ödül olarak verilen Türkçe Reference Guide kitabını kazandığımı umarım. Saygılarımla, H. Ahmet Kurşun
Adres: T. Emlak Kredi Bankası Fen Servisi Bornova-İzmir
DENKLEM: ( BASIC PROGRAM:
10 160000: W— 360000: 1000
20 DEF FNA(X)— ((SOR(X*X * 4 13) 4 ((SOR(Y-X)* (Y-X) 4
30 .NIM- FNA(0)
40 FOR X-.I TO 1000 STEP .1
SO0IFMIN FNA(X) THEN MIN—- FNA(X):XM-X
60 NEXT
70 PRİNT “EN KISA SÜRE İÇİN X'İN DEĞERİ-”; XM
80 PRINT “EN KISA SÜRE ”; MİN
90 END
* 600?) * 60 100 (Dk.)
NETİCE: m. MİN — 20.94 dk.