Untitled
unknown
matlab
9 months ago
979 B
5
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 debe cambiar 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
Editor is loading...
Leave a Comment