2008-10-18

Odkrycie flickr'a


5 am, originally uploaded by minthem.

Nie wiem jak mogło to uchodzić przez tyle lat mojej uwadze... Odkryłem właśnie niedawno serwis www.flickr.com. No i od kilku dni jak dziecko książkę z obrazkami wertuję świetne zdjęcia umieszczone tam przez użytkowników.
Postanowiłem oczywiście sam też wrzucić tam kilka moich zdjęć i dorzucać sukcesywnie, jak uznam któreś za interesujące. Ale do - nie najlepszych już nawet, ale przeciętnych - prac zamieszczonych tam jednak mi bardzo daleko. Niestety.

Eksplorując możliwości flickr'a dalej odkryłem ciekawą moźliwość: zamieszczania swoich zdjęć z serwisu na blogach, między innymi na blogerze. Właśnie ją wypróbowuję niniejszym postem.

Zdjęcie na dziś: 2004 rok, zima, między czwartą a piątą rano. Widok z kuchennego okna. Dawno tak wcześnie nie wstawałem (już prędzej zdarzało mi się kłaść...). Lubię to zdjęcie, bo to jedno z pierwszych, jakie zrobiłem po tym jak wprowadziliśmy się do naszego mieszkania.

2008-10-15

Anons: Ruch na blogach. Tricki. Knol.

Profesor Timothy Gowers na swoim blogu zaanonsował dzisiaj powstanie Tricki - nowego narzędzia, działającego na zasadzie podobnej do wiki, gdzie będzie można znaleźć i publikować różnego rodzaju sztuczki, kruczki, metody i wzorce stosowalne w rozumowaniach matematycznych.
To wspaniała idea która wzbudziła sporo zainteresowania na pronumerowanych przeze mnie blogach. Mam po cichu nadzieję, że jeśli chwyci, może być dla matematyki nieocenionym a może i przełomowym momentem. Może stać się tym czym skatalogowanie "design patterns" stało się dla inżynierii oprogramowania. Jakkolwiek tautologicznie by to nie zabrzmiało, być może wkraczamy w okres "matematyki opartej na wiedzy", przez analogię do gospodarki opartej na wiedzy.
Gorąco kibicuję, czekam i będę zawzięcie studiował, do czego zachęcam i innych. Kilka wprawek jakie pojawiły się na blogu Timothy'ego Gowers'a i innych wygląda bardzo obiecująco.

Skoro już na anonse mi się zebrało, polecam knolową serię Włodka Holsztyńskiego. Również wygląda bardzo obiecująco. Również polecam.

2008-10-09

Drobiażdżki

Małe wprawki w Haskellu i drobniutkie zabawy matematyczne. To moje rozrywki ostatnio, kiedy akurat mam trochę wolnego czasu, nie oglądam telewizji i nie czytam jednej z dwóch książek których coś nie mogę skończyć.
Zabawa wzięła początek z zagadek o jakich kiedyś na blogu wspomniałem.

Na początek - jak liczbę z zakresu [0,1) zamienić na jej rozwinięcie dziesiętne, a więc, (być może nieskończony) strumień cyfr {0,...,9}?
Można tak:
Bierzemy x.
Jeżeli x równa się 0, kończymy wypisując 0, jeśli nie to:
Mnożymy razy 10. Mamy 10*x.
Bierzemy część całkowitą. Mamy [10*x] (tu [_] oznacza funkcję int: R->Int). Wypisujemy.
W końcu z liczbą (10*x-[10*x]) robimy to samo.

W efekcie produkujemy, być może nieskończony (nawet dla wymiernego argumentu), ciąg cyfr.
Jak zamienić na rozwiniecie przy innej podstawietawie np. 2? To proste: funkcję x->10*x w powyższym schemacie zastąpić przez x->2*x.

Zagadka: co ma wspólnego z tym co napisałem poniższy obrazek:



Ułamek łańcuchowy, np taki: 1/(a_1+1/(a_2+1/(a_3+1/a_4))) będę reprezentował jako listę liczb naturalnych, np. taką: [a_1, a_2, a_3, a_4]. Oczywiście lista może być nieskończona.

