Comments 15
Зачем первоначальная обработка графика? Выравнивание осей ещё можно понять, если дигитайзер не умеет с произвольными осями рабртать, но зачем всякие там контрасты? Всё равно же сами руками точки ставите.
По работе использую для подобного встроенный инструмент в OriginLab Origin. Там точно можно ничего не выравнивать
По работе использую для подобного встроенный инструмент в OriginLab Origin. Там точно можно ничего не выравнивать
В принципе без разницы выравнены ли оси, процесс установки системы координат будет тем же. Приведение изображения к полноценному визуальному контрасту и повышение резкости позволяет более быстро и точно позиционировать курсор при расстановке точек и улучшает работу автоматического алгоритма трассировки кривой.
Где там автоматическая трассировка? Просто набор точек, которые ставит пользователь
Пользуюсь инструментом WebPlotDigitizer. Большинство графиков оцифровывается в автоматическом режиме с предварительным грубым указанием области кривой. Кроме того, с аппроксимацией полиномом хорошо справляется инструмент «Линия тренда», встроенный в Excel.
По поводу того, как у нас на работе…
Искали на работе инструмент для «оцифровки» и формулизации графиков-номограмм. Графики всякие, далеко не с одной кривой. Часто нужно найти значение по какому-то промежуточному коэффициенту, для которого нет кривой на графике. Пробовали Excel, но там основная проблема — именно «снять» значения с графиков. Придумал инструмент на leaflet+leaflet.editor:
Так оцифровываю:
После такой «оцифровки» в полях ввода задаю уже промежуточные значения и получаю конечные результаты в пределах графика:
Оцифровка заказчику понравилась, но работа не пошла, т.к. он очень хотел формулы, которые мы должны были наоборот получить от него (всё-таки мы программисты, а не математики). Да и WolframAplha сильно врал:
Как итог — все промежуточные точки и промежуточные коэффициенты удалось снять с любого графика с очень высоким приближением, а вот с формулизацией — беда (хотя по-моему вне пределов графика вообще не может быть точных значений, т.к. данные имперические и экстраполяция как-то не может сильно работать). Ну и я не очень понял — WolframAlpha сильно хуже считает, чем Wolfram или Wolfram будет так же врать?
Искали на работе инструмент для «оцифровки» и формулизации графиков-номограмм. Графики всякие, далеко не с одной кривой. Часто нужно найти значение по какому-то промежуточному коэффициенту, для которого нет кривой на графике. Пробовали Excel, но там основная проблема — именно «снять» значения с графиков. Придумал инструмент на leaflet+leaflet.editor:
Так оцифровываю:
После такой «оцифровки» в полях ввода задаю уже промежуточные значения и получаю конечные результаты в пределах графика:
Оцифровка заказчику понравилась, но работа не пошла, т.к. он очень хотел формулы, которые мы должны были наоборот получить от него (всё-таки мы программисты, а не математики). Да и WolframAplha сильно врал:
Как итог — все промежуточные точки и промежуточные коэффициенты удалось снять с любого графика с очень высоким приближением, а вот с формулизацией — беда (хотя по-моему вне пределов графика вообще не может быть точных значений, т.к. данные имперические и экстраполяция как-то не может сильно работать). Ну и я не очень понял — WolframAlpha сильно хуже считает, чем Wolfram или Wolfram будет так же врать?
Ну и я не очень понял — WolframAlpha сильно хуже считает, чем Wolfram или Wolfram будет так же врать?WolframAlpha это ИИ для быстрого распознавания запроса на естественном языке и генерирования структурированного ответа. Аппроксимируя ваши данные он взял несколько самых часто используемых моделей, коэффициенты R^2 получились близки к единице, значит вычисленная функция описывает большую часть вариации.
В Wolfram Mathematica возможно проводить аппроксимацию по любой заданной модели c любой заданной точностью. По вашим данным мне за 5 минут удалось подобрать модель полностью их описывающую.
Пример 1
Если WolframAlpha указать модель, то она вполне качественно подберет модель.
Пример 2
Спасибо за совет. Но по графику от Aplha видно, что она внизу графика существенно привирает. Ваше решение на самом Wolfram мне понравилось больше. Не посоветуете ли почитать что-то по аппроксимации в Wolfram? Я в Wolfram не силён, а пока нужен только раздел аппроксимации (может даже осилю и ссылку на матраздел с погрешностями, но лучше с привязкой к Wolfram). Если только я не прошу слишком много )))
Просто хочу помочь сотрудникам, которые в программировании не очень, а вот Wolfram, думаю, освоили бы ради этого на раз-два.
Просто хочу помочь сотрудникам, которые в программировании не очень, а вот Wolfram, думаю, освоили бы ради этого на раз-два.
Вся документация по Mathematica находится открытом доступе.
Curve Fitting & Approximate Functions
Statistical Model Analysis
Approximate Functions and Interpolation
Если нужна теория то её можно найти на портале MathWorld.
Curve Fitting & Approximate Functions
Statistical Model Analysis
Approximate Functions and Interpolation
Если нужна теория то её можно найти на портале MathWorld.
Пользуюсь инструментом WebPlotDigitizer.
Спасибо за наводку, посмотрю на досуге.
с аппроксимацией полиномом хорошо справляется инструмент «Линия тренда», встроенный в Excel
Инструмент «Линия тренда» иногда выдает коэффициенты аппроксимационного полиномома с очень низкой точностью (1-2 значашие цифры), максимальная степень полинома ограниченна 6й степенью, нет возможности задавать требуемую модель для подгонки.
Wolfram Mathematica позволяет проводить аппроксимацию по любой заданной модели c любой заданной точностью. Вот пример выполнения аппроксимации периодичной неизвестной функции.
Пример
Сам не пробовал, но мне кажется интересный open-source проект markummitchell.github.io/engauge-digitizer
Блин, разочаровашка… Я думал будет полный цикл на Wolfram, а оказалось что нет.
Недавно использовал interpolation, чтобы для заданной функции узнать промежуточные значение и, имея две колонки данных f(t) и g(t) разной длинны, построить g(f). Вышло хорошо, кроме крайних точек — да они особо и не нужны были.
К сожалению «полный цикл» в Wolfram Mathematica не возможен, однако обработку изображения в ней можно спокойно выполнить.
Использование функции функции Interpolation для аппроксимации нежелательно, т.к. в ней используются полиномы больших порядков, в следствие чего часто возникает большое количество осцилляций между исходными точками.
Использование функции функции Interpolation для аппроксимации нежелательно, т.к. в ней используются полиномы больших порядков, в следствие чего часто возникает большое количество осцилляций между исходными точками.
Sign up to leave a comment.
Оцифровка и аппроксимация графиков функций при помощи Wolfram Mathematica и Graph Digitizer