Tuesday, February 28, 2012

Броненосец

Предположим вам понадобился контейнер с арифметическими операциями, с математическими и статистическими функциями - не найти из того, что под рукой. Такие, как std vector, framework vector и std valarray хороши в арифметических операциях и в слияниях/разлияниях подвекторов. valarray хорош в поддержке математических функций и обладает высокой производительностью в версии Intel компилятора благодаря использованию IPP. Конечно, можно вспомнить про boost и blitz++, но использовать одну махину или другую поменьше, с необновляемым кодом, для тестирования и получения простой статистики надо иметь значительно больше энтузиазма, чем у меня есть. Хорошо бы иметь библиотеку с выразительностью операций matlab, легко интегрируемую в С/С++ и бесплатную. Для примера, следующую версию вычисления нормы 2 с std вектором выразительной не назовешь, без std проще будет.
Поиски навели на библиотеку Armadilla, предоставляемую в заголовочных файлах с шаблонами, плюс библиотечные файлы blas и lapack, как дань достигнутой теми производительности. Из-за них, оказалось, размещение arma матриц в памяти сделано, как в Фортране. Библиотека обновляется, автор использует ее в своих научных исследованиях, есть пользователи и форум. 
Сразу нашел в ней то, что мне нужно. Нашел даже больше, чем рассчитывал. Оказалось, что автор Conrad Sanderson сделал многое, чтобы Armadilla стала очень похожа на Octave, и он добился этого. Сравниваем пример кода нахождения коэффициентов линейной регрессии.
Octave:

С++ Armadilla
И код, и результат одинаковы (с поправкой на С и реализацию rand)
Обнаружил, что не хватает гистограммы. Написал автору, получил ответ: “а сам напиши”. Написал аналог histc из Octave. Что оказалось непросто, так это встроить функцию в библиотеку. Во время встраивания открылось еще одно достоинство библиотеки. Код с использованием шаблонов написан так, что векторные или матричные вычисления, подобно таким A=B+C+D*E, не создают временных массивов для промежуточных матриц. Достигается это использованием так называемых Glue классов. Они то и усложнили разработку. 
Сравнил производительность вычисления гистограммы с помощью разработанной arma::histc и кода, написанного с std::vector. Последний не сумел написать проще, чем так

Производительность arma версии лучше почти в 2 раза.
Неплохой броненосец у Конрада Сандерсона получился.

Monday, February 20, 2012

Последний президент, знающий Бродского

Думаю, что это видео-интервью под "дождем" может изменить ваше мнение о М.Саакашвили
Прост, интеллигентен, без галстука, в скромной обстановке без позолоты, изменившийся, проявляя "больше терпения, больше выдержки", не одобряющий стратегию нулевого политического риска, понимающий необходимость перспектив роста для граждан и мечтающий о грузинских небоскребах.
За рамками интервью:
Оказывается, Грузия экспортирует электроэнергию в Россию.
В Грузии проведено более 70 экономических реформ. В 2009 году по условиям ведения бизнеса Грузия на 11-ом месте (Россия на 120-ом).
Выступая в университете в Вашингтоне, Саакашвили пошутил над русскими туристами: на вопрос "Occupation" (род занятий) анкеты они отвечают: "Нет, нет, просто туризм".




Thursday, February 09, 2012

Готова ли масса русского крестьянства "Африканского континента" к демократии?


