
clc;
clear all;
close all;
c = 0;
d = 5;
x = c:0.1:d;
y = [-0.0627, 0.2727, 0.4647, 0.5818, 0.7122, 0.8727, 0.9211, 0.9423, ...
0.9318, 0.9329, 0.9794, 1.1605, 1.0324, 1.1018, 1.0523, ...
1.2707, 1.2655, 1.3511, 1.2770, 1.2805, 1.3692, 1.1997, ...
1.4977, 1.4779, 1.7262, 1.6303, 1.7824, 1.6529, 1.7918, ...
1.7635, 1.8133, 1.7746, 1.7036, 1.6771, 1.8053, 1.9213, ...
1.8812, 1.9930, 2.0343, 2.1015, 2.1716, 2.0307, 1.9889, ...
2.0551, 2.0983, 2.1195, 2.1950, 1.9982, 2.2107, 2.3409, 2.2633];
% Цвета для графиков
colors = lines(3);
degrees = [3, 5, 7];
%% Основной график аппроксимации
figure(1);
set(gcf, 'Position', [100, 100, 900, 600]);
subplot(2,1,1);
hold on;
grid on;
box on;
% Исходные данные
plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 4);
% Аппроксимации для разных степеней
legends = {'Исходные данные'};
for i = 1:length(degrees)
k = degrees(i);
b = polyfit(x, y, k);
y_fit = polyval(b, x);
plot(x, y_fit, 'Color', colors(i,:), 'LineWidth', 1.5);
legends{end+1} = sprintf('Полином %d-й степени', k);
% Вычисление ошибки
error = y - y_fit;
errors(i,:) = error;
end
title('Аппроксимация данных полиномами разных степеней', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('y', 'FontSize', 10);
legend(legends, 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
%% График ошибок
subplot(2,1,2);
hold on;
grid on;
box on;
for i = 1:length(degrees)
plot(x, errors(i,:), 'Color', colors(i,:), 'LineWidth', 1);
end
title('Ошибки аппроксимации', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('Ошибка', 'FontSize', 10);
legend({'3-я степень', '5-я степень', '7-я степень'}, 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
%% Дополнительный график (средства MATLAB)
figure(2);
set(gcf, 'Position', [200, 200, 800, 400]);
hold on;
grid on;
box on;
plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 4);
k = 7;
b_M = polyfit(x, y, k);
y1_M = polyval(b_M, x);
plot(x, y1_M, 'r-', 'LineWidth', 1.5);
title('Аппроксимация средствами MATLAB (полином 7-й степени)', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('y', 'FontSize', 10);
legend('Исходные данные', 'Аппроксимация', 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
clear all;
close all;
c = 0;
d = 5;
x = c:0.1:d;
y = [-0.0627, 0.2727, 0.4647, 0.5818, 0.7122, 0.8727, 0.9211, 0.9423, ...
0.9318, 0.9329, 0.9794, 1.1605, 1.0324, 1.1018, 1.0523, ...
1.2707, 1.2655, 1.3511, 1.2770, 1.2805, 1.3692, 1.1997, ...
1.4977, 1.4779, 1.7262, 1.6303, 1.7824, 1.6529, 1.7918, ...
1.7635, 1.8133, 1.7746, 1.7036, 1.6771, 1.8053, 1.9213, ...
1.8812, 1.9930, 2.0343, 2.1015, 2.1716, 2.0307, 1.9889, ...
2.0551, 2.0983, 2.1195, 2.1950, 1.9982, 2.2107, 2.3409, 2.2633];
% Цвета для графиков
colors = lines(3);
degrees = [3, 5, 7];
%% Основной график аппроксимации
figure(1);
set(gcf, 'Position', [100, 100, 900, 600]);
subplot(2,1,1);
hold on;
grid on;
box on;
% Исходные данные
plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 4);
% Аппроксимации для разных степеней
legends = {'Исходные данные'};
for i = 1:length(degrees)
k = degrees(i);
b = polyfit(x, y, k);
y_fit = polyval(b, x);
plot(x, y_fit, 'Color', colors(i,:), 'LineWidth', 1.5);
legends{end+1} = sprintf('Полином %d-й степени', k);
% Вычисление ошибки
error = y - y_fit;
errors(i,:) = error;
end
title('Аппроксимация данных полиномами разных степеней', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('y', 'FontSize', 10);
legend(legends, 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
%% График ошибок
subplot(2,1,2);
hold on;
grid on;
box on;
for i = 1:length(degrees)
plot(x, errors(i,:), 'Color', colors(i,:), 'LineWidth', 1);
end
title('Ошибки аппроксимации', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('Ошибка', 'FontSize', 10);
legend({'3-я степень', '5-я степень', '7-я степень'}, 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
%% Дополнительный график (средства MATLAB)
figure(2);
set(gcf, 'Position', [200, 200, 800, 400]);
hold on;
grid on;
box on;
plot(x, y, 'ko', 'MarkerFaceColor', 'k', 'MarkerSize', 4);
k = 7;
b_M = polyfit(x, y, k);
y1_M = polyval(b_M, x);
plot(x, y1_M, 'r-', 'LineWidth', 1.5);
title('Аппроксимация средствами MATLAB (полином 7-й степени)', 'FontSize', 12);
xlabel('x', 'FontSize', 10);
ylabel('y', 'FontSize', 10);
legend('Исходные данные', 'Аппроксимация', 'Location', 'northwest', 'FontSize', 9);
xlim([c, d]);
Соседние файлы в папке мнк