суббота, 19 ноября 2011 г.

Табличные страсти

На днях Александр Бауск подкинул задачку. Я надеюсь он о ней, еще напишет более подробно, я же в кратце расскажу о своем видении ситуации. Если грубо, то задача состоит в обработке таблично заданных функций (сложение, построение огибающих, «сдвиг» и пр.). Казалось бы что проще, раз табличные данные то прямая дорога в MS Excel, OO Calc, или любой иной табличный процессор. Вот только проблема в том, что данные идут несостыкованным шагом. И вот тут оказывается, что в чистом виде, напрямую задачу так просто решить не удастся.
Одним из наиболее подходящих методов является написание собственной программы или скрипта, который либо сам, либо при взаимодействии с другими программами выполнит необходимые действия. Собственно, если я правильно понял, то автор задачи именно этим сейчас и занимается, разрабатывая универсальный обработчик с большой красной кнопкой. :)
Что придется сделать? Наиболее простой вариант - привести графики «к общему знаменателю», т.е. чтобы все графики содержали одинаковые точки (по Х). При этом наиболее простым, когда шаг тоже постоянен, но в принципе это не обязательно, достаточно просто булево «сложить» диапазоны чисел и найти для всех графиков недостающие точки. В этом случае нам может помочь интерполяция (тип зависит от задачи).
Где это можно сделать? В MS Excel (или аналога) для этого придется писать скрипт на VBA, либо полноценное приложение, на чем либо другом использующее API. Если Вам проще работать через текстовые файлы, но тут, в принципе, ничего кроме привычной среды программирования Вам и не нужно. При наличии навыков это можно даже в варианте .bat файла сделать, благо функционала там хватает.
Дополнительно можно воспользоваться программой Fityk замечательная программа для работы с большими массивами таблично заданных данных. Например, результатами замеров каких-то экспериментов. Не так давно у нее появилась проблема – последние версии стали стоить денег, хотя раньше была бесплатной. Но! Внимание на текст: последние версии. Если же Вы не гонитесь за новизной, и нет желания/возможности платить деньги, то ее исходники и старые версии все еще доступны в бесплатном режиме. Качать тут. К сожалению, в чистом виде она проблему не решит и под нее придется писать (или искать) скрипт на внутреннем языке. Но плюсом данной программы является скорость ее работы. Может это просто совпало, но когда мне пришлось обрабатывать массивы экспериментальных данных о динамических колебаниях конструкции, с интегрированием ускорений в перемещения, с получением спектра и пр. Данная программа справлялась существенно быстрее аналогичных, написанных на паскале (студентами), MathCAD (куски были содраны с сайта exponenta.ru) и макроса в Excel. Перечень приведен в соответствии со скоростью. Т.е. fityk – просто суперкар, а вот Excel скорее трактор на гусеничном ходу. Может при других задачах расклад будет другой, но fityk с тех пор безвылазно живет на моем ноуте и я все себе обещаю, что с ней и ее программированием я разберусь… Впрочем задачи такой сейчас нет, потому не горит, и откладывается это действие до следующих петухов, клюющих в определенные места.
Раз уж упомянули пакеты компьютерной алгебры, то в них данные задачи тоже можно решать и вполне успешно. В том же Maple это команда spline. Желающие более подробно могут посмотреть, например, тут.  Пункт "23. Сплайн-интерполяция и аппроксимация" В самом низу текста. Я надеюсь нет смысла объяснять, что после того как на базе точек получаются интерполяционные функции с ними можно уже делать все что душеньке придумается.
В других пакетах есть аналогичные варианты, гуглите и Вам зачтется. В принципе, подойдет вообще практически любое мат. ПО, в том числе немного корявая, но бесплатная Maxima (давеча мне тут некоторые преподаватели нашего ВУЗа доказывали, что она круче всех мат пакетов вместе взятых, но ее очень сложно найти, даже кряки нигде не продаются, но это как-нить в другой раз расскажу)
В общем, это были те варианты, что я предложил Александру (были еще более извращенные, но о них позже), но так как везде нужно разбираться, и все равно что-то писать, Александр засел за программирование. Надеюсь, что о результатах его изысканий скоро можно будет почитать.
Это как-бы по задаче вообще, кому интересно - после общих слов про разное отношение к любимому и не любимом софту, переходите к извращениям.

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...
Rambler's Top100