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

first lab / division (1)

.m
Скачиваний:
2
Добавлен:
06.06.2025
Размер:
2 Кб
Скачать
function [a, b, x0] = divison(a, b, func, n)
    % Проверка значений функции на границах интервала
    f_a = func(a);
    f_b = func(b);
    
    % Убедимся, что функция имеет разные знаки на концах интервала
    if f_a * f_b > 0
        error('Функция должна иметь разные знаки на концах интервала.');
    end

    for i = 1:n
        x0 = (a + b) / 2; % Находим середину отрезка
        f_x0 = func(x0); % Вычисляем значение функции в x0
        
        % Проверяем, какой отрезок сужать
        if f_x0 * f_a < 0
            b = x0; % Сужаем отрезок
            f_b = f_x0; % Обновляем значение функции в b
        else
            a = x0; % Сужаем отрезок
            f_a = f_x0; % Обновляем значение функции в a
        end
        
        % Проверка на точность
        if abs(b - a) < 1e-6 
            fprintf('Корень найден: x0 = %.6f\n', x0);
            return; % Завершение функции
        end
    end
    error_bisection =abs(func(a))
    disp(['Невязка метода деления отрезков = ', num2str(error_bisection)])

    fprintf('Приблизительное значение корня: x0 = %.6f\n', x0);
end




Соседние файлы в папке first lab