вв. Отчет по лабораторной работе 3 по дисциплине Конструирование программ Тема Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона
Скачать 71.73 Kb.
|
МИНОБРНАУКИ РОССИИ Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) Кафедра Информационные системы отчет по лабораторной работе №3 по дисциплине «Конструирование программ» Тема: Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона.
Санкт-Петербург 2019 Цель работы. Научиться находить приближенное значение функции при данном значении аргумента с помощью интерполяционного многочлена Ньютона. Основные теоретические сведения. Интерполяционный многочлен Ньютона является другой формой записи единого интерполяционного многочлена. Применение многочлена Ньютона имеет практические преимущества по сравнению с формулой Лагранжа и в случае неравноотстоящих, и особенно в случае равноотстоящих узлов. Интерполяционные многочлены Ньютона нужных степеней строятся по формулам (2.7.1) или (2.10.1) и (2.10.2). Если интерполируемая функция задана на таблице с постоянным шагом , то можно использовать связь между конечными и разделенными разностями: В этом случае многочлен Ньютона можно записать несколько в ином виде: Пусть Преобразуем разделенные разности в конечные: тогда и так далее. Тогда многочлен Ньютона можно переписать в следующем виде: (2.10.1) Эту формулу называют интерполяционным многочленом Ньютона с конечными разностями для интерполяции вперед. В ней используются только конечные разности, расположенные в верхней косой строке таблицы конечных разностей. Если использовать разности нижней косой строки, то аналогично получим многочлен Ньютона с конечными разностями для интерполяции назад: (2.10.2) Экспериментальные данные 7 вариант: Обработка результатов Задание № 1 Построить интерполяционный многочлен Ньютона по не равноотстоящий сетке узлов и найти приближенное значение интерполируемой функции при значении аргумента.
Задание № 2 Вычислить приближенное значение функции по интерполяционной формуле Нью-тона для интерполяции вперед или назад
Вывод: Программа была выполнена C++. В данной лабортаорной работе были получены навыки по работе с Интерполяционным многочленом Ньютона и его приближенным значением в точке интерполяцией вперед. Приложение 1 Листнинг #include "pch.h" #include using namespace std; const int n = 10; const int n1 = 8; double Newton_f(double t, double x[n], double y[n]) { double res = y[0], F, den; int i, j, k; for (i = 1; i F = 0; for (j = 0; j <= i; j++) {//следующее слагаемое полинома den = 1; //считаем знаменатель разделенной разности for (k = 0; k <= i; k++) { if (k != j) den *= (x[j] - x[k]); } //считаем разделенную разность F += y[j] / den; } //домножаем разделенную разность на скобки (x-x[0])...(x-x[i-1]) for (k = 0; k res += F;//полином } return res; } double Newton_f1(double t, double x[n1], double y[n1]); int main() { setlocale(0, ""); double X = 1.369; double w[10]; w[0] = 1.360; w[1] = 1.350; w[2] = 1.355; w[3] = 1.365; w[4] = 1.370; w[5] = 1.375; w[6] = 1.380; w[7] = 1.385; w[8] = 1.390; w[9] = 1.395; double o[10]; o[0] = 4.4552; o[1] = 4.2556; o[2] = 4.3533; o[3] = 4.5618; o[4] = 4.6734; o[5] = 4.7904; o[6] = 4.9131; o[7] = 5.0419; o[8] = 5.1778; o[9] = 5.3202; double res; res = Newton_f(X, w, o); cout << round(res * 1000) / 1000; system("pause"); X = 4.110; double w1[8]; w1[0] = 5.60; w1[1] = 3.50; w1[2] = 4.55; w1[3] = 6.20; w1[4] = 7.75; w1[5] = 8.80; w1[6] = 9.45; w1[7] = 10.95; double o1[8]; o1[0] = 36.5982; o1[1] = 33.1154; o1[2] = 34.8133; o1[3] = 38.4747; o1[4] = 40.4473; o1[5] = 42.5211; o1[6] = 44.7012; o1[7] = 46.9931; res = Newton_f1(X, w1, o1); cout << round(res * 1000) / 1000; system("pause"); return 0; } double Newton_f1(double t, double x[n1], double y[n1]) { double res = y[0], F, den; int i, j, k; for (i = 1; i F = 0; for (j = 0; j <= i; j++) { den = 1; for (k = 0; k <= i; k++) { if (k != j) den *= (x[j] - x[k]); } F += y[j] / den; } for (k = 0; k res += F; } return res; } |