<< Вернуться на главную

Демон Максвелла

Человечество очень давно мечтает изобрести вечный двигатель. Трудно, наверное, найти более притягательную идею (разве что идея полета или бессмертия :-) ) Многие умы отдали этой идее лучшие годы своей жизни. Однако на пути к достижению этой "великой" цели стоят фундаментальные законы физики.

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

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

Если механизм заслонки будет работать правильно :-) то через некоторое время (без) особых затрат энергии) "быстрые" молекулы соберутся в одной половине а "медленные" в другой. А это означает, что одна часть сосуда нагреется, а другая охладится! И теперь из этого можно будет получить энергию (например применив тепловой двигатель Стирлинга).

Такми образом, единственная проблема - это изготовить механизм "правильного" отпирания заслонки :-). Когда физика спросили, а как должен быть устроен этот механизм? Максвелл не моргнув глазом предложил поручить открывать заслонку мифическому демону :-). Вот этого-то самого демона, которого никто никогда не видел и называют с тех пор "демоном Максвелла".

Поскольку внешний вид этого демона неизвестен, мы дали волю своей фантазии и рискнули предложить вам самим поработать в этом качестве.

Игрушку с ручным управлением можно скачать здесь
За точный внешний вид демона не ручаемся, что поделать "Художник так видит" :-) Конечно в "ручной" версии и скорости молекул снижены, и количество их маловато, но зато и так понятно, что управлять не так-то и просто.

Итак, приступаем собственно к заданию.

Для разных облочек программирования (C++BUIlDER, DELPHI2007, DELPHI5) мы подготовили проекты, в которых демон работает просто по случайному закону. (Кстати сам Максвелл придумал демона в том числе и для того, чтобы показать статистическую природу второго начала термодинамики. Ведь может же так случиться, что вместо демона просто дырка, а молекулы сами "СЛУЧАЙНО" переместятся так как нам надо? :-) ) Так что в принципе, можно никакую программу и не писать, а просто подобрать генератор случайных чисел так, чтобы все получилось как нам надо :-).

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

Размер сосуда 200 на 100 попугаев. Соответственно координаты дырки 100 на 50. Размер дырки приблизительно 3-а попугая (но молекулы с большей скоростью "просачиваются" легче).

УПРАВЛЕНИЕ

Во всех проектах управление демоном производится через функцию ANALIZ, которая должна на основе анализа обстановки вернуть значение 0(закрыт клапан) или 1(открыт). Никакие другие части проекта менять не рекомендуется!

КОНТРОЛЬ

Анализ необходимо производить пользуясь данными, которые вам выдаются в виде готовой структуры:


                 Для паскаля
****************************************************************
T_STRUK=RECORD
     KOL_HOD:INTEGER;// количество оставшихся ходов
     KOL1, KOL2: INTEGER;// Количество молекул в левой и правой части сосуда
     T1, T2: SINGLE;  // средние температуры молекул в левой и правой части
     M:PACKED ARRAY[1..1000]OF T_MOL;// массив молекул в сосуде
    END;
Где Т_МОL структура с координатой и скоростью молекулы

// Тип "МОЛЕКУЛА ИДЕАЛЬНОГО ГАЗА"
 T_MOL=PACKED RECORD
       X,Y,         // координаты
       DX,DY:SINGLE;// скорости
      END;

                    для С
****************************************************************
// Структура для анализа параметров в сосуде
struct T_STRUK{
public:
	int KOL_HOD;// количество оставшихся ходов
	int KOL1;
	int KOL2;   // Количество молекул в левой и правой части сосуда
	float T1;
	float T2;   // средние температуры молекул в левой и правой части
	T_MOL M[1000]; // массив молекул в сосуде
} ;
// структура "МОЛЕКУЛА ИДЕАЛЬНОГО ГАЗА"
struct T_MOL{
public:
	float X;
	float Y;   // координаты
	float DX;
	float DY;  // скорости
} ;
//   ВНИМАНИЕ !!! ввиду известных особенностй
// реализации массивов на языке "С", нумерация атомов в массивах "сдвинута"
// от 0 до 999

Например:
Текущие координаты 5-й молекулы будут (на паскале) P.M[5].X и P.M[5].Y
А на С P->M[4].X и P->M[4].Y

А здесь выложены готовые проекты, которые вам нужно будет подправить для достижения наибольшего результата. Учтите, что работать будем на си и паскале из состава CODE GEAR. С другими языками сложнее. ное если сильно надо... пишите
P.S. Результатом считается разность температур (в попугаях). Чем она больше, тем лучше!

Проект для Delphi5(На очном этапе не планируется!)
Проект для Delphi7(CodeGear)
Проект для C++BUILDER(CodeGear)
Проект для Lazarus

Как всегда, конкурс состоится в 2-а этапа. На первом этапе (аж до нового года) все вникаем в проблему, ищем решения, пробуем, задаем любые вопросы. Попутно вылавливаем разные баги (чтобы потом сюрпризов на очном этапе было поменьше). И пишем свои версии программ

Ну а 9-го Января в 11:00 В кабинете 2-27 СЮТа состоится очный этап. Если народу будет слишком много, то участвовать будут только 10 лучших. Для чего необходимо принести готоые программы с заочного этапа.

На очном этапе необходимо будет адаптировать свою программу под слегка измененные условия. Обещаем, что на очном этапе ожидаются сюрпризы! Но я думаю, что для тех, кто напишет программу на заочном этапе и разберется во всем сам, ничего страшного не будет :-).

По результатам очного этапа будут вручены грамоты и призы (какие как всегда до последнего не ясно, но ведь призы не главное :-) ) А главное - звания победителей городского конкурса программистов.....

Желающим принять участие в конкурсе очень желательно зарегистрироваться. Чтобы заранее "застолбить место на очном этапе.
РЕГИСТРАЦИЯ

На сегодня зарегистрировались:

Фамилия имя Среда программирования Особые отметки
Перепелица Семен Delphi 7.0 10кл.
Павленко Кирилл Delphi 7.0 10кл.
Ахмадеев Александр Delphi 10кл.
Климов Алексей Delphi 9кл.
Мордовин Дмитрий Lazarus 10кл.
Смирнов Роман С++ 11кл.
Печеницин Алексей Lazarus 9кл.

По всем вопросам обращайтесь к администрации "звездного мира" через систему

Вопрос-ответ.

или по почте