Сравнение графиков интерполяционных полиномов в форме Ньютона Pn (x), страница 2

% и их погрешностей, методом равномерного разбиения и разбиения по Чебушеву

function main()

    n = [2, 6, 14];     %кол-во узлов

    x = [-1: 0.01: 1];  % x [-1,1]

    for  t = 1: 1: 3

        subplot(2, 2, t);

        y_fun      = y_funFn(x);

        y_pol_ravn = y_polFn(n(t), 1);   

        y_pol_cheb = y_polFn(n(t), 2);

        %графики функции и полиномов и графики их погрешностей

        plot(x,      y_fun, '-b', x, y_pol_ravn, '-r', x, y_pol_cheb, '-g', x, y_fun - y_pol_ravn, ':r', x, y_fun - y_pol_cheb, ':g'), grid on;

    end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

polFn.m

%Входные значения:  rr_m

%                   x_razb – массив точек разбиения

%                   n      – степень полинома

%

%Выходные значения: y_pol – массив значений интерполяционного полинома

function y_pol = polFn(rr_m, x_razb, n)

    u = 0;

    y_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_razb(q));

            end

            y_pol(u) = y_pol(u) + rr_m(t) * r; 

        end

    end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

razbFn.m

%Входные значения:  n    – степень полинома

%                   razb – выбор разбиения

%

%Выходные значения: x_razb – массив точек разбиения

function x_razb = razbFn(n, razb)

    xmin = -1;

    xmax = 1;

    if razb == 1

        h = (xmax - xmin)/n;

        for i = 1: 1: n + 1

            x_razb(i) = xmin + h * (i - 1);

        end

    end

    if razb == 2

        for i = 1: 1: n + 1

            x_razb(n + 2 - i) = cos(pi*(2*i -  1)/(2*(n + 1)));

        end

    end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

RRFn.m

%Входные значения:  y_fun - массив значений в точках