Teraz: jak liczbę z zakresu [0,1) zamienić na ułamek łańcuchowy?
Można tak:

Bierzemy x.
Jeżeli x równa się 0, kończymy wypisując 0, jeśli nie to:
Dzielimy 1 przez x. Mamy 1/x.
Bierzemy część całkowitą. Mamy [1/x] ([_] znowu oznacza funkcję int: R->Int). Wypisujemy.
W końcu z liczbą (1/x-[1/x]) robimy to samo.

W efekcie produkujemy, być może nieskończony (ale nie dla wymiernego argumentu, dowód: ćwiczenie) ciąg liczb.

Zagadka (podobna do poprzedniej): co ma wspólnego z tym co napisałem poniższy obrazek:



Spróbuję ten ogólny schemat zapisać w Haskellu, ale:
- będę używał będę typu Rational w miejsce liczb rzeczywistych
- nie będę sprawdzał zakresu wejść (to ważne w życiu ale nudne, więc chociaż na blogu zluzuję)

W poniższym kodzie:
numscheme - to nasz schemat
n_ary - ogólny schemat rozwinięcia pozycyjnego
binary - szczególny przypadek n_ary dla n = 2
decimal - szczególny przypadek n_ary dla n = 2
confrac - rozwinięcie w ułamek łańcuchowy


Kod:


import Ratio ( numerator, denominator, (%) )

numscheme :: Rational -> (Rational -> Rational) -> [Integer]

numscheme 0 _ = []
numscheme x f = y : numscheme( (f x) - fromInteger y) f where
y = div (numerator$z) (denominator$z)
z = f x

n_ary :: Integer -> Rational -> [Integer]
n_ary n s = numscheme s ((toRational n)*)

binary :: Rational -> [Integer]
binary = n_ary 2

decimal :: Rational -> [Integer]
decimal = n_ary 10

confrac :: Rational -> [Integer]
confrac s = numscheme s (1/)



Na deser poznęcajmy się nad liczbą (229/232). Mój kalkulator windowsowy daje przybliżenie: 0,98706896551724137931034482758621

Popatrzmy na nasz drobiażdżek w działaniu:

Main> take 40 $ binary (229/232)
[1,1,1,1,1,1,0,0,1,0,1,1,0,0,0,0,1,0,0,0,1,1,0,1,0,0,1,1,1,1,0,1,1,1,0,0,1,0,1,1]
Main> take 40 $ decimal (229/232)
[9,8,7,0,6,8,9,6,5,5,1,7,2,4,1,3,7,9,3,1,0,3,4,4,8,2,7,5,8,6,2,0,6,8,9,6,5,5,1,7]
Main> confrac (229/232)
[1,76,3]


Tyle na dziś. More to come...

2008-10-08

Jazda po dziwnym atraktorze

OK. Jest kiepsko. Światowe rynki finansowe po serii drgawek pogrążyły się w depresji. System bankowy nie tylko nie okazał się oparciem ale sam był zalążkiem problemu i pierwszy padł ofiarą własnej beztroski. Banki narodowe i rządy usiłują ratować chwiejącego się na nogach kolosa i utrzymać go w pionie licząc, że okrzepnie, albo przynajmniej nie narobi wielu szkód spadając. Frazesy o pieniądzach podatników, zasady które nakazywałyby w innych wypadkach nie używać ich do ratowania prywatnych instytucji, zasady fair play i wolnej konkurencji, pomocy państwa i wiele innych rzeczy poszło w odstawkę w obliczu możliwej katastrofy. Rządzi goły pragmatyzm jeśli nie cynizm. Realna gospodarka - w której wydobywa się i przetwarza kopaliny, uprawia rolę, tworzy narzędzia i produkty i oferuje usługi - gospodarka w której wartość bierze się z natury prztworzonej pracą i myślą ludzką właśnie została zaprzęgnięta by podtrzymać nadęte i abstrakcyjne "coś". Tak musi być - to "coś" ma bowiem również podstawowe funkcje, dla których nie można gadzinie dać zdechnąć. Jest krwioobiegiem dzięki któremu w całym ekonomicznym systemie świata płynie kapitał. Zanik tej funkcji równałby się stężeniu krwi w żyłach. To coś zamknęło w sobie również depozyty miliardow mieszkańców globu. Śmierć tego systemu oznaczałaby nieuchronny bunt.