В статье “Недомолотая мука русской истории” вслед за многими настоящими и прошлыми мыслителями любимый мною А.Кончаловский раздумывает над вопросом, готова ли Россия к демократии. Вывод - нет, не готова, и надо запастись “историческим терпением” для того, чтобы пережить, преодолеть наше “варварство”.
А древние греки 2000 лет назад были готовы? Уже (или еще?) в 5 веке до нашей эры в Афинах строго соблюдалась отчетность должностных лиц и не допускалось неоднократное избрание одних и тех же политиков на государственные посты (что не помешало Периклу оставаться у власти более 30 лет, народное собрание 15 раз выбирало его первым стратегом), а любой гражданин мог возбудить иск по графе параномон (жалоба на противозаконие).
Нет, “варварство” надо преодолевать независимо от демократических усилий, и сам А.Кончаловский успешно учит нас культуре. А демократию считать в России наступившей. И вообще, считать отношения с ней подобно членству в ВТО - ты соблюдаешь правила, в ответ тебя признают “равным”. Обыкновенный контракт.
“Худшая форма правления” нужна для того, чтобы избежать революций и потрясений. Хотя и не всем удается, на площадях и футбольных полях. Особенно, если к демократии принуждают. Известны случаи и противодействия этой порочной практике правления, так в 457 г. спартанцы были приглашены в Беотию для низвержения демократии.
Порочна она в частности потому, что “демократия не знает истины, и потому она представляет раскрытие истины решению большинства голосов” - Бердяев. Большинство не бывает моральным, объединяет не добро, а зло, и не за, а против. Все эти крики “Долой” и “На Кремль” цена единства кричащих. Странно, что не выдвинули - “Захвати Кремль”, тогда единство стало бы еще безграничнее.
Демократия не готова для того, чтобы Россия ее приняла. Она нужна нам примерно так же, как ВТО.
Может параллель неуместна, но реакция князя Светослава на предложение Ольги, вернувшейся крещеной из Константинополя в 955 году, принять христианство кажется симпатичной и вполне демократичной - “Могу ли один принять новый закон, чтобы дружина не смеялась надо мной?”

Saturday, January 28, 2012

Автоматическое распределение регистров


Когда пишешь на ассемблере, всегда возникают проблемы с использованием регистров. Регистров всего восемь, а переменных, которые надо в них разместить, значительно больше. Сравни - регистров 8, а инструкции трех-местные. У меня распределение регистров всегда было постоянным источником ошибок и путаницы. Да и код может оказаться неоптимальным. Решил проблему, написав скрипт (ruby), который, найдя выделенные фрагменты кода с абстрактными регистрами, анализирует текст и заменяет переменные на физические регистры. Например, имея текст, в котором используются 22 абстрактных регистра (пишешь, не заботясь, какой физический регистр использовать)
получаешь фрагмент с назначенными реальными регистрами. Все 22 переменные разместились в шести регистрах.
Чтобы уменьшить зависимости, добавил в скрипт опцию “перемешивания” регистров, которая означает простую рекомендацию - не вынимать из стека свободных регистров последний возвращенный в стек регистр. Однако ускорение оказалось не большим: видно, механизм “переименовывания регистров” неплохо работает.
В качестве алгоритма “распределения регистров” (register allocation) использовал простой анализ живучести переменных (liveness analysis), описанный во многих книжках по компиляторам. А.Аппель представил его в своей книге “Modern Compiler Implementation in C” так (никогда не называй сделанное "современным")
def и use являются массивами множеств с переменными, которые определяются в строке n (им присваивается значение) или используются, соответственно. Код алгоритма 10.4 буквально может быть таким
begin txt.each_with_index { |line, n| livein_[n] = Set.new(livein[n]) liveout_[n] = Set.new(liveout[n]) livein[n] = Set.new(ause[n]) tmp = Set.new(liveout[n]-adef[n]) livein[n].merge(tmp) unless tmp.empty? liveout[n] = Set.new asucc[n].each { |s| liveout[n].merge(livein[s]) unless livein[s].empty? } } end until livein==livein_ and liveout==liveout_
Интервалы живучести переменных и присвоение имен физических регистров (номеров) можно представить таким образом.
Слева - исходный код (усеченный текст) с абстрактными регистрами, в середине - интервалы жизни этих регистров по телу функции, справа - присвоенные физические регистры, точнее их номера. Горизонтальный заголовок из цифр по модулю 10 - это номера абстрактных переменных. В имени абстрактной переменной для 128-разрядных регистров используется префикс "x", для 256-разрядных - префикс "y".

Thursday, January 19, 2012

Приснилось


Приснился мне сегодня сон - В.В.Путин опубликовал коды решения на Ruby упражнений, данных в книге “Modern Compiler Implementation in C” А.Аппеля. До утра в полудреме я с бессилием сна пытался найти и понять решение для главы 9. Неужели ВВП это сам написал? Не может быть - простые слова, задушевные фразы о России, приглашение к диалогу, интерес к среднему классу и что (кто) там, за чертой бедности, открытие социальных лифтов и 25 млн рабочих мест (больше чем в 10 раз число подписей, необходимое кандидату в президенты). Фоносемантическая оценка текста: сильный, величественный, холодный, злой.
Следующая глава номер 10 - “Liveness Analysis”, между застоем и революцией.

