Полином Ньютона для неравноотстоящих узлов в MathCAD
Интерполяционный многочлен Ньютона, записанный для неравноотстоящих узлов, в сущности, является многочленом Лагранжа, представленным в другой форме:
Формула многочлена Ньютона для неравноотстоящих узлов
Смысл такого подхода к расчёту состоит в том, что при добавлении к данным нового узла формула многочлена удлиняется только на 1 слагаемое, так что не приходится все расчёты выполнять заново. Впрочем, если мы реализуем данный расчёт "в лоб", и не вручную, а с помощью MathCAD, то пусть себе считает заново :)
Итак, заданы векторы X
и Y
, содержащие исходные данные - координаты точек {Xi,Yi}
.
Сначала нужно построить матрицу разделённых разностей, её размерность будет на 1 меньше, чем количество точек:
Матрица разделённых разностей для полинома Ньютона
После этого можно написать подпрограмму для вычисления значения полинома Ньютона в точке x
малое (MathCAD, как и C++, соблюдает регистр символов в именах переменных).
Вычисление полинома Ньютона в точке x
Теперь с помощью этой подпрограммы нетрудно посчитать значение полинома в любом количестве нужных точек. Возьмём для примера весь диапазон изменения значений исходного вектора X
большое и пройдём его с шагом, равным 0.01
. Подпрограмма сформирует матрицу, в первом столбце которой будут записаны значения аргумента, а во втором - вычисленные значения полинома.
Вычисление полинома Ньютона на множестве узлов
Осталось нарисовать картинку, в приложенном документе она есть.
Скачать пример в формате .XMCD - полином Ньютона для неравноотстоящих узлов (102 Кб)
04.07.2013, 17:40 [32281 просмотр]