Введение в библиотеки NM DEV –
ПОДБОРКА КРИВЫХ И ИНТЕРПОЛЯЦИЯ

Дискретные наборы данных или таблицы формы обычно используются в технических расчетах. Источником данных могут быть экспериментальные наблюдения или численные расчеты. Существует различие между интерполяцией и подгонкой кривой. При интерполяции мы строим кривую через точки данных. При этом мы делаем неявное предположение, что точки данных точны и различны. Аппроксимация кривой применяется к данным, которые содержат разброс (шум), обычно из-за ошибок измерения. Здесь мы хотим найти гладкую кривую, которая в некотором смысле аппроксимирует данные. Таким образом, кривая не обязательно попадает в точки данных. Разница между интерполяцией и подбором кривой показана на рис. 1.

Рисунок 1. Интерполяция и подбор кривой данных

Основное различие между подбором кривой и интерполяцией заключается в том, проходит ли подобранная кривая через все наблюдаемые точки данных. В случае подгонки кривой стратегия состоит в том, чтобы получить кривую, которая представляет общую тенденцию данных. Подогнанная кривая проходит через набор данных, но не соответствует точно каждой точке данных. Кривая предназначена для наилучшего описания данных в целом. Поскольку он не проходит через все точки, он обычно используется, когда данные имеют существенные присущие им ошибки, например, данные, полученные в результате экспериментальных измерений, где они проходят точно через каждую точку. В противном случае подгонка кривой и интерполяция также неизбежно улавливали бы весь нежелательный шум. Примером может служить линейная регрессия, которая широко используется в статистическом анализе, где собранные данные могут содержать значительные ошибки, включая систематические ошибки и ошибки выборки. Аппроксимацию кривой можно использовать для облегчения визуализации данных, выполнения прогнозов на основе выборочных данных и получения выводов о взаимосвязи между двумя или более переменными. Напротив, интерполяция используется для подбора кривой или серии кривых, которые точно проходят через все точки. Он используется, когда известно, что данные точны, т. е. нет шума. Примером может служить подгонка кривой с нулевым купоном к данным о ставках дисконтирования с разными сроками погашения. Мы часто интерполируем неизвестные ставки дисконтирования для сроков погашения, которые непосредственно не наблюдаются на рынке. Мы интерполируем или оцениваем неизвестные входные данные между двумя известными входными данными, оценивая подогнанную функцию. Другой важный вариант использования — это когда мы хотим представить сложную функцию относительно более простой, часто полиномиальной, чтобы, например, избежать огромных вычислительных затрат. Мы можем использовать интерполяцию, чтобы подобрать кривую более простой функции через точки данных, полученные из исходной, более сложной функции.

1.1 Подгонка кривой методом наименьших квадратов.
Математическая процедура нахождения кривой, наиболее подходящей для заданного набора точек, путем минимизации суммы квадратов смещений (остатков) точек от кривой. Сумма квадратов смещений используется вместо абсолютных значений смещения, поскольку это позволяет рассматривать остатки как непрерывную дифференцируемую величину. Однако, поскольку используются квадраты смещений, посторонние точки могут оказывать непропорциональное влияние на подгонку, свойство, которое может быть или не быть желательным в зависимости от рассматриваемой проблемы. Подробнее читайте здесь.
Например, мы хотим подобрать кривую по следующему набору данных:
Таблица 1. Набор данных по x и y.

Используя нашу математическую формулу наименьших квадратов и рассчитывая обычным способом, подобранная кривая

f(x)= 0.1+0.81x-0.08x^2

Рисунок 2. Аппроксимация параболической кривой

Таблица 2. Подобранные значения ŷ = f(x) и ошибки ε показаны здесь:

Код NM Dev выглядит следующим образом. Сначала мы создаем объект LeastSquares, передавая предполагаемый порядок m полиномиальной функции в качестве параметра. В этом случае m = 2. Затем мы вызываем метод подгонки объекта для набора точек данных, чтобы получить объект UnivariateRealFunction, представляющий подобранную функциональную кривую. Функцию можно использовать для оценки на любом входе.

Результат выглядит следующим образом:

Интерполяция
Интерполяция – это метод построения (поиска) новых точек данных на основе диапазона дискретного набора известных точек данных. В технике и науке у нас часто есть несколько точек данных, полученных путем выборки или экспериментов, которые представляют значения функции для ограниченного числа значений независимой переменной. Часто требуется интерполяция, то есть оценка значения этой функции для неизвестного промежуточного значения независимой переменной. Еще одним важным приложением является аппроксимация сложной функции простой функцией. Предположим, что формула для некоторой заданной функции известна, но слишком сложна для эффективного вычисления. Несколько точек данных из исходной функции можно интерполировать, чтобы получить более простую функцию, которая все еще довольно близка к оригиналу. Полученный в результате выигрыш в простоте может перевесить потери из-за ошибки интерполяции и обеспечить лучшую производительность в процессе вычислений.
Один из самых простых методов — линейная интерполяция. Функция интерполяции представляет собой кусочно-линейную функцию между любыми двумя соседними точками данных. Учитывая набор точек данных (x1, y1), (x2, y2), …, (xn, yn), функция интерполяции выглядит следующим образом:

График на рисунке 3 показывает линейно интерполированную кривую для набора точек данных, сгенерированных с использованием f(x) = sin (x) для диапазона x ∈ [0, 6.3].

Рисунок 3. Линейная интерполяция

Как показано на графике, линейную интерполяцию легко вычислить. Он просто соединяет каждые две соседние точки отрезком прямой линии. Одним из основных недостатков является то, что он может плохо работать при прогнозировании, когда исходные данные далеки от линейных. Например, при x = 2 sin(2) = 0,909297, тогда как значение интерполяции равно 0,880672, что дает ошибку более 3 процентов. Для сравнения, при x = 3, где исходные данные близки к линейным (кривизна или вторая производная f(x) = sin (x) равна f ′′(x) = − sin (x), что оценивается примерно как 0 около x = 3), sin(3) = 0,141120, тогда как значение интерполяции равно 0,139053, что дает ошибку всего 1,5 процента. Рисунок 5-6. Линейная интерполяция Глава 5 Аппроксимация кривой и интерполяция 249 Далее приведен код для воспроизведения предыдущего примера. Сначала мы создаем объект Linear Interpolation; затем вызывается метод подгонки члена для подгонки данных. Возвращается объект UnivariateRealFunction, представляющий кривую интерполяции.

Результат выглядит следующим образом:

Таким образом, мы надеемся, что вам понравилось читать статью, и вы узнали о важности и удобстве использования библиотеки NMDEV для операций подгонки кривых и интерполяции.
Посетите наш веб-сайт http://Nm.dev/ и ознакомьтесь с ним. наш портал S2 http://Nm.dev/s2.

https://nm.dev/wiki/nmdev/packages/basic/interpolation/

https://www.cambridge.org/core/books/abs/matrix-numerical-and-optimization-methods-in-science-and-engineering/data-analysis-curve-fitting-and-interpolation/7DADE8CB7C9D086B615B3079E7EAA56F https ://dl.acm.org/doi/abs/10.1145/321607.321609