Tuesday, January 10, 2012

Курс Обучающихся Машин


Закончил курс Machine Learning. Курс содержит видео лекции, контрольные вопросы, упражнения с программированием. Интенсивность - тема в неделю, несколько (около 10ти) видео по 8-15 минут на тему. Продолжительность - около 2-х месяцев с восемью уроками программирования. Рассмотрены следующие темы: линейная регрессия с одной и многими переменными, логистическая регрессия, нейронный сети, алгоритм обучения, Support Vector Machines (SVM), кластеринг, компонентный анализ, детектирование аномалий, рекомендующие системы. Из заявленных тем не было дерева решений и наивного Байесовского классификатора.Читает профессор, директор лаборатории Stanford Artificial Intelligence Lab Andrew Ng, отмеченный в 2008 как один из 35-ти выдающихся инноваторов  в возрасте до 35.  Программирование - на Octave, бесплатный аналог Matlab с умеренной с ним совместимостью. Курс оказался интересным с живыми примерами и программированием. Расскажу про несколько уроков, точнее про два.
1. Распознавание рукописных цифр. Материал, на котором выполнялось обучение выглядит таким образом.
Аналогичный подход применяется в распознавании текстов. В MS Paint мышкой нарисовал несколько цифр и после обучения на базе 5000 образцов, подобных тем, что на рисунке, оценил цифры нарисованные мною. Так “4” (цифра "преувеличена" :)
с помощью следующего кода с оттренированными параметрами all_theta
d4 = imread('4.bmp');
d4d = im2double(imcomplement(d4));
pred = predictOneVsAll(all_theta,reshape(d4d,1,400))
определилась (предсказана моделью - pred) как “4”
Три строки кода выполняют: чтение изображения 20х20 точек, инверсия яркости, превращение в матрицу double значений, использование параметров модели для определения цифры. Входными данными являются точки изображения, развернутые в строку (400 значений яркости). Ясно, что для того, чтобы распознавание заработало в настоящем, полезном приложении, надо потратить значительно больше усилий: найти строку символов в изображении, выделить каждый символ, привести его к размеру обучения, распознать, получить слова, проверить орфографию и семантику.
2. Другой интересный пример: используется база оценок (1..5) фильмов (1682) зрителями (943), взятая здесь, это матрица Y размером 1682x943 со значениями рейтинга от 1 до 5, где 5 - лучшая оценка, а 0 означает, что фильм i зрителем j не оценен, то есть, нет рейтинга. Картинку оценок можно представить так
Слегка “размыл” изображение, иначе яркие точки (высокий рейтинг) были едва видны. Видно, что данные упорядочены, и по фильмам и по зрителям. К исходному массиву “подсоединяется” мой рейтинг нескольких фильмов Y=[my_ratings Y]. Вот этот список.
Затем начинается тренировка/”подгонка” параметров, которыми являются веса для (фильм/зритель) и свойства (романтический, боевик, …), с помощью Octave функции fmincg, “подгоняющей” дифференцируемую много-параметрическую модель с помощью функций стоимости и частных производных.
theta=fmincg(@(t)(cofiCostFunc(t,Ynorm,R,
num_users,num_movies,num_features,lambda)),
initial_parameters,options);
В результате получаем параметры theta, по которым вычисляются модельные рейтинги фильмов от всех зрителей, включая “подсоединенного” зрителя с малым числом просмотренных фильмов - меня. 10 фильмов с максимальным модельным рейтингом  являются рекомендацией для просмотра.
Не уверен, что посмотрю. В качестве побочного результата, определил похожесть своих предпочтений с другими зрителями. Получилось, что не очень похож. Нашлось только четверо, кто оценил 5 фильмов из 14-ти так же, как я.
Думаю, какой следующий курс пройти (“взять”): NLP или Алгоритмы.
Есть и российский сайт, посвященный машинному обучению. Он содержит большое количество материала на русском. В списке прикладных программ анализа данных на сайте есть Matlab и нет Octave, видимо, по недоразумению.

Friday, December 30, 2011

Прохоров учится летать


