-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathplotNewtonFull.m
65 lines (52 loc) · 2.21 KB
/
plotNewtonFull.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function plotNewtonFull(a, b, n)
% Основная функция, вычисляет коэффициенты полинома Ньютона по каждому из
% методов рассчета и строит сравнительные графики для исходной функции и
% трех полиномов Ньютона, с нанесением узловых точек
% 1 Создаем новое окно для графика и подписываем оси
figure;
xlabel('x');
ylabel('y');
hold on;
grid on;
% 2 Вычисляем коэффициенты полинома Ньютона №1 и узловые точки через базовую
% функцию:
[D1, X] = coefPolyNewtonBase(a, b, n, 1);
%D1
% 3 Печатаем узловые точки:
Y = f(X);
plot (X, Y, 'ro');
% 4 Вычисляем коэффициенты полинома Ньютона №2 через
% вспомогательную функцию:
D2 = coefPolyNewton2(X, Y);
%D2
% 5 Вычисляем коэффициенты полинома Ньютона №3 через
% вспомогательную функцию:
D3 = coefPolyNewton3(X, Y);
%D3
% 6 Печатаем график полинома Ньютона №1:
XX = linspace(a, b, 10000);
LX = XX * 0;
for i = 1:1:length(XX)
LX(i) = pointNewton(D1, X, XX(i));
end
plot(XX, LX, 'b');
% 7 Печатаем график полинома Ньютона №2:
for i = 1:1:length(XX)
LX(i) = pointNewton(D2, X, XX(i));
end
plot(XX, LX, 'g--.');
% 8 Печатаем график полинома Ньютона №3:
for i = 1:1:length(XX)
LX(i) = pointNewton(D3, X, XX(i));
end
plot(XX, LX, 'y-..');
% 9 Печатаем график функции:
Y = f(XX);
plot(XX, Y, 'r--');
% 10 Подписываем легенду
title('Полиномиальная интерполяция', 'FontName', 'Courier');
h1 = legend('Узловые точки', 'Полином Ньютона №1', 'Полином Ньютона №2', 'Полином Ньютона №3', 'Функция');
set(h1, 'FontName', 'Courier');
% 11 Выставляем более-менее приемлемый масштаб:
axis([a b min(Y)-0.2 max(Y)+0.2])
end