Кусочно-линейная интерполяция в MathCAD
Для восстановления зависимости по известным точкам на плоскости иногда решения со степенными функциями (вроде полинома Ньютона) не нужны или трудоёмки, а удобнее всего простая кусочно-линейная интерполяция, то есть, построение ломаной, последовательно проходящей через все точки.
Реализуем данный расчёт в MathCAD, задав абсциссы и ординаты известных точек векторами X
и Y
соответственно. Предположим при этом, что одинаковых значений среди Xi
нет, и они уже упорядочены по возрастанию. Если это не так, добавьте решение из этой записи блога.
Подпрограмма PieceLinear
по заданным векторам значений X
и Y
вычисляет значение кусочно-линейной функции в точке x
малое. Учитывается, что x
может совпасть с одним из узлов или оказаться меньше (больше) диапазона известных значений X
.
Кусочно-линейная интерполяция в точке
Вторая подпрограмма, используя первую, строит таблицу значений кусочно-линейной функции в заданных пределах изменения x
с заданным шагом. На выходе подпрограммы - матрица, в первом столбце которой записаны значения x
, а во втором y
.
Таблица значений кусочно-линейной функции
По этим данным можно, например, построить график, добавить на него исходные точки и убедиться, что всё "линеаризовано" верно.
График векторов исходных данных и построенной кусочно-линейной функции
Скачать в формате .XMCD пример: Кусочно-линейная интерполяция в MathCAD (50 Кб)
P.S. Если нужен "не алгоритм, а только результат", обратите внимание на стандартную функцию linterp
, аппроксимирующую данные векторов х
и у
кусочно-линейной зависимостью.
24.09.2013, 14:04 [18106 просмотров]