Diferencia entre revisiones de «Método de bisección»

Contenido eliminado Contenido añadido
Ryback (discusión · contribs.)
m Deshecha la edición 30234093 de 201.127.205.149 (disc.)
Línea 36:
||left}}
 
== Método de bisección en diferentes lenguajes de Programación ==
ARELY tYENE CAra de feto y estha inchada
 
 
'''El siguiente código en lenguaje C, Permite la obtención de de las raíces de una función usando el Método de bisección:'''
 
<source lang="c">
#include<stdio.h>
#include<math.h>
#include<String.h>
#include<conio.h>
//Funcion Que Queremos hallar
double f(double x){
return ((pow(x/3, 2))+(9)); //Esta funcion es Y=(X*X*X)/3)+9 Reemplazar por la funcion deseada ej: Y=(x*x)+(3*x)+6
}
 
//biseccion: Retorna el valor de la funcion usando metodo de biseccion
//parametros: a= valor menor al punto
//parametros: b= valor mayor al punto
//parametros: p= el punto que deseamos encontrar
//parametros: errorDeseado = margen de error
double biseccion(double a, double b, double p, double errorDeseado){
double xr, errorAbsoluto; //xr representa el punto intermedio
printf("valor a:%f valorb:%f\n",a,b);
xr=((b+a)/2);
printf("biseccion a,b: %f\n",f(xr));
//Cambia A o B por el valor del punto dependiendo de cuales se encuentran en medio de p
if(p<xr){
b=xr;
}else{
a=xr;
}
//calcula el error relativo
errorAbsoluto=fabs(f(p)-fabs(f(xr)));
//Si el margen de error ya es valido retorna la funcion.
if (errorAbsoluto<errorDeseado){
return xr;
}else{
return biseccion(a,b, p, errorDeseado);
}
}
int main(){
printf("%f\n", biseccion(-424,146, 7, 0.02)); // introduce un rango amplio
getch();
return 0;
}
</source>
'''El siguiente código para MatLab, Permite la obtención de de las raíces de una función usando el Método de bisección:'''
 
<source lang="matlab">
function x = biseccion(fun,a,b,tol)
% Aproxima por el método de la bisección una raíz de la ecuación fun(x)=0
disp('Método de la bisección');
u=feval(fun,a);
v=feval(fun,b);
n=1;
if sign(u)==sign(v)
disp('Error la función debe cambiar de signo en (a,b)');
end
while ((b-a)*0.5>tol)
c=(b+a)/2; w=feval(fun,c);
disp(['n=', num2str(n)]);
disp(['c=', num2str(c)]);
disp(['f(c)=', num2str(w)]);
if sign(u)==sign(w)
a = c; u=w;
else
b=c; v=w;
end
n=n+1;
end;
x=c
</source>
 
 
'''El siguiente código para SciLab, Permite la obtención de de las raíces de una función usando el Método de bisección:'''
<source lang="scilab">
function x = biseccion(LaFuncion,a,b,tolerancia)
disp('Método de la bisección');
u=evstr("LaFuncion(a)");
v=evstr("LaFuncion(b)");
n=1;
disp(sign(u));
disp(sign(v));
if sign(u)==sign(v)
disp('Error la La función debe cambiar de signo en (a,b)');
end
while ((b-a)*0.5>tolerancia)
c=(b+a)/2;
w=evstr("LaFuncion(c)");
disp(['************ Paso : ', string(n), '************'] );
disp(['Valor c=', string(c)]);
disp(['f(c)=', string(w)]);
if sign(u)==sign(w)
a=c;
u=w;
else
b=c;
v=w;
end
n=n+1;
end;
disp('************* La Raiz : *************');
x=c;
endfunction;
 
</source>
 
== Reference ==