?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Entries by category: образование

Как закрыть панель в Blender
nyaload
_winnie
Blender - наиболее популярный свободный и кроссплатформенный редактор для создания 3d-анимации. В добавление к созданию анимации - там есть поддержка монтажа нарендеренного. Сегодня немножко потыкался в его UI. Как ни странно, это единственная программа которую я нашёл, в которой можно редактировать видео для простого монтажа в разных форматах. В других - то .wmv не загружается, то .mov не загружается (и похоже нет ни одной программы, которая могла бы резать видео по key-frames без перекодировки в разных форматах-контейнерах, включая mov, wmv, avi, mkv).

Чтобы закрыть панель в Blender, нужно посмотреть - эта панель часть вертикального или горизонтального стека окон. Если это часть вертикального стека, то нужно зажать кнопкой мыши на треугольник в углу панели, и вести мышку вверх (если горизонтального - то вправо) к следующей панели в стеке, затем обратно на эту же панель.
Если это самое верхняя (правая) панель и следующей панели нет, то нужно модифицировать эту логику - взять предпоследнюю панель с начала стека, зажать треугольник, и вести мышку ввех (вправо), и отпустить в той панели, которую мы хотим закрыть.
В обоих случаях нужно отпустить кнопку мышки в той панели, которую мы хотим закрыть, но отличается то, с какой панели нужно начать.

Если вы не осознали, что тут выше написано - то ничего страшного, я тоже не понял, пока я не посмотрел ролик на ютубе.

На самом деле при закрытии панели - нужно указать не только закрываемую панель, но и то, какую другую панель использовать для оставшейся дырки. Универсальность и точность!


Вопрос на stackexchange, как закрывать панели в blender - http://blender.stackexchange.com/questions/1223/how-to-close-open-a-view-panel
Ролик на ютубе, объясняющий как закрывать панели в blender - https://www.youtube.com/watch?v=AMBi1R7KB48
Человек полгода работающий в blender, спрашивает как закрывать панели - http://blenderartists.org/forum/showthread.php?234374-Closing-Split-Screens

Говорят, что это более удобно, чем то что было в более ранних версиях, <2.6

Видно, не один я был в тупике, как же это делается:


Это не единственная непривычная вещь в интерфейсе. Ещё есть кастомный Open/Save File диалог, в котором нельзя открыть файл по его абсолютному пути (два отдельных текстовых поля для директории и имени файла). И кастомная логика сохранения проекта. Благодаря которой я несколько раз закрыл проект, не сохранив - дефолтная кнопка при закрытии это "да, выйти не сохранив", вместо привычного "выйти и сохранить". Если закрыть по 20-летней привычке Open/Save File диалог крестиком - то закроется текущий проект, а не этот диалог. Если не прочитать внимательно модальный диалог при закрытии Open/Save - то выход будет без сохранения. Это то, об что я стукнулся лбом при освоении самой базовой функциональности и UI блендера.

Видимо, разработчики Блендера совсем не наблюдали, какие проблемы возникают у начинающих, и не считают благим делом сокращение времени обучения.

Современные школьные задачки по физике
nyaload
_winnie
Тяжелый кирпич висит на нитке, под кирпичом привязана вторая такая же нитка.
___
 |
 |
 К
 |
 |

1) За нижнюю нитку резко дернули, какая из двух ниток порвётся?
2) За нижнюю нитку медленно тянут, постепенно увеличивая нагрузку, какая из двух ниток порвётся?
3) Как лучше открывать не-мак ноут, чтобы он не перевернулся? Иллюстрация: http://coub.com/view/3gu1d

arctg(e^x)
nyaload
_winnie
Из любопытства посчитал, какое распределение получится, если взять логарим модуля случайной величины с распределением Коши ( pdf, f(x) = π-1/(1+x2) ). Получил cdf F(x)=(2/π)arctg(ex) (а официальное название - Hyperbolic secant distribution). Исходя из симметрии начального распределения, результат должен тоже быть симметричный относительно точки (x=0,y=1/2).

И действительно: оказалось, функция что функция arctg(ex)-π/4 - нечетная (симметричная относительна начала координат), хоть это и не видно сразу из формулы. WolframAlpha подсказал, что эта функция - это функция Гудермана, только пополам ( gd(x) = 2arctg(ex)-π/2 ), в википедии можно почитать, как она связывает обычную тригонометрию и гиперболическую.

Для меня оказалось неожиданно, что симметричность функции arctg(ex) - видна только со второго взгляда, а не сразу, если бы не симметричность начальной задачи - я бы не заметил это.

Read more...Collapse )

Немного удивлён, что гиперболических тригонометрических функций - не было ни в школе, ни в универе, а они постоянно всплывают, как сегодня.

Ещё, логарифм распределения Парето (Ципфа) - это экспоненциальное распределение (сдвинутое на константу).

Распределение Хи-квадрат и гамма-распределение - это одно и тоже, только гамма-распределение - Хи-квадрат умноженое на константу.

