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

Лаб 5 / z2

.m
Скачиваний:
9
Добавлен:
24.04.2023
Размер:
1.58 Кб
Скачать
% задача 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')


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