All streams
Search
Write a publication
Pull to refresh
109
0
Василий Баранов @Bas1l

User

Send message
Да, я не совсем точно написал. Но на самом деле, я знаю ответ на свой вопрос (мне кажется). И мне кажется, что у вас в статье есть ошибки. И я как раз и хочу на них указать.

Да, положим, что W—это все варианты, которые удовлетворяют внешним условиям. (Кстати, для начала нужно еще подумать, какие это внешние условия. Не все же из них независимые.) Положим, у нас есть изолированный идеальный газ. Для него мы зададим V и Т (и N, конечно). Давление и внутреннюю энергию U и все остальное можно вывести (через уравнение состояния и т.п.). Газ, конечно, находится в состоянии термодинамического равновесия с окружающей средой, то есть резервуаром (и у него, конечно, такая же температура T). Проблема в том, что контакт со средой означает, что энергия нашего газа U—это средняя внутренняя энергия. А текущая внутренняя энергия E колеблется вокруг средней энергии U (да, система изолирована и макроскопически энергией не обменивается. но она же в тепловом равновесии с резервуаром. то есть отдельные молекулы могут менять энергию из-за столкновения со стенкой, граничащей с резервуаром. иначе как бы мы дошли до состояния термодинамического равновесия?). И мы даже знаем, как текущая внутренняя энергия E колеблется вокруг средней внутренней энергии U: по закону канонического распределения (очень похожего на распределение Максвелла-Больцмана)! Плотность вероятности получить текущую энергию E пропорциональна exp(-E / k T) или равна С*exp(-E / k T) (см. также здесь). А среднее значение U = <E*С*exp(-E / k T)>. Но что это значит? Что система может оказаться в состоянии с любой энергией E. А это значит, что число W ее микросостояний с заданными внешними условиями бесконечно. То есть энтропия S по вашему определению S = k lnW всегда бесконечна. И так будет для любой системы. Это, конечно, проблема.

Но я решу ее за вас! Ошибка в том, что формула S = k lnW—это очень частная формула. В ней W означает число состояний, когда заданы N, V, и совершенно точное значение E. То есть когда нет вообще никакого обмена энергией с окружающей средой, нет окружающей среды, и нет теплового равновесия с ней. Множество всех систем с такими N, V и E называется микроканоническим ансамблем. По-другому, N, V и E задают фазовое пространство систем. И энтропия определяется по формуле S = k lnW для такого фазового пространства, и только для него.

Есть еще канонический и большой канонический ансамбли. В каноническом ансамбле как раз предполагается наличие резервуара, теплового равновесия и определенной температуры, а не энергии. Но формула для энтропии другая: S = — k \sum_i p_i ln (p_i), где p_i—вероятность попасть в определенное микросостояние (с энергией E_i). Эта вероятность как раз и равна С*exp(-E_i / k T). Если энергии непрерывны, то вместо суммы—интеграл, вместо вероятностей—плотность вероятности. Более того, это не определение энтропии, а следствие из определения для микроканонического ансамбля и некоторых рассуждений (например, чтоб работали постулаты термодинамики).

Микроканонический и канонический ансамбли называются еще, как ни странно, NVE и NVT ансамбли.

Теперь можно вернуться к моему вопросу. Теперь мы знаем, что нужно сосредоточиться на NVE ансамбле, а W определена для всего фазового пространства системы, когда заданы N, V и E. И вот это-таки значит, что энтропия системы никогда не будет меняться. Да, в этом пространстве есть состояния, в которых газ находится в одной половине объема. Они тоже включены в энтропию.

А что же тогда с возрастанием энтропии? И вообще, как определить энтропию для одной системы, а не для ансамбля?
Представим, что мы начинаем с состояния (в NVE ансамбле), где газ в одной половине сосуда. И при динамике системы он, конечно, постепенно займет весь сосуд. Мы можем сгруппировать все состояния NVE ансамбля по тому, какой реальный текущий объем Vr занимает газ (через convex hull, к примеру). И для всех Vr посчитать W(N, V, E, Vr). Интеграл этой функции по Vr даст W(N, V, E). И, конечно, число состояний в группе, которая занимает весь объем, будет максимальным и вообще такие состояния будут занимать почти все фазовое пространство при N стремящимся к бесконечности (важно, что тогда и V будет стремиться к бесконечности, если мы хотим сохранить N/V). То есть W(N, V, E, Vr = V) почти равно W(N, V, E). То есть наш газ будет расширяться, Vr будет меняться со временем и расти. Текущая W(N, V, E, Vr), которую мы меряем по фазовому пространству тоже будет расти. И когда Vr дорастет до V, оно там и остановится. То есть газ уже никогда не покинет эту часть фазового пространства. Это и есть смысл возрастания энтропии в микроканоническом ансамбле—для любой дополнительной переменной есть значение, которое доминирует в фазовом пространстве, то есть занимает почти все фазовое пространство. И если вы начинаете с состояния вне этой области, вы всегда дойдете до нее и там и останетесь. (примерно так и написано в википедии). Спонтанное упорядочивание твердых палочек из другого комментария—это другой пример (только параметр—это степень упорядочивания). В принципе, это примерно то, что всегда имеют в виду (и вроде бы, что вы имели в виду в статье и комментариях), но более предметно.

