Утилита для подсчёта площади пика

здесь можно обсудить кошечек и ёжиков
Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Вт фев 22, 2022 6:30 pm

В некоторых задачах имеется график какой-то функции и требуется подсчитать площадь пика на этом графике. Наверно это есть в последних Excel/Origin, но я предполагаю, что не все химики имеют эти последние версии; кроме того, эти утилиты могут быть не очень удобными или недостаточно интуитивно-понятными. Поэтому я решил сделать такую утилиту в своей программе Chemcraft:

Изображение

Кому интересно, предлагаю скачать мою программу и протестировать эту утилиту:

https://chemcraftprog.com/files/Chemcra ... _win64.zip

“Tools/Utilities for working with custom graphs\Graph analyzer”

Моя задача была в том, чтобы утилита получилась максимально удобной и при этом понятной с первого взгляда. Пользователь через Clipboard вводит x и y значения своей функции в текстовом формате, переходит к вкладке графика, далее строит 2 или 4 опорные точки, по которым подсчитывается линия фона, и программа строит эту линию и считает площадь пика как разность между интегралами исходной функции и линии фона.
Если линия фона проводится по двум точкам, то программа линейно их интерполирует, если по четырём, то строится полином 3-й степени.
Отдельный вопрос – как корректно считать интеграл функции, заданной в виде таблицы. Можно считать площадь графика, подразумевающего линейную интерполяцию между соседними точками, а можно просто принять что каждая точка – это цилиндр с толщиной, равной размеру шага по X:

Изображение

На первый взгляд кажется, что первый способ точнее, но при линейной интерполяции полученный интеграл будет всегда занижать площади пиков, т.к. линейная интерполяция всегда “проваливается” сквозь гладкие пики. Вроде со вторым методом подсчёта этой систематической ошибки не будет? В любом случае это не очень принципиально, т.к. моя программа сглаживает функцию: каждый интервал между соседними точками разбивается на 20 меньших интервалов, и в них проводится интерполяция сплайном. Но мне хотелось бы узнать, какой подход методически корректнее.
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

Sartorius84
Сообщения: 1160
Зарегистрирован: Ср фев 26, 2014 11:22 am

Re: Утилита для подсчёта площади пика

Сообщение Sartorius84 » Вт фев 22, 2022 8:40 pm

1) Много знаков после запятой в текстбоксах
2) Без возможность выбирать точки на графике мышкой не оч удобно
3) Численное интегрирование и через трапеции и через прямоугольники дает погрешность второго порядка, но в два раза меньше для случая прямоугольников http://www.machinelearning.ru/wiki/inde ... и_трапеций
Методы прямоугольников и трапеций являются одними из простейших методов интегрирования (запрограммировать их не составляет особого труда). Но эти методы имеют лишь второй порядок точности,в то время как есть методы более высоких порядков.
Если же сравнивать эти два метода между собой, то метод прямоугольников, который относится к методам Гаусса - Кристоффеля, является точнее метода трапеций, относящегося к методам Ньютона - Котеса. Но в то же время метод трапеций может применяться с произвольным шагом, в отличие от метода прямоугольников, который, как мы увидели, не применим, например, к функциям,заданным в конечном числе точек.
Интегрерование сплайнов в общем случае дает меньшую ошибку

chemigor
Сообщения: 704
Зарегистрирован: Вс июн 21, 2015 5:29 pm
Контактная информация:

Re: Утилита для подсчёта площади пика

Сообщение chemigor » Ср фев 23, 2022 12:35 am

Sartorius84 писал(а):
Вт фев 22, 2022 8:40 pm
Интегрирование сплайнов в общем случае дает меньшую ошибку
обычно да, но есть свои подводные камни. На функциях с "пиками" как у ТС, сплайны будут давать осцилляцию по краям, если точки сплайна расставлены абы как. Это может сильно отпугнуть пользователя, а в плохих случаях и результаты испортить. Я когда-то интегрировал пики для хроматограмм и как раз от сплайнов отказался, ибо просто застрелиться не угадаешь как выбрать интерполяцию.

Обычно пики - это что-то типа Гаусса или Лоренца, поэтому ими же и аппроксимировать + не забыть о том, что базовая линия - линейная функция. Вот тут как раз по трем точкам - самое то вписывать, да и интегрировать потом просто. По крайней мере ЯМРные и обычные ВЭЖХшные пики так очень хорошо интегрируются.

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 10:03 am

Vit Nhoc писал(а):
Вт фев 22, 2022 6:30 pm
В некоторых задачах имеется график какой-то функции и требуется подсчитать площадь пика на этом графике.
Вы меня извините, может, я не совсем по теме функций, но все же по математической теме.
А Вы - специалист. Могли бы Вы посоветовать вот в этом вопросе?
В Excel я построила кривую титрации и мне надо найти координаты точки на рисунке -
это середина отрезка между прямыми. Можно ли это сделать без линейки?
Спасибо заранее!
У вас нет необходимых прав для просмотра вложений в этом сообщении.

