Разработка программы, выполняющей интерполирование методом Ньютона

Контрольная работа - Компьютеры, программирование

Другие контрольные работы по предмету Компьютеры, программирование

Содержание

 

1. Постановка задачи

. Исследование методов решения

.1 Методы интерполяции

.2 Методы нахождения узлов

. Разработка алгоритма

. Исходный код

. Тестирование программы

. Исследование

Выводы

 

 

1. Постановка задачи

 

Сравнить графики заданной функции f(x) (см. рис. 1) и интерполяционных полиномов Pn(x) для n = 2, 6, 14 на интервале при двух вариантах выбора узлов:.Равномерно с шагом .По Чебышеву

Данные: a = 1; b = -1; c = -1; d = 1.

Использовать формулу Ньютона

 

 

Рис. 1. График заданной функции

 

 

2. Исследование методов решения

 

2.1 Методы интерполяции

 

Интерполяция - один из вариантов аппроксимации, иными словами замены исходной функции другой, близкой функцией, удобной для проведения расчетов.

1. Метод Лагранжа

Для построения интерполяционных полиномов Лагранжа используют следующие расчетные формулы, где Ln(x) - полином Лагранжа степени n:

 

 

где уk - значение исходной функции в узле k, k = 0чn;

 

;

 

где - полином степени n;

 

;

 

где xi- узлы, на которых строится интерполяционный полином, i = 0чn.(x) может иметь степень не больше n.

 

 

 

2. Метод Ньютона

Интерполяционная формула Ньютона, используемая в дальнейшем в программе:

 

где

 

N(x) может иметь степень не больше n.

 

2.2 Методы нахождения узлов

 

. С равномерным распределением

Для нахождения узлов с равномерным шагом используется формула:

 

 

где i - номер узла, xi - i-ый узел, с - начальная точка интерполяции, d - конечная точка интерполяции, n -общее количество выбираемых узлов. i от 1 до n+1

2. По Чебышёву

Для нахождения узлов Чебышева используется формула:

 

где i - номер узла, xi - i-ый узел, c - начальная точка интерполяции, d - конечная точка интерполяции, n -общее количество выбираемых узлов.

 

 

3. Разработка алгоритма

 

В данной работе мы будет использовать метод Ньютона.

) Дано:

 

 

) Построение заданной функции посредством matlab

) Формирование массива узлов через равномерный шаг

) Нахождение соответствующих значений функции для узлов

) Расчет значений полинома Ньютона в узлах через равномерный шаг

) Построение графика функции для равномерного шага

) Построение графика погрешности между функцией и полиномом

) Формирование массива узлов Чебышева

) Расчет значений функции в узлах Чебышева

) Расчет полинома Ньютона в узлах Чебышева

) Построение графика функции для узлов Чебышева

) Построение графика погрешности между функцией и полиномом

) Вывод полученных графиков на экран

Описание функций программы:

Основные функции и переменные, использованные в реализованной программе:= raznost(x,y) - функция расчета разделённых разностей для полинома Ньютона(x,y,xn) - функция расчета полинома Ньютона

y = ff(x,c,d,a,b) - построение заданной функции- расчет узлов Чебышеваrav - расчет равномерных узлов

ych - значения в узлах Чебышеваav - значения соответствующие равномерным узлам- количество узлов

plot(x,y) - построение графика

subplot(1,2,1) - подграфик номер один(из двух в окне)

* - отмечаем звездочками узлы полинома

pogr = yu1- yravn - погрешность метода равномерных узлов

pogr = yu1-ychn - погрешность метода Чебышева

 

 

4. Исходный код

интерполяционный полином ньютон график

function kursovaya1

a = 1;

b = -1;

c = -1;= 1;% начальные условия

n = 35;% количество узлов= 50;

i = 1:s + 1(i) = c + (i - 1) * (d - c)/s ;% z(i) = c + (i - 1) * (d - c)/s;% абсциссы= ff(z, c, d, a, b);% ординаты

for i = 1:n + 1% цикл(i) = c + (d - c) * (i - 1)/n;% 3) узлы посчитанные методом равномерного шага= ff(xrav, c, d, a, b);% 4) значения узлов равномерного шагаk = 1:length(z)(k) = newton(xrav, yrav, z(k));% 5) значения многочлена Ньютона в узлах

end

% 6) график 1(1);(1, 2, 1);% подграфик(z, yu1);

grid on;on;% построение исходной функции

plot(xrav, yrav, -о);on;(Равномерный Ньютон);hold on;

pogr = yu1 - yravn;% погрешность равномерных узлов(1, 2, 2)% подграфик(z, pogr, -о);on;(Погрешность);% 7) погрешность между функцией и полиномом

% 8) переходим к методу Чебышеваi = 1:n + 1(i) = (c + d)/2 + ((d - c)/2) * cos(((2 * i - 1) * pi)/(2 * (n + 1)));% узлы посчитанные методом Чебышева= ff(xch, c, d, a, b);% 9) значения узлов для Чебышева

% 11) график 2(2);(1, 2, 1)%подграфик(z, yu1);on;on;%построение исходной функцииk = 1:length(z)(k) = newton(xch, ych, z(k));% 10) значения многочлена Ньютона в узлах Чебышева

endon; title(Ньютон по Чебышёву);hold on;

pogr = yu1 - ychn;% погрешность метода Чебышева

plot(xch, ych, -о);on;on;(1, 2, 2)% подграфик(z, pogr, -о);

grid on;(Погрешность);% 12) погрешность между функцией и полиномом

% исходная функцияy = ff(x, c, d, a, b)i = 1:length(x);(x(i) >= c)(x(i) = 0)(x(i) <= d)(i) = x(i)^2;;

end;

% разделённые разности для Ньютона

function r = raznost(x, y)= 1;r = 0;i = 1:length(x);j = 1:length(x);i ~= j= p * (1/(x(i) - x(j)));;= r + p * y(i);p = 1;

% НьютонN = newton(x, y, xn)= 0;w = 1;i = 1:length(x);= N + raznost(x(1:i), y(1:i)) * w;= 1;j = 1:i= w * (xn - x(j));

end;

 

 

5. Тестирование программы

 

Проведём отладку и тестирования для следующего количества узлов интерполирования:

n = 1,5,13.

n = 1

 

 

 

n = 5

 

 

 

n = 13

 

 

 

 

Возьмём количество узлов n = 51, чтобы понять, как ведёт себя функция и ее погрешность при больших количествах узлов интерполирования.