
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
% Проверка значений функции на границах интервала
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