end
*****************************************************
function i_pol = main(n, type)
x_m = razb(n, type);
f = zn_func(x_m);
rr_m = rr(f, x_m, n);
i_pol = pol(rr_m, x_m, n);
*****************************************************
function x = RazbFn(n, type)
xmin = -1;
xmax = 1;
if type == 1
h = (xmax - xmin)/n;
for t = 1: 1: n + 1
x(t) = xmin + h * (t - 1);
end
end
if type == 2
for i = 1: 1: n + 1
x(n + 2 - i) = cos(pi*(2*i - 1)/(2*(n + 1)));
end
end
*****************************************************
function f = zn_func(x)
x1 = -0.5;
x2 = 0.5;
x3 = -1;
x4 = 1;
A = [1 x1 0 abs(x1-x2);1 x2 abs(x2-x1) 0;1 x3 abs(x3-x1) abs(x3-x2);1 x4 abs(x4-x1) abs(x4-x2)];
b = [-1; 1; -1;1];
b = A\b;
f = b(1)+b(2)*x+b(3)*abs(x-x1)+b(4)*abs(x-x2);
*****************************************************
function rr = RR(f, x, n)
mat_rr = zeros(n+1, n+1);
for t = 1: 1: n + 1
mat_rr(t, 1) = f(t);
end
for u = 1: 1: n
for t = 1: 1: n
if t + u <= n + 1
mat_rr(t, u + 1) = (mat_rr(t + 1, u) - mat_rr(t, u))/(x(t + u) - x(t));
end
end
end
for t = 1: 1: n + 1
rr(t) = mat_rr(1, t);
end
*****************************************************
function i_pol = pol(rr_m, x_m, n)
u = 0;
i_pol = zeros(1, 201);
for x = -1: 0.01: 1
u = u + 1;
for t = 1: 1: n + 1
r = 1;
for q = 1: 1: t - 1
r = r * (x - x_m(q));
end
i_pol(u) = i_pol(u) + rr_m(t) * r;
end
end
5. Решение.
(Графики на следующей странице)
6. Выводы.
Были построены графики интерполяционных полиномов при равномерном выборе узлов и при выборе узлов по Чебышеву для трех заданных n(2, 6, 14). При равномерном выборе узлов на концах заданного интервала при достаточно больших n происходит сильное увеличение погрешности. При выборе узлов по Чебышеву функция апроксимируется более точно.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.