Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР6. 3.2. Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона

.docx
Скачиваний:
5
Добавлен:
19.06.2023
Размер:
25.56 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В. И. Ульянова (Ленина)

Кафедра ИС

отчет

по лабораторной работе №6

по дисциплине «Конструирование программ»

Тема: Интерполирование и экстраполирование данных. Интерполяционный многочлен Ньютона.

Студент гр. 93—

Преподаватель

Копыльцов А. В.

Санкт-Петербург

2021

Цель работы.

Научиться применять интерполяционный многочлен Ньютона при нахождении приближенного значения функции при заданном значении аргумента для интерполяции вперёд или назад.

Основные теоретические сведения.

Интерполяционный многочлен Ньютона является другой формой записи единого интерполяционного многочлена. Применение многочлена Ньютона имеет практические преимущества по сравнению с формулой Лагранжа и в случае не равноотстоящих, и особенно в случае равноотстоящих узлов.

Интерполяционные многочлены Ньютона нужных степеней строятся по формулам (2.7.1) или (2.10.1) и (2.10.2).

Если интерполируемая функция задана на таблице с постоянным шагом , то можно использовать связь между конечными и разделёнными разностями: В этом случае многочлен Ньютона можно записать несколько в ином виде:

Пусть

Преобразуем разделённые разности в конечные: тогда

и так далее.

Тогда многочлен Ньютона можно переписать в следующем виде:

Эту формулу называют интерполяционным многочленом Ньютона с конечными разностями для интерполяции вперёд. В ней используются только конечные разности, расположенные в верхней косой строке таблицы конечных разностей. Если использовать разности нижней косой строки, то аналогично получим многочлен Ньютона с конечными разностями для интерполяции назад:

Экспериментальные результаты.

Задание № 2.

Вычислить приближенное значение функции по интерполяционной формуле Ньютона для интерполяции вперёд или назад при значении аргумента .

1.15

66.1659

1.55

63.9989

1.95

61.9658

2.35

60.0551

2.75

58.2558

3.15

56.5583

3.55

54.6807

3.95

52.7220

4.35

50.5229

4.75

48.1091

Обработка результатов эксперимента.

Задание 2

48.54014741811524

Выводы.

Были получены навыки находить приближенное значение интерполируемой функции при значении аргумента для интерполяции вперёд или назад.

Приложение 1. КОд программы

package j.softwareconstruction.lab3; import j.math.types.Fraction; import j.math.types.Polynomial; public class Main { public static void main(String[] args) { task2(); } private static long factorial(int number) { long result = 1; for (int i = 2; i <= number; i++) { result *= i; } return result; } private static void task2() { System.out.println("Задание 2"); final double[] y = {66.1659, 63.9989, 61.9658, 60.0551, 58.2558, 56.5583, 54.6807, 52.7220, 50.5229, 48.1091}; final double[] x = {1.15, 1.55, 1.95, 2.35, 2.75, 3.15, 3.55, 3.95, 4.35, 4.75}; final double xT = 4.680; final int closestIndex = x.length - 1; final boolean up = true; final double h = x[1] - x[0]; final double q = (xT - x[closestIndex]) / h; double f = y[closestIndex]; double[][] dy = new double[5][]; dy[0] = y; for (int i = 1; i < dy.length; i++) { dy[i] = new double[y.length - i]; for (int j = 0; j < dy[i].length; j++) { dy[i][j] = dy[i - 1][j + 1] - dy[i - 1][j]; } double summand = dy[i][up ? closestIndex - i : closestIndex] / factorial(i); for (int j = 0; j < i; j++) { summand *= q + (up ? +j : -j); } f += summand; } System.out.println("\t" + f); } }