Subido por soypuma2001

Algoritmo

Anuncio
Algoritmo Método de Bisección.
1. Definir los valores iniciales del intervalo [𝑎, 𝑏], de tal forma
que la función cambie de signo sobre el intervalo, tal que: Como
𝑓(𝑥𝑎 ) 𝑓(𝑥𝑏 ) <0.
2. La primera aproximación a la raíz 𝑥𝑟 se determina con: 𝑐 =
(𝑎+𝑏)
2
.
3. Evaluar y determinar, en que subintervalo se encuentra la raíz:
3.1
3.2
3.3
Sí 𝑓(𝑥𝑎 ) 𝑓(𝑥𝑏 ) <0, entonces la raíz se encuentra dentro del
primer subintervalo. Por lo tanto, 𝑥𝑏 = 𝑥𝑟 , continuar al
punto 4.
Sí 𝑓(𝑥𝑎 ) 𝑓(𝑥𝑏 ) >0, entonces la raíz se encuentra dentro del
segundo subintervalo. Por lo tanto, 𝑥𝑎 = 𝑥𝑟 , continuar al
punto 4.
Sí la raíz Sí 𝑓(𝑥𝑎 ) 𝑓(𝑥𝑏 ) =0, entonces la raíz es 𝑥𝑎 .
4. Calcular la nueva aproximación a la raíz con: 𝑥𝑎 , regresar al
punto 3.
5. Decidir si la aproximación es tan exacta como se desea, sí es
así, 𝑥𝑟 de otra forma se regresa al punto 3.
Código y Ejecución.
#include<stdio.h>
#include<math.h>
float fun (float x)
{
return (exp(-x)-x);
}
main ()
{
int itr = 0, maxmitr;
float x, a, b, tol, x1;
printf("\nInsertar limites a, b, error y maximo de iteraciones:");
scanf("%f %f %f %d", &a, &b, &tol, &maxmitr);
printf("\n (b-a)/2
fun(a)
fun(b)
fun(x)
a
b
x\n\n" );
while (((b-a)/2) > tol)
{
x=(a+b)/2;
printf("%9.4f %9.4f %9.4f %9.4f %9.4f %9.4f %9.4f\n",(b-a)/2,fun(a),fun(b),fun(x), a,
b,x );
if (fun(x)==0)
{
return 0;
}
if ((fun(a)*fun(x)) < 0)
{
b=x;
}
else
{
a=x;
}
}
}
Descargar