vmu
Сообщения: 256
Зарегистрирован: Ср июн 06, 2012 6:31 pm

Re: Утилита для подсчёта площади пика

Сообщение vmu » Ср фев 23, 2022 11:12 am

kika писал(а):
Ср фев 23, 2022 10:03 am
В Excel я построила кривую титрации и мне надо найти координаты точки на рисунке -
это середина отрезка между прямыми. Можно ли это сделать без линейки?
С чего вы взяли, что вам нужна эта (плохо определенная) точка? Постройте кривую титрования в координатах ΔpH/ΔV от V. Максимум в районе 2,5 мл в этих координатах соответствует точке перегиба в исходных координатах, т.е. точке эквивалентности.

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 11:41 am

vmu писал(а):
Ср фев 23, 2022 11:12 am
С чего вы взяли, что вам нужна эта (плохо определенная) точка? Постройте кривую титрования в координатах ΔpH/ΔV от V. Максимум в районе 2,5 мл в этих координатах соответствует точке перегиба в исходных координатах, т.е. точке эквивалентности.
Эта самая точка мне давно помогает, только нахожу я ее вручную.
Когда-то давно chemist посоветовал очень удобную программку, в которую надо было ввети все точки
и чудесно все само посчиталось. Но ситуация изменилась, такую чудо-программку уже нельзя иметь.
Строить самой кривую титрования ΔpH/ΔV от V как-то силенок и времени не хватает.
А все потенциалы использования Excel не знаю.

Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Ср фев 23, 2022 11:43 am

kika писал(а):
Ср фев 23, 2022 10:03 am
Вы меня извините, может, я не совсем по теме функций, но все же по математической теме.
А Вы - специалист. Могли бы Вы посоветовать вот в этом вопросе?
В Excel я построила кривую титрации и мне надо найти координаты точки на рисунке -
это середина отрезка между прямыми. Можно ли это сделать без линейки?
Спасибо заранее!
Честно говоря я не разбираюсь в Excel, привык к Origin-у. Когда мне нужно найти точку на графике, я нажимаю кнопку с крестиком в верхней-правой панели, далее тыкаю на точку на графике (чем выше нужна точность, тем больше можно сделать масштаб этого участка графика). В Chemcraft аналогично можно просто подвести мышь к точке на графике и внизу будут отображены координаты точки, где находится мышь.
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Ср фев 23, 2022 11:45 am

Sartorius84 писал(а):
Вт фев 22, 2022 8:40 pm
1) Много знаков после запятой в текстбоксах
Даже не знаю как тут правильнее: с одной стороны, много лишних знаков смотрятся некрасиво, но с другой стороны вдруг пользователь будет вводить нанометры в метрах?
2) Без возможность выбирать точки на графике мышкой не оч удобно
Что значит "выбирать точки на графике"? У меня можно просто подвести мышку в любой участок графика и программа автоматически показывает координаты.
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Ср фев 23, 2022 11:50 am

Sartorius84 писал(а):
Вт фев 22, 2022 8:40 pm
3) Численное интегрирование и через трапеции и через прямоугольники дает погрешность второго порядка, но в два раза меньше для случая прямоугольников http://www.machinelearning.ru/wiki/inde ... и_трапеций
Посмотрел по ссылке - вроде то, что я изобразил на рисунке в первом сообщении, и есть метод трапеций (верхняя часть рисунка) и метод прямоугольников (нижняя часть рисунка)?
Предположим есть три точки: x1,x2,x3,y1,y2,y3. Расстояние между ними одинаковое - d. Тогда я просто суммирую d*y1+d*y2+d*y3 - это и будет интеграл по методу прямоугольников?
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

vmu
Сообщения: 256
Зарегистрирован: Ср июн 06, 2012 6:31 pm

Re: Утилита для подсчёта площади пика

Сообщение vmu » Ср фев 23, 2022 12:03 pm

Прямоугольники, трапеции... Для нормальной точности интегрирования нужно нормальное число точек на пик, а не каких-то 8 точек.

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 12:39 pm

Vit Nhoc писал(а):
Ср фев 23, 2022 11:43 am
Честно говоря я не разбираюсь в Excel, привык к Origin-у. Когда мне нужно найти точку на графике, я нажимаю кнопку с крестиком в верхней-правой панели, далее тыкаю на точку на графике (чем выше нужна точность, тем больше можно сделать масштаб этого участка графика). В Chemcraft аналогично можно просто подвести мышь к точке на графике и внизу будут отображены координаты точки, где находится мышь.
Как интересно! :up: Спасибо за информацию!
А не подскажите, если on-line версии Origin или Chemcraft?

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 2:56 pm

