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

ЛР2 / lab2_pokoordinat_spusk

.m
Скачиваний:
26
Добавлен:
14.12.2022
Размер:
1 Кб
Скачать
function [x_min, y_min, value_counter,  iter_counter]  = lab2_pokoordinat_spusk(y, x_start, eps)

    value_counter = 0;
    iter_counter = 0;
    j = 1;
    e = eye(2);
    x = x_start;
    x_old = x;

    while(1)
        iter_counter = iter_counter +1;

        f = @(a)y(x + a*e(j, :));
        tmp = lab1_porazryad(f, 0, 10^(-8));
        value_counter = value_counter + tmp(2);
        x = x + tmp(1)*e(j, :);

        if (j < 2)
            j = j+1;
        else
           j = 1;
           if(abs(y(x_old) - y(x)) < eps)
               x_min = x;
               y_min = y(x_min);
               break;
           else
               x = x + tmp(1)*e(j, :);
               value_counter = value_counter + 1;
               x_old = x;
           end
        end
    end

    str = sprintf('Минимум функции %3f, в точке x1 = %3f, x2 = %3f',y_min, x_min(1), x_min(2));
    disp(str);
    str = sprintf('Количество вычислений - %d. Количество итераций метода - %d', value_counter, iter_counter);
    disp(str);
Соседние файлы в папке ЛР2