clc
clear
close all
% Исходные данные, вариант 13
X = [13 13.5 14 14.5 15 15.5 16 16.5 ...
17 17.5 18 18.5 19 19.5 20 20.5 21];
Y = [-54.06 -55.20 -68.68 -57.39 -62.38 ...
-61.11 -62.22 -65.21 -71.11 -75.04 ...
-79.74 -78.14 -78.07 -84.54 -86.53 ...
-86.62 -88.36];
% Исходный график
figure(1)
plot(X, Y, 'bo')
grid on
xlabel('X')
ylabel('Y')
title('Исходные данные, вариант 13')
hold on
% Линейная аппроксимация
XR1 = [X'.^0 X'];
b1 = regress(Y', XR1);
% Коэффициенты линейной модели
a0 = b1(1);
a1 = b1(2);
% Расчет модельных значений
xf = linspace(min(X), max(X), 100);
y1 = a0 + a1*X;
yf1 = a0 + a1*xf;
% Среднеквадратическое отклонение
S1 = sqrt(mean((Y - y1).^2));
% График линейной модели
plot(xf, yf1, 'r-', 'LineWidth', 1.5)
% Квадратичная аппроксимация
XR2 = [X'.^0 X' X'.^2];
b2 = regress(Y', XR2);
% Коэффициенты квадратичной модели
c0 = b2(1);
c1 = b2(2);
c2 = b2(3);
% Расчет модельных значений
y2 = c0 + c1*X + c2*X.^2;
yf2 = c0 + c1*xf + c2*xf.^2;
% Среднеквадратическое отклонение
S2 = sqrt(mean((Y - y2).^2));
% График квадратичной модели
plot(xf, yf2, 'g-', 'LineWidth', 1.5)
legend('Исходные точки', 'Линейная модель', ...
'Квадратичная модель', 'Location', 'best')
hold off
% Вывод коэффициентов моделей
disp('Линейная модель:')
disp(['Y = ', num2str(a0), ' + (', num2str(a1), ')*X'])
disp(['Среднеквадратическое отклонение = ', num2str(S1)])
disp('Квадратичная модель:')
disp(['Y = ', num2str(c0), ' + (', num2str(c1), ...
')*X + (', num2str(c2), ')*X^2'])
disp(['Среднеквадратическое отклонение = ', num2str(S2)])
% График отклонений квадратичной модели
figure(2)
plot(X, Y - y2, 'bo-')
grid on
xlabel('X')
ylabel('Y - Yмодель')
title('Отклонения квадратичной модели')
% Сравнение моделей
if S1 < S2
disp('Лучшая модель: линейная')
else
disp('Лучшая модель: квадратичная')
end