Прочитал предвыборные тезисы Прохорова. Может быть, к следующей кампании он лучше представит все то, что умеет, понимает и собирается совершить. А в этот раз получилось бездарно. Начиная от приукрашенного сравнения “белого воротничка” с фантомасом и кончая его кандидатской геополитической простотой. Сравнительные образы против Путина - фотографии и тексты, даны на каждом слайде презентации (Прохоров - справа) кроме первого, на котором с помощью множества повторений, как заклинаний, звучит абсурдный Прохоровский возглас: “власть для человека”. По определению власти это невозможно. Природа власти - подчинять и заставлять.
Другие выдающиеся призывы:
  • опираться в политике на “русскую гуманистическую традицию”. Ну да, и на хлебосольство, тогда нашу границу немедленно перейдут.
  • "инвестиции в культуру - фундамент модернизации и экономического развития". Может и согласился бы, если речь шла о культуре возделывания земли.
  • "основной приоритет государства - защита частной собственности". А кто будет государство защищать?
  • “Сколково в Калининград”, вообще выглядит как новогодний тост, и не первый.
  • на оборону столько, сколько на здравоохранение. Также мало?
  • "50% закупок у отечественных производителей". Ха, Прохоров в Уралобуви засунутый в Запорожец.
  • "выборность участковых инспекторов". Глубока демократия. Добавить прозрачность выборов подруг.
Итог: если что-то и “почитать на праздники”, так это “О первоначальном договоре” Юма, а не программку Прохорова.

Thursday, December 22, 2011

Не стало

Мама была трудолюбива, несгибаемой воли, упряма, беспощадна и пряма, с грубоватым юмором. Боролась за жизнь до последнего вздоха. Есть и останется во мне.

Friday, December 02, 2011

Песочный ноутбук


Купил HP ноутбук с i5. На третий день вдруг обнаружил в отладчике опцию показывать ymm регистры. “Да ну, не может быть. Наверное, MS в студии свою готовность демонстрирует” - подумал я. Показалось, что слишком мало времени прошло. Но первый же результат google-поиска i5 2410M подтвердил - Sandy Bridge. Надо проверять. Следующий код
  int cpu[4];
  __cpuid(cpu,1);
  printf("CPU: %sSSE2,%sSSE3,%sSSSE3,%sSSE4,%sSSE42,"
     "%sSSE4a,%sAVX,%sAVXFMA\n",
     cpu[3]&0x04000000?"+":"-",
     cpu[2]&0x00000001?"+":"-",
     cpu[2]&0x00000200?"+":"-",
     cpu[2]&0x00080000?"+":"-",
     cpu[2]&0x00100000?"+":"-",
     cpu[2]&0x00000040?"+":"-", /// :)
     (cpu[2]&0x18000000)==0x18000000?"+":"-",
     (cpu[2]&0x18001000)==0x18001000?"+":"-");
подтвердил, имею AVX
CPU: +SSE2,+SSE3,+SSSE3,+SSE4,+SSE42,-SSE4a,+AVX,-AVXFMA
Супер! 
В действительности этой проверки недостаточно, надо проверять xgetbv, чтобы узнать, поддерживает ли OS AVX, смотри Intel документ 319433-011. Проверил доступность AVX в Ubuntu (которую установил на ноутбуке, как вторую OS) простым “cat /proc/cpuinfo”, - доступны.
Пишем что-нибудь проверить производительность, например axpy Y=Y+a*X. Для начала в 32 битном режиме. Сравниваем производительность AVX кода
@@by8:
  vmulps ymm0, ymm1, REAL4 PTR [esi+ecx*4-32]
  vaddps ymm2, ymm0, REAL4 PTR [eax+ecx*4-32]
  vmovaps REAL4 PTR [eax+ecx*4-32], ymm2
  sub ecx, 8
  jg @@by8
с кодом SSE2, который почти такой же, но двух-местный. Константу размножаем вместо pshufd новой инструкцией vbroadcastss и данные выравниваем не на 16, а на 32 байта. Ускорение есть, хоть и скромное. 
Правильность результата тоже проверена. 
Будем использовать, там, где ускорения можно ждать. Хорош ноутбук!

Tuesday, November 29, 2011

Конец раздвоению