Commander L писал(а):
Ср фев 23, 2022 1:50 pm
Вам говорят не о том, чтобы подвести курсор к точке и узнать его координаты, а о том, чтобы, ткнув курсором в начале и конце интересующего участка, выделить его и найти площадь. Как во всех прогах по разметке хроматограмм.
Нет-нет, Vit Nhoc меня правильно понял!
Мне нужны именно координаты точки, т.е. значения X и Y.

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 2:59 pm

Commander L писал(а):
Ср фев 23, 2022 1:50 pm
Так стройте ее в Экселе. В двух столбцах будут значения рН и V, в третьем - формула.
Зачем мне формула, мне нужна только точка. :)

Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Ср фев 23, 2022 6:15 pm

kika писал(а):
Ср фев 23, 2022 12:39 pm
А не подскажите, если on-line версии Origin или Chemcraft?
Chemcraft вы можете скачать по ссылке в начале темы, триальную версию можно использовать в течении 5 месяцев. Бесплатные версии Origin безусловно есть в интернете, но я давно не интересовался этим вопросом.
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 8:58 pm

Vit Nhoc писал(а):
Ср фев 23, 2022 6:15 pm
Chemcraft вы можете скачать по ссылке в начале темы, триальную версию можно использовать в течении 5 месяцев. Бесплатные версии Origin безусловно есть в интернете, но я давно не интересовался этим вопросом.
Ага! Спасибо большое! Посмотрю.
А почему Origin Вам стал не интересен?

kika
Сообщения: 7516
Зарегистрирован: Ср окт 04, 2006 1:59 pm

Re: Утилита для подсчёта площади пика

Сообщение kika » Ср фев 23, 2022 9:01 pm

Commander L писал(а):
Ср фев 23, 2022 6:57 pm
А Вы где точку-то искать собираетесь? График сначала в любом случае построить надо.
:D А я точку-то как раз и нашла после построения графика в Excel-e.
И все счастье мое вот в эту точку и уперлось. :)
Мне бы ее координату одним взмахом мышки.

Аватара пользователя
Vit Nhoc
Сообщения: 1367
Зарегистрирован: Сб июн 06, 2015 12:28 pm

Re: Утилита для подсчёта площади пика

Сообщение Vit Nhoc » Ср фев 23, 2022 9:16 pm

А почему Origin Вам стал не интересен?
У меня на компьютере есть старая версия, я уже не помню где её добыл, всё устраивает.
"Ты должен сделать добро из зла, потому что больше его сделать не из чего". АБ Стругацкие.

Sartorius84
Сообщения: 1160
Зарегистрирован: Ср фев 26, 2014 11:22 am

Re: Утилита для подсчёта площади пика

Сообщение Sartorius84 » Ср фев 23, 2022 9:21 pm

Вот туториал по точке эквивалентости в Excel
https://www.youtube.com/watch?v=l2Z8gK4adqk

Polychemist
Сообщения: 9726
Зарегистрирован: Вт дек 21, 2004 11:42 am

Re: Утилита для подсчёта площади пика

Сообщение Polychemist » Чт фев 24, 2022 6:47 am

kika писал(а):
Ср фев 23, 2022 10:03 am
В Excel я построила кривую титрации и мне надо найти координаты точки на рисунке -
это середина отрезка между прямыми. Можно ли это сделать без линейки?

Polychemist
Сообщения: 9726
Зарегистрирован: Вт дек 21, 2004 11:42 am

Re: Утилита для подсчёта площади пика

Сообщение Polychemist » Чт фев 24, 2022 7:00 am

PAA - полиакриловая кислота? Очень знакомая кривая...
Как я понимаю, для проведения прямых Вы берёте некие интервалы и на них строите линии тренда. Если так, то можно взять уравнения этих прямых (в виде y=ax+b), посчитать координаты обоих точек пересечения, ну и взять среднее, это и будут координаты середины отрезка. Т.е. надо знать a и b для всех трёх кривых, ну и найти в справочнике/Интернете формулы для вычисления точки пересечения двух кривых. a и b можно найти двумя путями: вывести уравнения линий тренда на экран или покопаться в формулах Excel, там есть прямой вывод этих коэффициентов в ячейки. В последнем варианте можно настроить автоматическое вычисление точки перегиба.
Но, как Вам сказали, есть другой, более корректный способ - дифференцирование кривой титрования. В принципе, это можно делать и в электронной таблице, но скорее всего часто будет получаться кривая с несколькими максимумами из-за случайных ошибок в данных. Более правильно аппроксимировать данные некоей "гладкой" кривой, проходящей не через все точки, а потом дифференцировать эту кривую. Не знаю, что это может. Может может программа автора темы.

Ответить

Вернуться в «лицом к лицу»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 24 гостя