Skip to content

Instantly share code, notes, and snippets.

@Reflej0
Created April 27, 2017 02:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Reflej0/cacf4ab67ebacb3951695a51395a7896 to your computer and use it in GitHub Desktop.
Save Reflej0/cacf4ab67ebacb3951695a51395a7896 to your computer and use it in GitHub Desktop.
Algoritmo de Bisección de Cálculo Numérico en Scilab.
function [raizaproximada, iteraciones] = biseccion(funcion, A, B, Tolerancia, Iteracionesmaximas)
raizaproximada = A; // Esto es para que en la primera iteracion no de error.
iteraciones = 0;
while 1
raizaproximadaanterior = raizaproximada;
raizaproximada = (A+B)/2;
errorabsoluto = abs((raizaproximada-raizaproximadaanterior)/raizaproximada)*100;
r = funcion(raizaproximada);
a = funcion(A); // Evaluo A en la funcion, y lo guardo en a.
b = funcion(B); // Evaluo B en la funcion y lo guardo en b.
if( a*r < 0 ) then
B = raizaproximada;
else
A = raizaproximada;
end
iteraciones = iteraciones + 1;
if(errorabsoluto < Tolerancia | iteraciones == Iteracionesmaximas ) then
break
end
end
endfunction
//Datos
function y = primera(x)
y = %e^x + 2^-x + 2*cos(x) - 6;
endfunction
A = 1;
B = 2;
Tolerancia = 0.00001;
Iteracionesmaximas = 100;
[raizaproximada, iteraciones] = biseccion(primera, A, B, Tolerancia, Iteracionesmaximas)
@jkrasuk
Copy link

jkrasuk commented Oct 27, 2019

Groso

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment