Загрузка данных



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