Хи-квадрат(2), т.е. N12+N22 - это экспоненциальное распределение. Что и даёт способ генерации нормального распределения, когда генерируют случайную точку на плоскости, с квадратом радиуса как корень экспоненциальнго распределения (т.е. логарифм равномерного), и равномерно распределённым углом. Декартовы координаты этой точки - будут двумя независимыми случайными величинами с нормальным распределением (
angle = random.uniform(0, 2*pi)
rad = sqrt(-2*log(random.uniform(0, 1))) # 2* - для нормировки stddev, и обработайте логарифм нуля
N1_x = sin(angle)*rad
N2_y = cos(angle)*rad

)
Tags:

сортировка Маляра Шлемиэля
nyaload
_winnie
Я, будучи школьником, 15 лет назад, придумал новый алгоритм сортировки:

for (;;) { 
   найти первую неупорядоченную пару (break, если нет такой). 
   поменять эту пару местами; 
}


Похоже на пузырёк, но не пузырёк.
Tags: ,

I.I.D. Пользователь - это не монетка.
nyaload
_winnie
Клики пользователей по баннеру не являются Независимыми Одинаково Распределёнными Случайными Величинами. И сами пользователи тоже (но уже лучше, чем просто клики).

Во-первых, нет независимости: пользователь вчера и сегодня один и тот же, кликает на анимешные или порнобаннеры так же как и вчера. (Не)кликнув один раз на конкретную рекламу, он не кликнет на неё второй раз. Пользователь из одной страны ведёт себя похожим образом на своих сограждан.

Во-вторых, нет "одинакового распределения". Один пользователь жмет на каждый десятый баннер, второй вообще никогда не кликает.

Следствие: посчитать хоть что-нибудь по формуле из учебника статистики нельзя, например доверительный интервал для CTR по баннеру. Корректность оценки можно проверять только численно, subsampling/crossvalidation. Реальная дисперсия отличается от посчитанной по формуле в единицы раз.

Идентичные пользователи-клоны не влияющие на поведение друг друга? Не, не видел таких.

Матстат.
nyaload
_winnie
Разбираюсь со статистикой. Модераторы ru_learnmaths чо-то спят, поэтому пишу в свой жж.
Прочитал в википедии про "Bayesian inference" и "Frequentist inference", но не очень понял.

Подбросил монету 10 раз. Четыре раза выпал орел. Ищу функцию правдоподобности, те. что при вероятности θ выпадения орла, орел выпадет 4 раза при 10-ти подкидываниях.
Получаю: L(θ|4 орла из 10) = C(10, 4) * θ4 * (1-θ) 10-4 (C(n,k) - биноминальные коэффициенты).
Ищу максимум функции правдоподобности, нахожу максимум в точке θ = 0.4.

1) Значит ли это, что при выпадении орла 4 из 10 ученый должен заключить, что распределение выпадающих сторон монеты - 0.4 для орла и 0.6 для решки? Ведь это вероятней чем 0.5/0.5 при данной выборке.
2) Вероятность выпадения 5000 орлов из 10000 бросков при честной монете - C(10000, 5000) / 0.510000 ≃ 0.008. Значит ли это что правдоподобность нулевой гипотезы "монета честная" меньше 0.05 и должна быть отброшена?
3) Как априори оценить вероятность встречи с динозавром на улице? 50/50, либо встречу, либо не встречу? А как оценить вероятность того, что передо мной - нечестная монета со смещенными вероятностями?

4) Где бы взять хороший практический учебник по статистке? А то при попытке читать определения из википедии или старые университетские лекции с теорией - возникают глупые вопросы как выше, при попытке применить их к тривиальным задачам.
Tags:

Частные производные. ∂xy
nyaload
_winnie
В школе привык писать производные как (f'x'x) или без штрихов ( fxx )
А в университете - везде используются используется запись ( ∂2f/∂x2 ).
Обратил внимание, что если в статье используется первая "школьная" запись - то она более практичная, в приложении можно найти работающий код. А если вторая - то вероятней заумное теоретическое исследование с непонятным результатам "нууу, можно двигаться в эту сторону", изредка с неадекватным бенчмарком.

Только ли у меня такое внутреннее сопротивление записи через дробь - что она неудобна для записи рукой на доске мелом или на бумажке карандашом или ручном наборе LATEX, хуже воспринимается на глаз при чтении при печати?

Что легче прочитать и запомнить в ночь перед сессией? Написать на доске? Набрать в LATEX или HTML без спец-программ? А что лучше использовать для пугания непосвященных демотиватором "учи матан"?


У меня такое ощущение, что запись через дробь - это выписывание каждый раз какой-то очень милой преподавателям абстракции или определения, но которая даётся студентам шаблоном "как есть" без объяснения. Её смысл понимает наверное только преподаватель истории математики. Зачем каждый раз выписывать определение производной через приращения (или что означает эта запись)? В этом шаблоне - как-то слишком много постоянных кривулек по сравнению с настраиваемыми (функция и переменные производной). Java-style какой-то.

Единственное преимущество - разгружается смысл нижнего индекса, который используется под разные цели и смысл зависит от контекста.

