ltwood: (Default)
На своей домашней страничке добавил раздел «Разное про прикладную математику» и в нем разместил мою старую заметку (написанную исключительно для внутреннего употребления) «Миф о значимости коэффициента корреляции».

http://ltwood.wikidot.com/appmath:corrmyth
ltwood: (Default)
Давно хотел прикрутить метод Хука-Дживса к одной задаче (это один из лучших методов оптимизации без вычисления производных, он хорошо справляется с т.н. «извилистыми оврагами» — одним из проклятий численной оптимизации). Проблема в том, что исходная статья практически недоступна, в книжках метод часто бывает описан с принципиальными ошибками (я знаю несколько примеров, проверять остальные описания нет ни времени, ни желания). В принципе я знаю как работает метод, даже когда-то реализовывал его, но хочется сделать реализацию, в точности соответствующую исходной статье и вышедшему на несколько лет позже обновлению алгоритма. Решение есть: по адресу http://netlib.org/opt/hooke.c лежит исходник канонической реализации метода, авторам которой я доверяю. Начинаю читать исходник и тут начинаются чудеса.

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

К этому добавляются всякие алгоритмические загадки. Один и тот же цикл прерывается двумя способами — оператором break и с помощью флажка, но во втором случае до прерывания выполняется некий дополнительный код, который выполняется и при обычном исполнении тела цикла. Цикл do-while эмулируется циклом while, причем вокруг этого куча синтаксической грязи и с ходу даже не узнать, что это именно do-while. Пробиваться вперед приходится потом и кровью, постоянно изменяя исходник и запуская реверсивные тесты. Тесты иногда сигнализируют о мнимом сбое из-за изменения порядка вычислений, дающего ошибку в последних битах и тогда приходится проверять вручную. В результате код сокращается вдвое и в голове образуется понимание того, как в действительности работает алгоритм.

Все же низкое качество вычислительного софта поражает воображение. Сколько о нем плохо ни думай, а удивиться все равно придется.
ltwood: (Default)
[Все из той же книжки]

Так что если Вы [...] выберете начальное условие в виде гауссового пакета [...], то он исправно пробежит весь интервал, скроется спава и вынырнет слева. [...] С удовольствием напоминаем, что пакет бежит, расплывается, перебирает своими синусоидальными "лапками" внутри гауссовой огибающей [...].

Экая прелесть!
ltwood: (Default)
При всем разнообразии книг, посвященных численным методам, разумных среди них очень немного. В основном авторы как обезьяны списывают друг у друга описания вычислительных процедур, которые ни один опытный вычислитель в здравом уме применять не будет. Все разумные книжки написаны теми людьми, которые сами что-то считали и имеют собственный опыт численного счета в реальных задачах. А таких очень мало.

Так что сегодня у меня праздник -- я наткнулся на еще одну разумную книжку про вычисления: Ильина В.А., Силаев П.К., Численные методы для физиков-теоретиков. Первое, за что что зацепился взгляд -- такая фраза:

Опыт показывает, что переменными типа float лучше не пользоваться вовсе. Экономия памяти в 2 раза в действительности иллюзорна [...] По скорости мы, как правило, только теряем [...] Между тем, утрата половины значащих цифр очень часто оказывается фатальной [...]

Гады, они выдают профессиональные тайны, полученные потом и кровью! (Я бы сказал даже резче: на практике ни один численный метод не работает в арифметике одинарной точности. За ее использование следует пороть на конюшне удалять из цеха.)

Остальные замечания авторов только подтвердили их профессионализм. Рекомендую!
ltwood: (Default)
Влетел с вещественной арифметикой. Как ребенок. Хрестоматийно. Подробно описано здесь: [http://community.livejournal.com/numpro/5028.html]. В общей сложности потерял полтора часа (включая писание поста в ЖЖ с описанием). Хоть я и всегда осторожно обращался с вещественными числами, но такого эффекта все же не ожидал...
ltwood: (Default)
Создал сообщество [livejournal.com profile] numpro.

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

Фактически же хотелось бы собрать людей, которые (более-менее) профессионально занимаются разработкой программного обеспечения в области хайтека. А то разговоры людей, занимающихся вебом/базами_данных/энтерпрайзом как-то уже сильно утомляют... Хотя есть большая опасность, что прибежит толпа студентов, пишущих свои лабы...

Кому интересно, прошу пропиарить на тех площадках, где может быть заинтересованная публика, не читающая [livejournal.com profile] ru_math и [livejournal.com profile] ru_programming.
Page generated 2017-09-25 04:32
Powered by Dreamwidth Studios