Для NVE ансамбля можно доказать форму основного термодинамического тождества. Разницу между энтропиями для разных Vr можно тогда посчитать через это тождество, представив, что Vr меняется квазистатически от V/2 до V. Это стандартная даже школьная задача.

Это все рассуждения для микроканонического ансамбля. Возрастание энтропии в NVT ансамбле—это похожий, но все-таки другой вопрос. Так же, как и доказательство основного термодинамического тождества.
Мне кажется, это совершенно неверное понимание энтропии. Ошибочное, можно сказать. Энтропия в статистической механике задается через статистический ансамбль систем. Стандартных ансамбля три—микроканонический, канонический и большой канонический ансамбль. Стандартная (и якобы простая) формула S = k lnW, которую привел автор, вообще-то, справедлива только для микроканонического ансамбля, да и то там не все так просто.

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

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

Да, есть информационная энтропия с очень похожим законом и почти таким же смыслом и они сильно связаны. Но чтоб выполнялись постулаты термодинамики, энтропию нужно определять через ансамбль систем, то есть через фазовое пространство. От того, что вы точно узнаете в данный момент все о системе, энтропия статистической механики не поменяется—она не определена через одну систему.

У меня вот такой вопрос. Вся термодинамика, теоретически, должна быть выводима из микроскопических законов поведения систем. Более того, достаточно каких-то очень общих микроскопических характеристик. И многие определения можно давать на микроскопическом уровне. Например, как вы написали, S = k ln(W). Это определение относится ко всему фазовому пространству (то есть W—это количество всех состояний системы вообще. До реакции, после реакции, во время реакции. Всех вообще). Так вот, вопрос: как энтропия вообще может меняться со временем, если она определена через все фазовое пространство? То есть, грубо говоря, через ансамбль систем.
Есть очень хорошая относительно новая статья в Nature Materials. Пдфа вроде в интернетах нету, но на подмогу всегда придет sci-hub.

Статья как раз про то, как поменялись (или должны поменяться) некоторые представления об энтропии в связи некоторыми находками. Например, пишет автор, в 1957 году впервые сделали очень показательное компьютерное моделирование.

Автор, кстати говоря, очень известный ученый. Аж статьи про него на википедии есть. А чтоб два раза не вставать, то качество ученого проверяется легко, надо всего лишь посмотреть на его профиль в google scholar, а в нем на специальный индекс, h-index.
Если такая попытка у автора была, то она более чем оправдана. Потому что призма делает ровно то, что делает статья "A Neural Algorithm of Artistic Style", ни больше, ни меньше. А к этой статье авторы выложили даже исходный код (и, мне кажется, еще несколько энтузиастов повторили этот код независимо следуя за статьей). Вот прошлогоднее обсуждение на реддите, где есть все нужные ссылки. Более того, вслед за этим появилось и несколько сайтов (ссылки лень искать), которые позволяли стилизовать любое свое изображение под другое (тоже задаваемое) изображение. Призма подобрали хорошие изображения со стилем для фильтров, не без этого.
А вот как раз недавно назад в связи с открытиями гравитационных волн появились данные в пользу одного предположения о природе темной материи. Мол, диапазон для параметров черных дыр, который можно оценить по наблюдавшимся на LIGO гравитационным волнам, частично накрывает диапазон параметров для черных дыр, которые моглии появиться на ранних стадиях вселенной (primordial black holes). То есть темная материя—это черные дыры, образовавшихся из вещества на ранних стадиях вселенной—в противоположность тем очень редким черным дырам, которые образуются «сейчас» из звезд. И они вот и слетаются к центрам галактик и кластеров (или, точнее, они все слетаются к друг другу). Вот обсуждения на реддите (раз, два), вот научпоп обсуждение, вот свеженькая научная статья (бесплатная версия).
В комментариях к прошлой статье был хороший пример с чайником. Что естественнее: считать, что (i) мы вскипятили воду в чайнике (то есть поменяли ее состояние) или что (ii) мы разрушили холодную воду и заменили ее горячей? Хотя да, оба процесса будут происходить по событию «включил плиту/чайник», к примеру.
Для нересурсоемких научных расчетов нынче питон, еще matlab и R. Для ресурсоемких—С и С++. Функциональные языки в науке, по моему опыту, не используются никак.
Ну кончечно не влияет на скорость. Остановить поток, пройти по ссылкам со стека до всех объектов, найти неиспользуемые, вызвать деструкторы (со всякими этими freachable—в .Net, по крайней мере), перекомпоновать память, обновить ссылки на перемещенные объекты и т.д. и т.п.
Точнее, я даже не против обучения Лиспу или Хаскелю, если у вас достаточно времени (если вы, к примеру, на бакалавра по ИТ учитесь). Я даже за. Но когда времени мало, то приоритеты, я думаю, можно расставлять по-другому. И вот в надежде на то, чтоб в спорных случаях приоритеты могли расставляться по-другому, я и сделал два перевода с критикой ФП.
Даже если компилятор всегда умеет делать эту оптимизацию (в чем я сомневаюсь), списки по-любому убивают cache locality, то есть вы никогда не закешируете список, в отличие от вектора (хоть данные вектора тоже будут лежать в куче), и это само по себе убьет производительность работы со списком.
Во многих пунктах есть очень релевантные ссылки. Про решето Эратосфена аж научная статья. Именно про квиксорт тоже была ссылка, но она в исходном блоге не работала и я ее не стал вставлять.
Вряд ли такое будет часто, но если вдруг видите, что функционально решение получается слишком сложным — просто перепишите этот кусок в императивном стиле, или тут прям одни Haskell-программисты сидят?
А зачем тогда вообще начинать писать на функциональном языке, если можно сразу начать на императивном и избавиться от всех проблем?
Это был, как ни странно, я, и говорю об этой же истории. Нет, речь идет не об MIT-овском SICP. И дело не в ретроградстве, а в том, что сама программа обучения на 1,5 года, вроде, и вам за полтора года нужно научить людей делать что-то полезное на компьютерах (программировать, то есть), которые этим никогда не занимались. И начинать сразу с императивного языка, мне кажется, намного эффективнее и разумнее. К деградации это не имеет никакого отношения (и к поколению селфи тоже). Есть много других сложных тем, которые, помимо прочего, на мой взгляд, учить еще и полезно, в отличие от Лиспа.
Ну вот это моя вторая подряд (и вообще) статья, «разоблачающая» ФП (первая вот тут)—но никакого заказа тут нет. Просто попались на глаза хорошие и интересные статьи. Мысли автора прошлой статьи показались мне очень близкими и к тому же точными. Текущая статья показалась интересной и глубокой технически. Тут и ссылки на научную литературу и на, действительно, нелепые советы на stackoverflow от «гуру» хаскеля и про то, как в хаскеле алгоритмы на графах реализованы и много еще чего.

