Добавил:
unclefalkon
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР1 / lab1_sechenie
.m function [f_min, x_min] = lab1_sechenie(a,b,eps)
tau = (sqrt(5) - 1)/2;
a_start = a;
b_start = b;
x1 = a+(1-tau)*(b-a);
x2 = a + tau*(b-a);
f1 = myfun(x1);
f2 = myfun(x2);
counter = 2;
eps_n = (b-a)/2;
while eps_n>eps
if f1 >= f2
a = x1;
x1 = x2;
f1 = f2;
x2 = a+b-x2;
f2 = myfun(x2);
else
b = x2;
x2 = x1;
f2 = f1;
x1 = a+b-x1;
f1 = myfun(x1);
end
eps_n = tau*eps_n;
counter = counter + 1;
end
x_min = (a+b)/2;
f_min = myfun(x_min);
str=sprintf('Минимум функции на отрезке [%d; %d] - %3f, в точке %3f',a_start, b_start, f_min, x_min);
disp(str);
str = sprintf('Количество вычислений функции - %d', counter);
disp(str);
end
tau = (sqrt(5) - 1)/2;
a_start = a;
b_start = b;
x1 = a+(1-tau)*(b-a);
x2 = a + tau*(b-a);
f1 = myfun(x1);
f2 = myfun(x2);
counter = 2;
eps_n = (b-a)/2;
while eps_n>eps
if f1 >= f2
a = x1;
x1 = x2;
f1 = f2;
x2 = a+b-x2;
f2 = myfun(x2);
else
b = x2;
x2 = x1;
f2 = f1;
x1 = a+b-x1;
f1 = myfun(x1);
end
eps_n = tau*eps_n;
counter = counter + 1;
end
x_min = (a+b)/2;
f_min = myfun(x_min);
str=sprintf('Минимум функции на отрезке [%d; %d] - %3f, в точке %3f',a_start, b_start, f_min, x_min);
disp(str);
str = sprintf('Количество вычислений функции - %d', counter);
disp(str);
end
Соседние файлы в папке ЛР1