Лабораторная работа № 9
Тема: «Вычисление значения таблично заданной функции с использованием алгоритма интерполирования по Ньютону»
Напомним, что задача интерполирования заключается в построении для табличной функции некоторой приближающей функции , аналитическим выражением которой можно воспользоваться для вычислений значений , когда .
При этом функцию называют интерполяционным многочленом, а точки – узлами интерполяции.
Постановка задачи
Пусть исходная таблица данных, содержащая значение аргумента и соответствующие им значения функции , получена в результате реализации некоторого численного алгоритма и размещена в текстовом файле фиксированного формата, например:
.
(Фрагмент таблицы данных)
Шаг изменения аргумента для данной таблицы является величиной постоянной.
Необходимо построить алгоритм и отладить программу, позволяющую в диалоговом режиме выполнения консольного приложения вычислять значения функции для задаваемых пользователем значений аргумента .
В качестве интерполяционного многочлена необходимо использовать первую и вторую интерполяционные формулы Ньютона, построенные для конечных разностей 6-го порядка, т.е. :
, (9.1)
. (9.2)
Выбор одной из двух представленных выше формул для конкретного вычисления должен базироваться на следующих рассуждениях. Заданное пользователем значение аргумента обязательно должно удовлетворять условию . Следовательно, всегда найдется такая пара соседних узлов интерполирования, для которой будет иметь место двойное неравенство . Если при этом значение индекса окажется меньше чем , то будем применять первую интерполяционную формулу, т.е. (11.1). Если же , то применяем вторую формулу – (11.2), где . Такой подход обеспечит нам максимальную точность вычислений в рамках интерполирования по Ньютону с конечными разностями до 6-го порядка включительно, т.е. для .
Данный алгоритм не является единственно возможным, но для задач обучения вполне приемлем. Реализовав предложенную схему и убедившись в правильности вычислений, Вы можете в дальнейшем разработать свой алгоритм реализации интерполирования по Ньютону.
Поскольку исходные данные, размещенные в текстовом файле, не упорядочены по возрастанию аргумента (как того требует задача интерполирования), Вам предстоит в качестве первого пункта задания разработать алгоритм, состоящий из следующих этапов:
-
определения количества записей (пар чисел ) в файле данных:
-
выделения памяти под массивы аргумента и функции соответствующей размерности;
-
считывания данных из файла в подготовленные массивы;
-
сортировки массивов по возрастанию аргумента, т.е. для любого .
Очевидно, что последний этап не должен изменять сами пары чисел .
Исходные данные размещены в файлах LabTask_09_01.txt – LabTask_09_20.txt, где последние две цифры указывают на номер Вашего варианта.
Эти файлы генерируются уже известной Вам программой NMM_Labs и размещаются в директории (папке), откуда программа NMM_Labs загружается Вами на выполнение.
Для проверки корректности работы Вашего алгоритма Вы можете сгенерировать новую версию файла данных. При этом количество записей в файле будет уже другим (без изменения границ интерполирования и функционального представления интерполируемой функции).