Kuvvet kulesi

Aşağıdaki ifadeyi ele alalım:

\sqrt{2}^{\sqrt{2}^{\sqrt{2}^{\dots}}}

Burada üsteller sonsuza kadar gidiyor. Bu “kuvvet kulesi” ifadenin sonlu bir değeri var mıdır?

Bu değere x diyelim. Kule sonsuz olduğu için bir eksik bir fazla farketmez, o zaman bu x değeri için şu eşitlik geçerlidir:

(\sqrt{2})^x = x

Başka bir deyişle, öyle bir x bulalım ki, \sqrt 2‘nin x‘inci kuvveti x‘e eşit olsun. Bu özel durumda, deneme yanılma ile bir çözüm bulabiliriz.

(\sqrt{2})^2 = 2

Bunun bir çözümü daha var:

(\sqrt{2})^4 = 4

Yani, baştaki ifadenin değeri hem 2 hem 4 olabilir. Ama hangisi? İkisi birden olamaz.

Sayısal deneme yapalım. Kulenin yüksekliğini sonsuz değil de 100 tane yaparak makine hatası içinde değerin 2 olduğunu görüyoruz.

from math import sqrt
a = sqrt(2)
for i in range(100):
    a = sqrt(2)**a
print(a)

2.0000000000000004

Aynı ifadenin 4 çıkmasını sağlayacak bir bakış açısı var mıdır? Bilemiyorum. Bu sadece kullandığım yöntemin bir yan etkisi olabilir.

Şimdi bu problemi biraz daha genelleştirelim. Verilen bir pozitif a sayısı için

a^{a^{a^{\dots}}}

ifadesinin ne olduğunu bulmaya çalışalım.

Önceki gibi bunun çözümünün a^x = x eşitliğini sağladığını görebiliriz. Sorumuz, verilen bir a için bu eşitliğin çözümü var mı, varsa nedir?

Bir grafik çizelim. y=x doğrusu ile, farklı a‘lar için a^x eğrilerinin kesiştiği yerler bu eşitliğin çözümüdür.

Çeşitli a değerleri için a üzeri x eğrileri

Görüyoruz ki, a=1.5 ve daha büyük değerler için bir çözüm yok. Başka bir deyişle,

1.5^{1.5^{1.5^{\dots}}}

ifadesi sonsuz. Buna karşılık, a =\sqrt{2} için x=2 ve x=4 olarak iki çözüm olduğunu grafikte görüyoruz.

Çözümleri bulmak için Newton-Raphson yöntemini kullanalım. Bu, verilen bir f(x) fonksiyonunun köklerini (sıfır olduğu yerleri) bulmak için kullanılan iteratif bir yöntem. İlk tahmin olarak x_0  kullanırsak, Newton yöntemi ile bir sonraki tahminimiz

x_1 = x_0 - \frac{f(x_0)}{f^\prime(x_0)}

formülüyle bulunur. Bir sonraki adım için x_0 yerine x_1 koyar, ve gerektiği kadar tekrarlarız.

Çözmek istediğimiz denklem a^x = x olduğuna göre, f(x) = a^x -x fonksiyonunun kökleri bu denklemin çözümlerini verecek.Bunun türevi de f^\prime(x) = (\mathrm{ln}a)a^x -1 olur. Bunları kullanarak Newton-Raphson yöntemi çabucak bize cevabı verir.

from math import sqrt, log
def f(x):
    return a**x - x
def df(x):
    return log(a)*a**x - 1
a = sqrt(2)
x0 = 0  # ilk tahmin
for i in range(10):  # 10 iterasyon
    x0 = x0 - f(x0)/df(x0)
    print(x0)

1.5303942190345023
1.942129750748319
1.9987620189493733
1.999999400838403
1.9999999999998606
2.000000000000001
2.000000000000001
2.000000000000001
2.000000000000001
2.000000000000001

Peki ya diğer çözüm, yani 4? Onu elde etmek için x=2 çözümünün “çekim havzasından” çıkıp başka bir yerden başlamamız gerekir.

x0 = 5
for i in range(10):
    x0 = x0 - f(x0)/df(x0)
    print(x0)

4.31614460012233
4.047251399507646
4.0013251862721955
4.00000109062139
4.000000000000737
3.999999999999997
3.999999999999997
3.999999999999997
3.999999999999997
3.999999999999997

Merak ettiğim son bir şey kaldı: Bir çözüm olabilmesi için a‘nın alabileceği en yüksek değer nedir? Yukarıdaki grafikten bunun 1.4 ve 1.5 arasında bir yerde olduğunu biliyoruz. Analitik bir çözüm bulabilir miyiz?

