вторник, 10 июля 2012 г.

Аппаратная мощность - не всё для скорости работы программы

Люди, далёкие от программирования и вычислительной техники, часто считают, что скорость работы программы полностью определяется аппаратной мощностью вычислительной системы. Не так давно я пытался доказывать, что некоторые задачи нельзя быстро решить просто по тому, что не придумали хорошего алгоритма решения этих задач (я сейчас про класс NP). Однако мне кажется, что я не был убедителен. В искупление этого записал видео, где сравниваются две разных структуры и соответствующие им алгоритмы разработки. Так что если кому-то придётся объяснять нечто подобное можете сослаться на это видео.
Исходный код используемой в видео программы.
Само видео:

Начинайте с простого

Прежде, чем лесть в интернет, искать, почему же не работает микрофон на Ubuntu и в отчаянии думать что всё, все планы сломались, проверьте - включен ли микрофон ;)

воскресенье, 8 июля 2012 г.

Где используются многомерные пространства

Почему-то в середине лета решал дать ответ на этот вопрос.
На самом деле пространства размерности выше 3 используется очень часто и очень много где, просто понятие пространства в математики не сводятся только к бытовому понятию пространства (извиняюсь за тавтологию, но надеюсь понятно). Обычно пытаются по аналогии продолжить: двухмерное это длина и ширина,  трёхмерное - длина, ширина, высота, значит и дальше сохраняется эта схема. Собственно эти рассуждения и приводят в тупик.
Теперь примеры, где используются пространства размерности выше 3:
  • Теория относительности и М-теория
 В специальной теории относительности пространство-время представляется в виде 4-х мерного пространства Минковского, в котором три компоненты пространственные и одна временная. Это пространство можно назвать "плоским" - оно однородно и изотропно (временная компонента только изотропна). В общей теории относительности используется более сложное пространство - пространство Римана. Так же 4-х мерное.Оно уже не является плоским и искривлено как только можно, физически искривление в пространство вносит масса.
В M-теории используют 11 или 12-ти мерные пространства, точно не помню. Собственно это всё, что я знаю об этом.
  • Обобщенные координаты
Это уже более привычная вещь, которую можно представить. Для примера рассмотрим человека. У человека есть лицо, спина, право, лево, верх и низ. И так же пусть он находится в помещении, в котором ввели некоторую декартову прямоугольную систему координат. Чтобы задать положение человека  в этом помещении не достаточно называть его координаты x, y, z, поскольку человек "ориантирован" надо задать ещё углы поворота вокруг этих осей: φ, ψ, θ (обозначения могут разнится, но смысл понятен). Вот уже получили 6-ти мерное пространство, если хоти описать его перемещение во времени, то получаем уже 7-ми мерное.
Обобщенные координаты могут представлять собой любые характеристики описываемого объекта, от цвета до квантового состояния.
  • Функциональный анализ и численные методы
Фактически функциональный анализ и занимается изучением многомерных пространств. Функция с такого представления объект многомерный: её можно раскладывать в ряд по базису (ряды Фурье, Лорана и Тейлора), можно менять базис и так далее. Это нужно для моделирования различных реальных процессов и решения прикладных задач. Однако решать задачи "на бумаге" не всегда удобно. Например систему из миллиона уравнений (а такие встречаются) просто так не решить. И поэтому пользуются численными методами: составляют программу на компьютере, который все эти вычисления проводит. Однако вот беда - память компьютера конечна и он не может хранить полностью вещественные числа и ряды. Вещественные числа хранятся с определённой точностью,а с рядами поступают следующим образом: выбирают проекцию функции на некоторое конечное n-мерное подпространство и работают с ними. Проще говоря - бегут какие-то n слагаемых ряда, а про остальные забывают.

Надеюсь приведенные примеры дали ответ на вопрос, зачем такая абстракция, как n-мерное пространство и где она используется. Список далеко не полный и он составлен только для того, чтобы показать, что пространства высоких размерностей не являются ненужной вещью, как это может показаться с первого взгляда.

среда, 4 июля 2012 г.

FiguresWars - source

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

Немного о начале каникул

Проекты по физике были успешно сданы, в архиве содержаться оба проекта: "Колебания и волны на струне" и "Пружинные маятники".
FiguresWars был сдан в виде курсового, и делать его дальше интерес пока пропал. Потому что следующую стадию работы надо начать с "облагораживания" кода, а то сейчас он вполне сойдёт за индусский код. Если найду какая версия кода последняя может быть даже выложу исходники.
В планах на лето, если пересилю лень и не найду полезное занятие, освоить Haskell и Java, и может быть написать небольшой физический движок. Так же хочется сделать несколько абсурдных обзоров на различные вещи. Посмотрим что из этого получится.