Реализации алгоритмов/Метод бисекции: различия между версиями
Содержимое удалено Содержимое добавлено
Метка: possible spambot (testing) |
|||
Строка 48:
Пример реализации алгоритма на языке [[w:Matlab|Matlab]]:
<big><source lang="Matlab">
function [res, error] = bisection(fun, left, right, tol)
if fun(left)*fun(right) > 0
error('Значения функции на концах интервала должны быть разных знаков');
middle = 0.5*(left +right);
%Итерационный цикл
while
▲ %Деление отрезка пополам
left = left*(fun(left)*fun(middle) < 0) + middle*(fun(left)*fun(middle) > 0);
right = right*(fun(right)*fun(middle) < 0) + middle*(fun(right)*fun(middle) > 0);
▲ %Нахождение нового интервала
%Деление нового интервала пополам
middle = 0.5*(left
res = middle;
err =
</source></big>
Пример работы алгоритма для поиска корня функции y = tan(x) на интервале [1; 2] с точностью 1e-3. Результат вполне ожидаемый:
<big><source lang="Matlab">
[res, err] = bisection('tan', 1, 2, 1e-3)
res =
1.5713
▲ err =
9.7656e-004
|