Tam eşik değerdeki a için f(x) fonksiyonunun tek kökü olacaktır, yani yatay eksene teğet olacaktır. Bu teğet noktası aynı zamanda minimum olacaktır (yoksa tek kök olmazdı). O zaman, çözüm noktası şunları sağlamalı:

(1) f(x) = a^x -x=0
(2) f^\prime(x) = \mathrm{ln}(a)a^x -1 = 0

(1) bize şunları verir:

(1a) a^x = x
(1b) x\mathrm{ln}(a) = \mathrm{ln}(x)

(1b) sadece (1a)’nın iki tarafının logaritmasının alınmasıyla elde edildi. Bunları (2)’ye yerleştirirsek \mathrm{ln}(x)-1=0 elde ederiz. Yani, eşik değerdeki çözüm x=e olur. Bu çözümü (1b)’de yerine koyarak, a için eşik değerini elde ederiz:

a = e^{1/e}.

Bu değer yaklaşık 1.4447’dir; grafikte tahmin ettiğimiz aralığın içinde.

Sonuç olarak, a^{a^{a^{\dots}}} ifadesi, a <= e^{1/e} ise sonlu bir değere sahiptir, daha büyük a için sonsuzdur.

Bir yan ürün olarak da şu denkliği bulmuş olduk:

(e^{1/e})^{(e^{1/e})^{(e^{1/e})^{\dots}}} = e

Kardeşi \pi gibi, e sayısının da her yerde karşımıza çıkması ne hoş.

Daha zengin matematiksel ayrıntılar için Luca Moroni’nin makalesine bakabilirsiniz. Bu makaledeki daha ayrıntılı analizden, gerekli aralığın e^{-e} < a < e^{1/e} olduğunu öğreniyoruz.

Sıra sıra sayılar — çözüm

Sıra sıra sayılar” bulmacasına katkıda bulunan, ilgilenen herkese teşekkürler. Doğrusu bu problem benim de başta tahmin ettiğimden daha ilginçmiş. İlgilenenler için teorisine dair bazı notları aşağıda aktarıyorum.

Genel kural şöyle: İlk satırda 1 ile başlarız. Satırda “bir tane 1” vardır, o yüzden ikinci satıra “1 1” yazarız. İkinci satırda “iki tane 1” olduğu için üçüncü satıra “2 1” yazarız. Sonraki satırlar:
“bir 2 bir 1” = “1 2 1 1”
“bir 1 bir 2 iki 1″ = 1 1 1 2 2 1”
“üç 1 iki 2 bir 1” = “3 1 2 2 1 1”
şeklinde gider.

Elbette rastgele bir sayı dizisiyle de başlayıp aynı kuralla evirtebiliriz.

“Sıra sıra sayılar — çözüm” okumaya devam et

Bulmaca: Sıra sıra sayılar

Bulmaca çözmeyi sevenler için bir soru daha: Aşağıdaki gibi bir tablo verilmiş. Tabloda her satır bir önceki satırdan belli bir kuralla üretiliyor.

1
1 1
2 1
1 2 1 1
1 1 1 2 2 1
3 1 2 2 1 1

Genel kuralı görebiliyorsanız, bir program yazarak ellinci satırda kaç rakam olacağını bulabilir misiniz?

İpucu: Sayıları sesli okuyun.

Cevabı haftaya.

Bir bulmaca

Geleceğin zehir programcılarından öğrencim Bade Özgüle bana bir matematiksel oyun gösterdi, programını nasıl yazabileceğini sordu. Matematik bulmacalarını hiç beceremem, ama sonunda işbirliğiyle hallettik.

Elinizde tombala kartları gibi, üzeri numaralı beş tane kart olsun:

Karşınızdaki kafasından 1 ile 31 arasında bir sayı tutsun. Sonra kartları gösterin ve tuttuğu sayının hangi kartlarda mevcut olduğunu göstermesini isteyin. Tutulan sayı, seçilen kartlardaki en küçük sayıların toplamıdır. Sözgelişi, birinci, üçüncü, ve dördüncü kartları gösterdiyse, tutulan sayı 1+4+8=13’dür.

Yöntem nasıl çalışıyor? Kartları üretirken, hangi kartın üzerinde hangi sayıların bulunacağına nasıl karar veriyoruz? 31’e kadar değil, daha yüksek bir sayıya kadar çıkmak istesek kaç kart kullanmamız gerekir? Bu kartları üretecek bir program nasıl yazarız?

Cevabı haftaya. İpucu: İkili tabanda düşünün.

Ek: Çözümü aşağıya yorum olarak ekledim.