Tak oto rzeczy się mają i depresji ni smuty w najbliższym czasie nie unikniemy.
Włączając co rano Bloomberga, CNBC Biznes, TVN 24 i podobne myślę jednak o tym, że właściwie nic się nie dzieje. No może nic niezwykłego. Nieprzewidywalność giełd, trendów ekonomicznych, koniunktury nie jest odkryciem dnia dzisiejszego. Zbliżyliśmy się brawurowo do katastrofy, ale w ostatecznym rozrachunku - jeśli system nie pęknie, nic to zmieni. Ten system ocierał się już o katastrofy. Dziś działa co prawda inaczej - nigdy nie śpi, przekracza swoim rozmiarem pojęcie człowieka, działa szybciej niż potrafią zareagować ludzkie zmysły. Żyje w synergii z komputerami, na których pracują niestrudzone aplikacje moniturujące, reagujące na zmiany w jego pracy. Nie wiem czy w rzeczywistości jesteśmy już kiedykolwiek w stanie nad nim zapanować. Działając tak szybko i zwielokrotniając reakcje przez natychmiastowe działanie oprogramowania, staje się podatny na fluktuacje, które rozdmuchuje w mgnieniu oka do gigantycznych rozmiarów.
Mam przed oczami znany obrazek: atraktor Lorenza.

Lorenz (zresztą niedawno bo w kwietniu 2008 zmarły) modelował pogodę - inny układ podobnie jak gospodarka czy rynki finansowe złożony i nieprzewidywalny. Niemalże tradycyjny synonim systemu złożonego. Wychodząc od równań konwekcji w już znacznie uproszczonym modelu, w serii kolejnych uproszczeń uzyskał nieliniowe autonomiczne równanie różniczkowe pierwszego rzędu. Teoria nie dostarcza dziś nawet, nie mówiąc już o latach sześćdziesiątych zbyt wielu narzędzi do badania takich równań. Lorenz użył kompoutera i odkrył, że długoterminowe zachowanie tego prostego zdawałoby się układu zmienia się diametralnie w zależności od wyboru warunku początkowego, wykazując oprócze tego w krótszym terminie "porządek" - czytaj kręcąc się w przestrzeni niemal jak przyzwoity układ o stabilnym cyklu granicznym.
To dało początek teorii chaosu. Kształt tego tworu, do którego zbliża się chaotyczna orbita, tworu na czesć odkrywcy nazwanego atraktorem Lorenza, przypomina nieco kształt motyla. Czy to to spowodowało, że motyl został głównym bohaterem podstawowej anegdotki tłumaczącej chaos laikom (którą też tu przytaczałem) ? Może.

Układ Lorenza budził wątpliwości. Uważano, że jest możliwe iż ruch w tym układzie jest w istocie znacznie bardziej uporządkowany natomiast problemy pojawiają się w związku z interpretacją wyników symulacji numerycznych (jak również zwykłej niedokładności obliczeń).
Tak nie jest, tj. mamy rzeczywiście do czynienia z chaosem. Pokazali to w latach 90-tych Konstantin Mischaikow z Georgia Institut of Technology w Atlancie i Marian Mrozek z Uniwersytetu Jagiellońskiego w Krakowie. Przełomowość tego dowodu opiera sia na połączeniu klasycznego dowodu z rygorystycznym obliczeniem numerycznym. Wiem, wiem - brzmi to nieco enigmatycznie i pachnie dowodem przez ogląd, ale w istocie jest ścisłym dowodem matematycznym. Warto zapoznać się z ich wspólną pracą: tu.

Albo... popatrzeć, zamiast w gorączkowe migawki serwisów ekonomicznych na krążący, jak system który stanowimy my wszyscy dziś, punkt przelatujący tuż nad (pod? obok?) atraktorem Lorenza:



Co nam zostało gdy pozostajemy we władaniu chaosu...