Преодолел свое раздвоение личности. Для меня является фактом: 1. лучшая среда разработки в windows - MS студия; 2. лучший редактор - vim. Вот и мучайся, прыгая от одного к другому, переходя от одной комбинации клавиш (короткий список, длинные последовательности) к другой (длинный список, и все равно неполный). 
Сначала просто переключал приложения. Затем в студии нашел “Open with” (правая клавиша мышки, указывающей на файл) и начал переключаться легко прямо в студии. Для этого добавил “Vim” в “Tools/External tools...”, а в поле аргументов, согласно vim.wikia, вписал “--servername VimualStudio --remote-silent +"call cursor($(CurLine),$(CurCol))" $(ItemFileName)$(ItemExt)”.
Три для назад ситуация изменилась кардинально. Установил ViEmu - эмулятор Vim в редакторе студии и получил почти всю мощь Vim. Не все 100% (на все сто не смогу использовать ни при каких условиях), конечно, но сожаления нет, и улучшение очень значительное. Хотя, кое-что остается за MS, например, Ctrl-Bs для удаления слова назад, вместо Vim-ского Ctrl-W в Insert режиме. Конечно, плагинов нет, и не работают встроенные функции, например, sort. Но, повторюсь, основное работает, и не надо отрывать рук от клавиатуры и тянуться за мышкой и за мелкими клавишами стрелок. Банально - одинаковый инструмент в Windows, Linux и MacOSx. Писать в доке гугла - такая тягомотина с мышкой, что плечо заболевает прямо сейчас.
"Раздвоение не следует путать с шизофренией" - пишет Википедия
В Vim по-прежнему переключаюсь на asm файлах, так как в студии на них нет расцветки синтаксиса.
Через 3 дня обнаружил, что базовая операция в ViEmu не работает, как должна. Имею в виду типа ":%s/a/b/gc" - подтверждения на замену нет, все глобально меняется за один раз. Пишу в ViEmu "поддержку", получаю в ответ: "Boris, apologies, confirmation is not implemented (yet). It will be implemented in a future version. So it is just ignored... sorry about that.". Это сколько же нужно версий выпустить, чтобы эмулятор получился. Текущий "симулятор" имеет версию "ViEmu 2.5.14 for VS 2000". Беда с этими SW девелоперами.

Sunday, November 13, 2011

"Это злободневно, как свежая газета"


заметил А.Пушкин, прочитав тома X и XI “Истории государства Российского” Карамзина.
Посмотрел фильм “Борис Годунов” В.Мирзоева и вам советую, если вы неравнодушно читали трагедию Пушкина. Небоскребы Москвы, бронетранспортеры, иглотерапия, тренажерный зал, ноутбуки, кухня с “народом”, глядящим в телевизор  - как попытка перенести действие трагедии в нашу сегодняшнюю жизнь - озлободневить. А действия такие: борьба за трон, ловко организованное избрание, умерщвление, обман, закрытие границ, поиск поддержки за рубежом, придворный расчет, “пятно” на совести, страх без раскаяния. Рациональный (прагматичный) Борис Годунов побежден иррациональным самозванцем, “фантомом”, осуществившим фантастический “замысел отважный”. “... и вор, А молодец” - говорит про того народ. Трагедия в фильме заканчивается словами из рукописи "Да здравствует царь Димитрий Иванович!" вместо ремарки "Народ безмолвствует", которая появилась в печатном издании трагедии. Странно, что белорусы назвали свои митинги протестами “молчания”, а не “безмолвия”. 
Главным артистом, на мой взгляд, оказался Л.Парфенов, превосходно сыгравший роль внимающего пресс-секретаря.
Интересно замечание Пушкина, видимо, обдумывающего тему сочинения "О царе Борисе и о Гришке Отрепьеве": “Чем более читаю Тацита, тем более мирюсь с Тиберием”.

Sunday, November 06, 2011

"Капу проглотил"


Посмотрел бои 4-го (бокс) и 5-го (смешанные стили) ноября. В том числе главные - Лебедева, специалиста по пенсионерам, и Хасикова, сломавшего рекордсмену Гиннеса челюсть. Зрелища потрясные. Мы таких раньше раз в году не видели, а тут каждый день (2 дня) - рэп, вспышки света и тьмы, столики с бутылками, девки, прикрытые только номером раунда, вальяжные негры в шубах, слушающие гимн Советского Союза, и, наконец, безумный диагноз комментаторов - “да он капу проглотил”.
Бахтин с развернутой кистью

