17 Haziran 2008 Salı

Random Normal Distribution

# İlk defa Avadis Hoca'nın dersinde şu Central Limit Theorem'le karşılaşmıştım. Bize Excel'de 1000 tane uniform dağılmış random sayıyı 50'şer 50'şer toplatmış, nihayetinde elde ettiğimiz sayıların histogramını çizmemizi istemişti. Bir de ne görelim: Gaussian dağılım çıkmasın mı!
# Geçen gün Taylan Hoca SystemC öğrenmem için bir normal dağılıma uygun olarak sayı üreten bir de bu sayıların histogramını hesaplayan iki modül yazmamı istemişti. Gaussian üretecini 50'şer sayı üretip onları toplayarak mı yapacağımı sordum. Taylan Hoca da Koonin ve Meredith'in Computational Physics kitabından bir algoritma gösterdi. C kodu olarak şöyle:

double randNorm(double mean, double sigma) {
static int iset = 0;
static double gset;
double fac,rsq,v1,v2;

if (iset == 0) {
do {
v1 = randUnif(-1, 1);
v2 = randUnif(-1, 1);
rsq = v1*v1 + v2*v2;
} while (rsq >= 1.0 || rsq == 0.0);
fac = sqrt(-2.0*log(rsq)/rsq);
gset = v1*fac;
iset = 1;
return mean + v2*fac*sigma;
} else {
iset=0;
return mean + gset*sigma;
}
}

# Bunu incelemek lazım. Neden böyle. Kitabı bulup bakayım. Hımm...
# (x1,x2) civarına denk gelecek nokta sayısı: exp(-(x1^2+x2^2)/2)dx1 dx2
# polar koordinatlara geçersek: r=sqrt(x1^2+x2^2), theta=arctan(x2/x1)
# ve dağılım: exp(-r^2/2)r dr dtheta, ve -r^2/2=u dersek
# dağılım: exp(-u)dudtheta, ki u 0 ile sonsuz aradında, theta'da 0 ile 2pi arasında değişiyor.
# Bu bağlamda, x1=rcos(theta)=(2u)^(1/2)cos(theta), x2=(2u)^(1/2)sin(theta) normal dağılacak.
# Kitaptaki BASIC kodu:
TWOU = -2*LOG(1-RND)
RADIUS=SQR(TWOU)
THETA=2*3.14159*RND
GAUSS1=RADIUS*COS(THETA)
GAUSS2=RADIUS*SIN(THETA)
RETURN
# İstenen ortalama ve sigma'da bir dağılım elde etmek için de üretilen sayıyı sigma ile çarpıp xbar eklemek yetiyormuş. Bu daha anlaşılır geldi şimdi bana.

www.aniboom.com

# Sözlük'teki bir entry vasıtasıyla bir Radiohead klip yarışmasından haberdar oldum. Zaten düzenlik olarak Sakareller'in blog'una hayran yapımı klipler gönderiyordum...
# Önce storyboard'lar sunulmuş, sonra sunulanlar arasından www.aniboom.com üyelerinin oylarıyla bazıları seçilmiş. Yönetmenlerine $1000 verilmiş ve bir kısmını çekmeleri istenmiş. Şimdi Radiohead bunlardan birini seçecek ve resmi klipleri o olacak. Vaay!
# Bu vesileyle bu aniboom sitesini de keşfetmiş oldum. Sık sık takip edeceğim herhalde. Animasyon aşkımı dürttü.

16 Haziran 2008 Pazartesi

Mitchell Jay Feigenbaum

# Arxiv.org'un RSS feed'ine üye olduydum. Başlığını anladığım makaleleri indirip okuyorum. Bunlardan bir tanesi de The Theory of Relativity - Galileo's Child idi. Bu dönem Tonguç Hoca'nın dersinde özel göreliliği epey işledik. O yüzden başlık ilgimi çekti. Yazarın ismi, Mitchell J. Feigenbaum, bir yerden tanıdık geldi. İsim benzerliği olabilir mi acaba dedim. Yoo, bu James Gleick'ın Kaos kitabının girişinde son derece karizmatik bir şekilde betimlenen, logistic map'teki sabiti bulan kişiydi.
# Google'da bir arama yapıp hayat hikayesine ulaştım. Epey ilginç. Çok küçük yaşlardan itibaren sayılar ve hesaplamalar konusunda takıntılıymış. İlk defa başına geçtiği bilgisayarı iki saatte kökleri hesaplayacak şekilde programlamış.
This was the first computer I ever used, and within an hour had programmed it to take square roots by Newton's method.
# Böyle bir sabiti bulabilecek kişi oymuş demek ki. Sanki bunun için doğmuş gibi.

8 Haziran 2008 Pazar

Portal