Сегодня обнаружил ещё одну запись, которая свободна от этого недостатка (и позволяет писать оператор отдельно): xy или Dxy


upd: http://en.wikipedia.org/wiki/Notation_for_differentiation (запись через дробь df/dx - Лейбниц, штрихи f' - Лагранж, с точкой у физиков - Ньютон, Dxyf - Эйлер, переменные снизу fxy - безымянная нотация из анализа, ∂xy - похожа на нотацию Эйлера, тоже безымянная)

(no subject)
nyaload
_winnie
Туториалы по OCaml на - какой-то писец. Демонстрация фичей, а не обучение :(
Искал что-нибудь по строкам - не нашёл. Пришлось лезть в документацию, что бы понять как сделать тупейшую операцию - определить длину строки.
Нет ли нормального учебника-туториала, разжёвыващий все стороны языка так, что бы можно было применять их на практике? А то после прочтения "у нас есть клёвые списки" я нихрена не понимаю, как хотя бы сделать учебную задачу распечатки содежимого списка (let print_list (l : 'a list) = ???), не говоря уже о практических вопросах. Лезть из-за каждой тупой фигни в список из тысячи функций в pdf - очень раздражает. Всё равно что учить C по справке о стандарных функциях.

Дробные размерности фракталов. Неформальное объяснение на пальцах.
nyaload
_winnie
Можно считать размерность объекта по размерности пространства, в которое оно вложено. Но это скучно и не интересно, даёт только целые размерности.
Хотя вроде бы очевидно, что синусоида по сути своей одномерный объект, но для того, что бы её вместить, прямой мало, и помещается она только на плоскости.

Давайте посчитаем размерность объекта хитрым образом.

Давайте рассмотрим квадрат, отрезок и куб, находящиеся в трёхмерном пространстве.
И попробуем замостить их ма-а-аленькими такими кубиками, с длиной стороны ε и с вершинами в узлах кубической сетки. И мы увидим, что для того, что бы замостить отрезок, надо порядка const/ε кубиков, для того, что бы замостить квадрат - надо const/ε2 кубиков, а для того что бы замостить куб - надо const /ε3 кубиков.

Действительно, ведь скажем на границе большого куба гораздо меньше кубиков, чем в его объеме. Объём куба, пусть скажем, V. И что бы замостить его внутренность кубиками со стороной ε и, значит, объёмом ε3, надо V/ ε3 кубиков.

Для отрезка - видим, что длинный отрезок проведенный в пространстве через сетку из маленьких кубиков, пересекает количество кубиков пропорциональное его длине(строго этот факт доказывать наверное муторно и сложно, так что просто представьте это и попытайтесь понять - действительно ведь, если отрезок в два раза длинней, то он пересечет в два раза больше кубов на своём пути). Вот иллюстрация:



Давайте выцепим D из формулы const/ εD, и научимся через это определять размерность. Если устремить ε к 0, то D выцеплятся так(простые школьные правила работы с логарифмами):

D = log ([const/ εD]/const) =

(ln(const/ εD) - ln(const)) / ln(-ε) =

(ln(const/ εD) / ln(1/ε) - ln(const)) / ln(1/ε)

Замечу, что когда ε, очень маленькое, то 1/ε стремится к бесконечности, а ln(const)) / ln(1/ε) - к нулю. Поэтому выражение (ln(const/ εD) / ln(1/ε) тоже стремится к D, если выкинуть из него этот бесконечно малый ln(const) / ln(1/ε)

Ну, собственно, мы можем теперь получить размерность объекта так:
пусть N(ε) - количество кубиков со стороной ε, которые целиком покрывают наш объект.
Тогда будем считать, что размерность объекта -

D = limε -> +0(ln(N(ε)) / ln(1/ε)) при ε стремящемся к нулю.


Оказывается, что для некоторых объектов эта размерность может быть дробной. Рассмотрим наиболее простой пример - множество Кантора.

Оно определяется так: берётся отрезок. Из него выбрасывается среднюю треть. Получаем два отрезка. Выбрасываем из каждого из них тоже среднюю треть. И так далее, до бесконечности. Все точки, которые при этом процессе не затрагиваются, и составляют канторовское множество.

- -   - -        - -   - -                          - -   - -        - -   - -
---   ---        ---   ---                          ---   ---        ---   ---
---------        ---------                          ---------        ---------
--------------------------                          --------------------------
------------------------------------------------------------------------------



На каждом k -ом шаге остаётся 2k отрезков, каждый длинной 1/3k. Значит, если мы будем покрывать наш отрезок малюсенькими отрезками длинной ε = 1/3 k, то их будет 2k штук. Таким образом, подставляя в нашу формулу определения размерности, мы получаем, что она равна

(ln(N(ε)) / ln(1/ε)) = ln (2k) / ln(1/(1/3k) = k*ln(2) / (k*ln(3) = log32.
То есть, размерность нашего множества где-то 0.6309. Меньше 1-диницы, но больше нуля.
Tags: