Курсовая работа СМО Гангур. Курсовая работа методы решения задач оптимизации по дисциплине Методы оптимизации Направление подготовки
![]()
|
Решение.Задана следующая модель регрессии: ![]() где ![]() ![]() ![]() Поскольку необходимо найти вид заданного уравнения, то целесообразно будет считать квадраты отклонений между исходными данными ![]() ![]() ![]() где x – искомая ![]() ![]() ![]() ![]() Компоненты градиент функции ![]() ![]() ![]() ![]() Коэффициент детерминации.Коэффициент детерминации модели показывает ее степень зависимости от заданных параметров (факторов). Коэффициент принимает значения от 0 до 1, и чем он ближе к единице, тем сильнее представленная зависимость. В случае регрессионных моделей, чем ближе коэффициент к единице, тем сильнее модель соответствует исходным данным. Поскольку регрессионная модель не является линейной, то коэффициент детерминации вычисляется по следующей формуле: ![]() ![]() ![]() где ![]() ![]() ![]() ![]() ![]() ![]() Код Matlab.clc; clear all format compact X = dlmread('table.txt'); b = 3; a1 = -2; a2 = 1; t_k = 0.0001; eps = 0.00001; h = 0; M = 5000; figure plot(0, 0); hold on; while sqrt(dF_b(b, a1, a2, X).^2+dF_a1(b, a1, a2, X).^2+dF_a2(b, a1, a2, X).^2)>eps if h < M f_k = F(b, a1, a2, X); b_new = b - t_k*dF_b(b, a1, a2, X); a1_new = a1 - t_k*dF_a1(b, a1, a2, X); a2_new = a2 - t_k*dF_a2(b, a1, a2, X); f_KK=F(b_new, a1_new, a2_new, X); plot(h, f_KK, '.r', 'markersize', 5); if f_KK > f_k t_k = t_k/2; end if (sqrt((b_new - b)^2 + (a1_new - a1)^2 + (a2_new - a2)^2) < eps & abs(f_KK - f_k) < eps) break; end else break; end b = b_new; a1 = a1_new; a2 = a2_new; h = h + 1; end xlim([0 h]);ylim([0 5]); fprintf('Получены следующие результаты: \n b=%f \n a1=%f \n a2=%f', b, a1, a2); fprintf('\n \n Количество итераций: %d \n', h); R = f_KK; fprintf('Сумма квадратов отклонений равна: %f \n', R);R_d = det(X, f_KK); fprintf('Коэфициент детерминации равен: %f \n', R_d); function y = F(b, a1, a2, X) j = size(X,1); S = 0; for i = 1:j S = S + (X(i,3) - b - a1/X(i,1) - a2/X(i,2)).^2; end y = S; end function y = dF_b(b, a1, a2, X) j = size(X,1); S = 0; for i=1:j S = S - 2*(X(i,3) - b - a1/X(i,1) - a2/X(i,2)); end y = S; end function y = dF_a1(b, a1, a2, X) j = size(X,1); S = 0; for i = 1:j S = S + 2*(-1/X(i,1))*(X(i,3) - b - a1/X(i,1) - a2/X(i,2)); end y = S; end function y = dF_a2(b, a1, a2, X) j = size(X,1); S = 0; for i = 1:j S = S + 2*(-1/X(i,2))*(X(i,3) - b - a1/X(i,1) - a2/X(i,2)); end y = S; end function y = det(X, SS_res) j = size(X,1); SS = 0; y_sr = 0; for i = 1:j y_sr = y_sr + X(i, 3); end y_sr = y_sr/j; for i = 1:j SS = SS + (X(i,3) - y_sr).^2; end y = 1 - SS_res/SS; end |