Добавил:
unclefalkon
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР1 / lab1_loman
.m function [x_min, f_min] = lab1_loman(a, b, eps, L)
x0 = 1/(2*L) * (myfun(a)-myfun(b)+L*(a+b));
y0 = 1/2 * (myfun(a)+myfun(b)+L*(a-b));
X = [[x0, y0];[1000,1000]];
[tmp, ind] = min(X(:,2));
X(2, :) = [];
p_min = X(ind,2);
x_min = X(ind,1);
delta = 1/(2*L) * (myfun(x_min)-p_min);
counter = 3;
while 2*L*delta > eps
x_left = x_min-delta;
x_right = x_min+delta;
p = 1/2*(myfun(x_min)+p_min);
X = [X; [x_left, p]; [x_right, p]];
X(ind, :) = [];
[tmp, ind] = min(X(:,2));
p_min = X(ind,2);
x_min = X(ind,1);
delta = 1/(2*L) * (myfun(x_min)-p_min);
counter = counter+1;
end
x_min = x_min;
f_min = myfun(x_min);
str=sprintf('Минимум функции - %3f, в точке %3f',f_min, x_min);
disp(str);
str = sprintf('Количество вычислений значения производной функции - %d', counter);
disp(str);
end
x0 = 1/(2*L) * (myfun(a)-myfun(b)+L*(a+b));
y0 = 1/2 * (myfun(a)+myfun(b)+L*(a-b));
X = [[x0, y0];[1000,1000]];
[tmp, ind] = min(X(:,2));
X(2, :) = [];
p_min = X(ind,2);
x_min = X(ind,1);
delta = 1/(2*L) * (myfun(x_min)-p_min);
counter = 3;
while 2*L*delta > eps
x_left = x_min-delta;
x_right = x_min+delta;
p = 1/2*(myfun(x_min)+p_min);
X = [X; [x_left, p]; [x_right, p]];
X(ind, :) = [];
[tmp, ind] = min(X(:,2));
p_min = X(ind,2);
x_min = X(ind,1);
delta = 1/(2*L) * (myfun(x_min)-p_min);
counter = counter+1;
end
x_min = x_min;
f_min = myfun(x_min);
str=sprintf('Минимум функции - %3f, в точке %3f',f_min, x_min);
disp(str);
str = sprintf('Количество вычислений значения производной функции - %d', counter);
disp(str);
end
Соседние файлы в папке ЛР1