Самый классный и перспективный парень (боксер), на мой взгляд, - Исмаил Силлах - техничный, легкий, всепроникающий, тонко чувствующий, с поразительной реакцией.
Бахтин бьет странно, по-моему, шлепки незакрепленной кисти. Не понятно, почему колумбиец его не послал, а 8 раундов из 10-ти притворялся побитым. Лебедев молодец, конечно, но пора ему кого-нибудь помоложе встретить. Похоже, недовольство многих немилосердным добиванием Джонса сказалось, и Лебедев не спешил обрушиться на Тони, так и не добил. Бату Хасиков - удивительный боец, у которого все главное готовится и делается до боя. Необычайная концентрация, решимость, даже не победить, а выполнить то, к чему готов. Хорошо бы весь бой посмотреть, но для этого нужен равный.

Friday, November 04, 2011

Температура цветения


Слишком долго глядел!
К вишневым цветам незаметно
Я прилепился душой.
Облетели... осталась одна
Печаль неизбежной разлуки
Сайгё
Обнаружил интересный подход в получении информации, можно сказать поэтический. Известно, что вишня в Японии цветет в конце марта - апреле - в начале мая, когда температура становится +7 и выше. Дни цветения вишни для японцев являются днями особенными (в США тоже отмечают. Похоже, благодаря японцам). Время Cherry blossom festival японцы и гости Японии проводят в парках, наслаждаясь тихой красотой цветущей природы (ханами - любование цветами). Этому празднику тысячи лет. Столько же лет поэтические натуры с чашкой сакэ воспевают цветение. Многие оставили свои впечатления в дневниках вместе с датами, например,
Tokistune Hiramatsu on April 14, 1644: “In Seiryoden Palace, Kyoto, we enjoyed watching cherry blossoms and took sake provided by the emperor.”
Даты цветения, оставленные аккуратными предками, стали исходными данными для косвенного определения температуры в марте на тысячу лет в прошлое. В статье "Climate Change and Cherry Tree Blossom Festivals in Japan" Richard Primack и Hiroyoshi Higuchi приводят результаты трансляции даты цветения вишни в среднюю температуру в марте в Киото. На графиках: верхний - день (в году) полного цветения, нижний - средняя температура в марте, от года 1000 до 2000-го.


