Разложение в ряд Тейлора с помощью функции taylor
clear all clc
% Создаем символьную переменную x. syms x
% Находим разложения в ряд Тейлора при различном количестве слагаемых. g1=taylor(sin(x), 1.5, 1); g2=taylor(sin(x), 1.5, 2); g3=taylor(sin(x), 1.5, 3); g4=taylor(sin(x), 1.5, 4);
% Преобразуем полученные полиномы в векторную форму. p1=sym2poly(g1); p2=sym2poly(g2); p3=sym2poly(g3); p4=sym2poly(g4);
% Определяем интервал. x1=-1:0.01:4; N=numel(x1);
% Cчитаем значения разложений. v1=polyval(p1, x1); v2=polyval(p2, x1); v3=polyval(p3, x1); v4=polyval(p4, x1);
% Задаем функцию f=sin(x1);
% Строим графики функции и ее разложений в ряд Тейлора. plot(x1, f, '-r', x1, v1, '-g', x1, v2, ':g', x1, v3, '-.k', x1, v4, '--k') grid on title('Разложение sin(x) в ряд Тейлора') xlabel('Ось x') ylabel('Ось y') legend('sin(x)', 'g(x,1)', 'g(x,2)', 'g(x,3)', 'g(x,4)')
% Находим дополнительные разложения в ряд Тейлора для большего числа % слагаемых g5=taylor(sin(x), 1.5, 5); g6=taylor(sin(x), 1.5, 6); g7=taylor(sin(x), 1.5, 7); g8=taylor(sin(x), 1.5, 8); p5=sym2poly(g5); p6=sym2poly(g6); p7=sym2poly(g7); p8=sym2poly(g8); v5=polyval(p5, x1); v6=polyval(p6, x1); v7=polyval(p7, x1); v8=polyval(p8, x1);
% Вычисляем ошибки аппроксимации e1=f-v1; e2=f-v2; e3=f-v3; e4=f-v4; e5=f-v5; e6=f-v6; e7=f-v7; e8=f-v8;
% Вычисляем абсолютные значения ошибок апроксимации ee1=abs(e1); ee2=abs(e2); ee3=abs(e3); ee4=abs(e4); ee5=abs(e5); ee6=abs(e6); ee7=abs(e7); ee8=abs(e8);
% Вычисляем целевые функции
ef1=sum(ee1)/N ef2=sum(ee2)/N ef3=sum(ee3)/N ef4=sum(ee4)/N ef5=sum(ee5)/N ef6=sum(ee6)/N ef7=sum(ee7)/N ef8=sum(ee8)/N
eh1=dot(ee1, ee1)/N eh2=dot(ee2, ee2)/N eh3=dot(ee3, ee3)/N eh4=dot(ee4, ee4)/N eh5=dot(ee5, ee5)/N eh6=dot(ee6, ee6)/N eh7=dot(ee7, ee7)/N eh8=dot(ee8, ee8)/N
Таблица 1.
Из полученных результатов можно сделать вывод об увеличении точности аппроксимации при увеличении числа членов разложения.
|