Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб 5 / Отчет 5

.docx
Скачиваний:
13
Добавлен:
24.04.2023
Размер:
346.16 Кб
Скачать

Министерство образования и науки Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования

Национальный исследовательский университет “МИЭТ”

Факультет Прикладных информационных технологий

Отчет по лабораторной работе №5

Вариант 7

Дисциплина: Численные методы

Выполнил:

Студент П-43

Губарев Сергей

Москва, 2022 год

Аппроксимация данных методом наименьших квадратов

Цель работы: изучение метода наименьших квадратов для аппроксимации данных; приобретение навыков программирования метода наименьших квадратов для аппроксимации экспериментальных данных; приобретение навыков использования стандартных средств системы Matlab для задачи аппроксимации.

Ход работы

Задание 1

% задача 1. Написать m-файлы для реализации метода наименьших

% квадратов для построения линейной регрессии по x и y. Взять

% 10 первых точек из своего варианта. Вычислить медиану, средние

% значения, смещенную и несмещенную оценку среднеквадратичного

% отклонения, коэффициент корреляции.

clear

% точки по варианту (7)

x = [-0.5:0.04:1.5]

Y = [0.8381, 0.6434, 0.8021, 0.5503, 0.7475, 0.8743, 0.7827 0.9828, 0.7537, 0.5455, ...

0.6848, 0.9725, 0.8272, 0.8888, 0.9585, 0.5737, 0.7556, 0.7446 0.7009, 0.8001, ...

1.0066, 0.8044, 0.9543, 0.7044, 0.7818, 0.6713, 0.7297, 0.7109 0.7870, 0.7939, ...

0.6826, 0.7843, 0.7412, 0.6961, 0.6057, 0.6965, 0.5632, 0.3903 0.5605, 0.4690, ...

0.4037, 0.5651, 0.6047, 0.2716, 0.3140, 0.1634, 0.3118, -0.1071 0.2734, 0.1377, ...

0.1034];

% первые 10 точек для задания

Y1_zadanie1 = [0.8381, 0.6434, 0.8021, 0.5503, 0.7475, 0.8743, 0.7827 0.9828, 0.7537, 0.5455];

X1_zadanie1 = x(1:10);

% средние значения от массивов точек из задания

srednee_znachenie_X1=mean(X1_zadanie1);

srednee_znachenie_Y1=mean(Y1_zadanie1);

% погрешности точек, заданных по условию

pogreshnost_znachenia_X1=X1_zadanie1-srednee_znachenie_X1;

pogreshnost_znachenia_Y1=Y1_zadanie1-srednee_znachenie_Y1;

% параметры b0 и b1 (для линейной регрессии)

b1_parametr=sum(pogreshnost_znachenia_X1.*pogreshnost_znachenia_Y1)/sum(pogreshnost_znachenia_X1.^2)

b0_parametr=srednee_znachenie_Y1-b1_parametr.*srednee_znachenie_X1

% для графика линейной регрессии

graph_x=[X1_zadanie1(1) X1_zadanie1(10)];

graph_y=b0_parametr+b1_parametr*graph_x;

figure(1)

plot(graph_x, graph_y, X1_zadanie1, Y1_zadanie1, '*')

% вторая часть задачи

% поиск несмещенной оценки среднеквадратичного отклонения, смещенной,

% медианы и коэффициента корелляции

nesmeshennaya_otsenka_sr_otkloneniya=std(Y1_zadanie1,0)

smeshennaya_otsenka_sr_otkloneniya=std(Y1_zadanie1,1)

mediana_tochek_x=median(X1_zadanie1)

mediana_tochek_y=median(Y1_zadanie1)

koefficient_korellyatsii=corrcoef(X1_zadanie1,Y1_zadanie1)

Задание 2

% задача 2. Написать m-файлы функции для реализации метода наименьших

% квадратов для построения нелинейной полиномиальной регрессии со

% степенным базисом (n = 3, 5, 7) и построить аппроксимирующие кривые.

clear

% точки по варианту (7)

x = [-0.5:0.04:1.5]

Y = [0.8381, 0.6434, 0.8021, 0.5503, 0.7475, 0.8743, 0.7827 0.9828, 0.7537, 0.5455, ...

0.6848, 0.9725, 0.8272, 0.8888, 0.9585, 0.5737, 0.7556, 0.7446 0.7009, 0.8001, ...

1.0066, 0.8044, 0.9543, 0.7044, 0.7818, 0.6713, 0.7297, 0.7109 0.7870, 0.7939, ...

0.6826, 0.7843, 0.7412, 0.6961, 0.6057, 0.6965, 0.5632, 0.3903 0.5605, 0.4690, ...

0.4037, 0.5651, 0.6047, 0.2716, 0.3140, 0.1634, 0.3118, -0.1071 0.2734, 0.1377, ...

0.1034];

n = 51;

y = Y';

k3 = 3;

k5 = 5;

k7 = 7;

Y3 = 0;

Y5 = 0;

Y7 = 0;

# k = 3

A = ones(n, k3);

for i = 1:n

for j = 2:k3

A(i, j) = x(i).^(j - 1);

end

end

b_ = inv(A' * A) * A' * y;

for i = 1:k3

Y3 = Y3 + b_(i)*x.^(i - 1);

end

#k = 5

A = ones(n, k5);

for i = 1:n

for j = 2:k5

A(i, j) = x(i).^(j - 1);

end

end

b_ = inv(A' * A) * A' * y;

for i = 1:k5

Y5 = Y5 + b_(i)*x.^(i - 1);

end

#k = 7

A = ones(n, k7);

for i = 1:n

for j = 2:k7

A(i, j) = x(i).^(j - 1);

end

end

b_ = inv(A' * A) * A' * y;

for i = 1:k7

Y7 = Y7 + b_(i)*x.^(i - 1);

end

plot(x,Y3,'m',x,Y5,'r',x,Y7,'g',x,y,'.')

y=y';

figure

plot(x,Y3-y,'m',x,Y5-y,'r',x,Y7-y,'g')

Задания 3 – 5

% задачи 3-5.Построить график и отобразить на нем следующие данные:

% исходные данные в виде точек и графики аппроксимирующих функций. Использовать

% стандартные средства Matlab для построения соответствующих кривых.

% Сравнить результаты. Построить графики ошибок аппроксимации для всех n.

clear

% точки по варианту (7)

x = [-0.5:0.04:1.5]

y = [0.8381, 0.6434, 0.8021, 0.5503, 0.7475, 0.8743, 0.7827 0.9828, 0.7537, 0.5455, ...

0.6848, 0.9725, 0.8272, 0.8888, 0.9585, 0.5737, 0.7556, 0.7446 0.7009, 0.8001, ...

1.0066, 0.8044, 0.9543, 0.7044, 0.7818, 0.6713, 0.7297, 0.7109 0.7870, 0.7939, ...

0.6826, 0.7843, 0.7412, 0.6961, 0.6057, 0.6965, 0.5632, 0.3903 0.5605, 0.4690, ...

0.4037, 0.5651, 0.6047, 0.2716, 0.3140, 0.1634, 0.3118, -0.1071 0.2734, 0.1377, ...

0.1034];

p3 = polyfit(x, y, 3);

Y3 = polyval(p3, x);

p5 = polyfit(x, y, 5);

Y5 = polyval(p5, x);

p7 = polyfit(x, y, 7);

Y7 = polyval(p7, x);

plot(x, Y3, 'm', x, Y5, 'r', x, Y7, 'g', x, y, '.')

figure

plot(x, Y3-y, 'm', x, Y5-y, 'r', x, Y7-y, 'g')

Соседние файлы в папке Лаб 5