В целом, корреляция явно не видна, за исключением последних 200 лет, для которых видно, что температура возрастает и вишня цветет раньше. 
Не понятно, как вычислялась температура. Не имея числовых данных для графиков, написал автору (Primack) с просьбой выслать 2 таблички, но не получил их, хотя ответил на его вопросы: “кто” и “для чего”. Пришлось оцифровать оба графика в матлабе - на каждой различимой точке жмешь кнопку, получаешь координаты и сохраняешь их, затем шкалируешь на данный диапазон по x и y.
Оцифровали, вычисляем корреляцию, но сначала надо выравнять точки по годам. Для этого создаем последовательность дат (годы, “круглые” значения в отличие от отсканированных) и отображаем на нее (аппроксимируем) точки с днем цветения и точки температуры в марте.
% read scanned data
% the blossom dates in DOY in Kyoto
gd = csvread('graphDay.csv');
% derived T Co in March in Kyoto
gt = csvread('graphTemper.csv');
% a sequence of years to interpolate to
xapr = 1000:5:1990;
gdxapr = interp1(gd(:,1),gd(:,2),xapr');
gtxapr = interp1(gt(:,1),gt(:,2),xapr');
% is there any correlation?
corrcoef(gdxapr,gtxapr)
Получаем коэффициент корреляции (-0.3939), слабая корреляция есть. Минус отражает тот факт, что чем выше температура в марте, тем раньше день цветения в году.
Как же ученые получили нижний график ("Using a complicated equation")? Что за функция, которая транслирует день цветения в среднюю температуру месяца? Можно найти аппроксимирующий полином, но: физической зависимости он не объяснит, и не подтвердит, что отображение правильное. Лучше взять официальные данные о температуре в марте в Киото (имеем, начиная с 1881 года) как калибровочные, и аппроксимировать зависимость между правдивыми данными, то есть, метеоданными и данными о дне цветения из дневников. Затем использовать полученный полином для аппроксимации температурных значений на все тысячелетие.
% read meteo data and interpolate
gt1881 = csvread('kyototemper1881_2000.csv');
gdxapr1881 = interp1q(gd(:,1),gd(:,2),gt1881(:,1));
X = gdxapr1881(1:end-3);
% input data matrix
X = [ones(length(X),1) X X.^2];
% compute polynomial koefficients
theta = inv(X'*X)*X'*gt1881(1:end-3,2);
X = gd(:,2);
X = [ones(length(X),1) X X.^2];
% compute approxomated temperature values
y = X*theta;
Картинки не сильно отличаются. Возможно, авторы применили тот же прием, но с более осмысленной зависимостью по сравнению с параболой. Осталось не ясным.
Теперь проверим опасения глобального потепления. Главный исследователь темы доктор Аоно утверждает, что наблюдаемое им увеличение средней температуры в Киото за последние 170 лет (+3.4С) определяется глобальным потеплением (+0.6С) и урбанизацией региона (+2.8С). 
Проверяем. Действительно, средняя температура за последние 100 лет в Киото значительно возросла.
% plot meteo data and trend
plot(gt1881(:,1),gt1881(:,2),'-b.');
X = gt1881(:,1); X = [ones(length(X),1) X];
% koefficients of the trend line
theta = inv(X'*X)*X'*gt1881(:,2)
hold on;
plot(gt1881(:,1),X*theta,':r');
Интерес к поэзии вечен. Ставьте даты под своими стихами.



Tuesday, November 01, 2011

Единомышленник


Читаю в статье “Чем больше в стране нефти, тем меньше в ней демократии” в rbcdaily:
“В своем труде американский исследователь констатирует, что если в какой-то развивающейся стране открывают более или менее крупное месторождение нефти, то через 30 лет ситуация с политическими свободами становится там хуже, чем если бы залежей нефти не существовало. Конкретно же, согласно расчетам г-на Тсуи, это выглядит так: находка месторождений нефти стоимостью в 280 млрд долл. приводит к тому, что через 30 лет данное государство в общепринятых рэнкингах уровня демократии теряет 10%.”

Очень похоже на выводы, полученные мной в начале года и описанные в статье “Нефть”. “Похоже” - если согласиться, что низкий уровень коррупции является важным составным показателем демократии.
"И произошло удивительное, стоило перевести Россию из страны, добывающей и экспортирующей нефть, в категорию Petroleum=No, как коррупция в модели снизилась."

Thursday, October 27, 2011

Элитная школа без компьютера


Можно ли обучить детей дробям делением пирожного? Читаем статью в NYTimes. Сотрудники hi-tech компаний Apple, Google, HP, eBay отдают детей в школы, в которых запрещены компьютеры. Зато в классных комнатах, как в старые добрые времена, висят черные доски с фломастерами и мелками, стоят шкафы с энциклопедиями и деревянные полки с тетрадями. Задача таких классов сделать обучение осязаемым, тактильным и избежать неприятия материала. Например, один из учителей объясняет дроби разрезанием яблока и пирожного на части, чтобы всем досталось - живо, в общении, наглядно и вкусно.
В 160 Waldorf школах в стране (40 в Калифорнии) преподавание фокусируется на физический, живой активности, а обучение происходит на творческих и жизненных (практических) задачках. Сторонники такого подхода считают, что компьютеры препятствуют творческому мышлению, подвижности и общению детей. Пол Томас, бывший учитель, профессор, написавший 12 книг, говорит: “Обучение - это человеческий опыт. Компьютеры отвлекают внимание, в то время как нужны критическое мышление, грамотность, способность к количественным заключениям”.
Обучение и опыт приобретаются в общении детей с окружающим миром, любящими родителями и сверстниками. Не только компьютеры, будь они сколь угодно простыми и дружественными в обращении (отличаем от общения), препятствуют этому общению, но и ТВ. Из нескольких исследований стали известны даже количественные характеристики потерь в развитии ребенка. Например, в статье Journal of Pediatrics, Aug 2007, даны отрицательные результаты изучения эффекта от просмотров образовательного видео (подобного Baby Einstein) - 8-16 месячные дети распознают на 6-8 слов меньше (на час просмотра) по сравнению с детьми, которым видео не показывают. Родители часто надеются, что видео или ТВ развивает ребенка (или безвредно занимает его). В действительности,как показывают исследования, у таких телезрителей замедляется развитие языка. Выключи телевизор!