# Barış dönemin ortasında bana Portal'ı vermişti: Valve'ın Half Life 2'nin motoruynan hazırladığı 3D zeka oyunu.
# Biri mavi biri sarı renkte iki portal yerleştiriyorsun, bunlar uzayın o noktalarını birleştiriyor. Bunların içerisinden nesneler de taşıyabiliyorsun.
# Hatta ve hatta birini tavana, diğerini de tam altına denk gelecek şekilde yerleştirdiğinde sonsuza kadar düşebiliyorsun.
# Portalın bir ucundan girip ötekinden çıkarken korunan nicelik de momentum. Bu sayede bir ucu duvara, öteki ucu da zemine koyunca alttakinin üstüne düşünce kazandığın hızla duvardan fırlıyorsun.
# Oyunun çok hoş bir espri anlayışı var. Oyuncu bir laboratuar faresi gibi. Her seviyede sentetik bir ses yapılacakları anlatıyor. Çok kibar turret'lar var. Onları işlemez hale getirince "I don't blame you", görmek için duvardan kafanı uzatınca "I see you" diyorlar.
# 15. tura kadar geldim. Bilgiyarım da zorlansa, düşük fps'li olsa da çalıştırıyor.

Cauchy Distribution


# Sevinç'in arkadaşları, geçen senelerde Sevinç'in de aldığı C dersinin ödevlerinden birinde takılmışlar, yardım arıyorlarmış. Ödev: Cauchy dağılımına uyan 1000 dene rastgele sayı üretip, histogramlarını teorik tanımıyla kıyaslamak. Her zamanki gibi atladım.
# Riskglossary.com'dan öğrendiğim kadarıyla Cauchy distribution ile random sayı üretmek için iki adet Gaussian dağılımına uyan random sayı birbirine itina ile bölünürmüş.
# Avadis Hoca'nın dersinde öğrendiğim N adet uniform dağılıma uyan random sayıyı topla N'e böl tekniğiyle iki Gaussian üretip birbirlerine bölerek sayıcıklarımı ürettim. (bkz. Central Limit Theorem) Çocuklara gönderdim. İşlerine yarar umarım.
# Ben de bu vesileyle, teorik değil ama pratik olarak, uniform dist'lerin toplamlarının, çarpımlarının ve bölümlerinin muhtelif farklı dağılımlara yol açtığını görmüş oldum. İleride işim düştüğünde daha detaylı irdelemem lazım. Hala Taylan Hoca'nın Poisson distribution'la ilgili sorusunu yanıtlayamadım ayrıca.

Karıncalar

# Karıncalar Sakareller'e, daha doğrusu Soluk'a, sunduğum ilk melodimdi. Şarkı haline getirmeye zorlayınca ABAB formunda bir şey çıkıyor. Bahadır o zaman "Uğur senden böyle bir şey beklemezdim, bu çok normal ve düz" yorumunu yaptıydı. Geçen gün parçanın konseptini oturtmaya ve sözlerini bitirmeye çalışım, şöyle bir şeyler çıktı:

Karıncalar mutfağa dolmuşlar
Karıncalar tezgahta dolanırlar
Karıncalar yatağıma dolmuşlar
Karıncalar rüyamda dolanırlar

Ekmek kırıntısı taşıyorlar yuvaya
Çekirdek kabukları sırtlarında

Sıra sıra, peş peşe, dizilmişler yollarında
Son vermişler keşmekeşe, (düzen/nizam belirten birşey birşey)

Anne onları sakın öldürme
Beslerim ben onları ekmek peynirle

Bulaşıklar yıkanacak
Düzen tekrar kurulacak
İstilacılar atılacak
Çünkü temizlik şart
# Önce anne'ye okudum şarkıyı. Onları öldürme, ben besleyeceğim kısmında, "ah çok zor" bakışı attı. Sonra düzenin tekrar kurulduğu kıtayı okuyunca da, "yaa işte mecburen" dedi. O zaman, Anne'nin verdiği içten tepkiyi görüp şarkının belli bir ruhu yakaladığını tespit ettim.
# Benim yazdığım sözlerdeki ana kusur, söyleyişinin akıcı olmayışı. Yani melodisine tam oturmadan, o yönü tam dikkate alınmadan yazılmışlar. Başar'a rahatsız edici geliyor. Önceden melodi üstüne failatün failün kalıplarının hazırlanmasını, sözlerin onlara göre yazılmasını önerdim.
# Arada da karıncaların yürüyüşünü, onların seviyesinden sembolize edecek bir bölüm olsun istiyorum. "Karıncaların Marşı" gibin.
# Dün Bahadır'ın zamanındaki yorumunu hatırlattım, Barış da "Bahadır dikkat et bak, Uğur travmatik bir deneyim yaşamış, o zamandan beridir acayip melodiler buluyor" dedi. Gülüştük.

1 Haziran 2008 Pazar

Snd-RT

# Kjetil S. Matheussen Common Music mail list'ine ICMC2008 konferansında Snd-Rt'nin son durumunu anlatacağı sunumu gönderdi. Bu vesileyle ben de zamanında bir sınav öncesi desktop'a indirip oynadığımı sonra da unuttuğumu hatırladım. Şimdi Windows için emacs'i lisp'iynen hazır paketini yeni bilgisayarıma indiriyorum. Grace ve Csound kombinasyonunun yanında Snd-RT ve Pd de iyi bir ikili olacaklar gibime geliyor.
# Bu sistemin güzel yanı Pd, Csound ve kullanmadığım SuperCollider'ın aksine control-rate içermiyor oluşu. Yani data-flow'un taranması yani compile edilmiş üniteler arası veri akışı işlemciyi yemiyor. Sample by sample sentezleme rahatlıkla yapılabiliniyormuş. Csound'ta Reaktor'de gördüğüm o noise FFT'si manipülasyonu synth'i real-time çalışamamıştı.