Untitled

 avatar
unknown
matlab
14 days ago
939 B
1
Indexable
function raiz = biseccion(f, a, b, tol, max_iter)
% BISECCION Encuentra la raíz de una función en un intervalo usando el método de bisección
%
%   RAIZ = BISECCION(F, A, B, TOL, MAX_ITER) encuentra una raíz de la función F en el intervalo [A, B]
%   con una tolerancia TOL y un máximo de MAX_ITER iteraciones. F debe ser una función de una variable.
%
% Encontrar la raíz de sin(x) = 0
%   f1 = @(x) sin(x);
%   raiz1 = biseccion(f1, 3, 4, 1e-6, 50)
% Resultado esperado: π (aproximadamente 3.14159)


if f(a) * f(b) >= 0
    error('La función cambiara de signo en el intervalo [a, b]');
end

iter = 0;
while (b - a) > tol && iter < max_iter
    c = (a + b)/2;
    if f(c) == 0
        break;
    elseif f(a) * f(c) < 0
        b = c;
    else
        a = c;
    end
    iter = iter + 1;
end

if iter == max_iter
    warning('Se alcanzó el número máximo de iteraciones sin alcanzar la tolerancia');
end

raiz = (a + b)/2;
end
Leave a Comment