Кроме того, как раз тогда, когда на глаза попались эти статьи, я узнал, что в одном университете на специальной программе обучения ИТ для людей с не-ИТ образованием (типа биологов или химиков) обучение начинают с диалекта Лиспа. И лично мне показалось, что это уже слишком и надо что-то с этим делать. Вот, к примеру, как-то компенсировать бесконечный поток предвзятых и, в общем, необоснованных похвал и агитации за функциональные языки.
Ну, мол, зачем параллелить программы? Чтоб они быстро работали. И если ваша однопоточная программа на С работает в 1000 раз быстрее, чем однопоточная функциональная программа, то что толку от того, что вы распараллелите функциональную программу на, не знаю, 240 потоков (на кластере из 30 процессоров, в каждом по 8 ядер, к примеру). Даже если функциональная программа идеально масштабируется (что почти невероятно), все равно это будет в пять раз медленнее императивной программы. То есть легкость масштабирования—это круто, но нужно смотреть на абсолютную производительность, как и пишет автор.
Непонятная формулировка и сумбурное пояснение
О, это я пропустил фразу в заголовке, спасибо. Теперь он вот такой: «Чистое функциональное программирование хорошо для параллелизма в теории, но не очень хорошо с точки зрения производительности на практике, а высокая производительность на практике—единственная настоящая задача параллелизма»

В ФП ряд неприятных проблем, возникающие при параллелизме, исключены как класс. В чем недостаток-то?
Как следует из текста, а теперь и из заголовка, в низкой производительности.
Статья про Хаскель, действительно, 2010 года (но многие примеры актуальны, я проверил). А эта статья буквально пару месяцев назад вышла, то есть очень свежая.
Как раз про это была собственно прошлая статья.
Докторант/doctoral student/PhD student—это по-нашему аспирант, кстати говоря. После этого он станет постдоком, если защитится и останется в науке. Либо еще одну кандидатскую может писать, тоже вариант
Справедливости ради, программировал не я, а автор оригинала, но ваш пример, на мой взгляд, созвучен идее статьи. Чтоб записать простой рецепт, мне нужно разобраться с монадами и с монадой State. Вы серьезно? То есть, получается, в обоих языках нужно будет выучить структуры/алгебраические типы данных (если типов пирога и т.п. под рукой нет). Нужно будет научиться писать или хотя бы использовать методы/функции (разогреть, смешать). Но в ФП еще вот, пожалуйста, теорию категорий, монады, монаду State. Вот в этом, собственно, и проблема (и причина даже описана в статье—ФП оказывается слишком далеко от реальности, от типичных моделей, с которыми работает мозг и от работы машины).

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity