Добавил:
Absent2L
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лаб 5 / z2
.m % задача 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')
% квадратов для построения нелинейной полиномиальной регрессии со
% степенным базисом (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')