
Кому интересно, предлагаю скачать мою программу и протестировать эту утилиту:
https://chemcraftprog.com/files/Chemcra ... _win64.zip
“Tools/Utilities for working with custom graphs\Graph analyzer”
Моя задача была в том, чтобы утилита получилась максимально удобной и при этом понятной с первого взгляда. Пользователь через Clipboard вводит x и y значения своей функции в текстовом формате, переходит к вкладке графика, далее строит 2 или 4 опорные точки, по которым подсчитывается линия фона, и программа строит эту линию и считает площадь пика как разность между интегралами исходной функции и линии фона.
Если линия фона проводится по двум точкам, то программа линейно их интерполирует, если по четырём, то строится полином 3-й степени.
Отдельный вопрос – как корректно считать интеграл функции, заданной в виде таблицы. Можно считать площадь графика, подразумевающего линейную интерполяцию между соседними точками, а можно просто принять что каждая точка – это цилиндр с толщиной, равной размеру шага по X:

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