Está en la página 1de 4

Introducción breve del Metodo:

El metodo de la falsa posicion consiste en comparar la funcion con una línea recta, el echo de que
se remplace la curva por una linea recta da una falsa posicion de la raiz, en la formula de la falsa
posicion vr = xu - f(xu) * ((xu - xl) / (f(xu) - f(xl))) el valor de xr calculado con la ecuacion
reemplazara cualquiera de los valoes iniciales de xl o xu, los cuales siempre encerraran la
verdadera raiz y el proceso se ira repitiendo hasta que la raiz sea adecuada, es decir cuando el
valor del error sea próximo a cero.

Declarar variables f(x), a=0, b=0, c=0, xl, xu, ErrorAb, Ea, z, vn, va=0;

Inicio

1 Mostrar: Ingrese los términos de la ecuación cuadrática ax2 + bx + c

2 Ingrese a

Leer y guardar en a

3 Ingrese b

Leer y guardar en b

4 Ingrese c

Leer y guardar en c

5 Mostrar: Determine el intervalo [xl, xu]

Captura xl

Leer y guardar en xl

Captura xu

Leer y guardar en xu

6 Realizar f(x) = a*(x)*(x)+b*(x)+c;

7 si (f(xl) * f(xu) > 0)

Mostrar No se puede aplicar este método

8 sino cumple

Capturar “Porcentaje de Error”

Leer y guardar en ErrorAb

9 inicio siclo

Hacer operaciones

vn = xu - f(xu) * ((xu - xl) / (f(xu) - f(xl)))


Ea = ((vn - va) / (vn)) * 100

10 mostrar resultados xl xu vn f(xl) f(xu) f(vn) Ea

11 si (((vn - va) / (vn)) * 100 <= ErrorAb)

Mostrar: Para un porcentaje de Error del " ErrorAb "% la raíz de f es: " vn “

Terminar

12 sino cumple

va = vn

sí (f(vn) * f(xl) > 0)

xl = vn

Si no cumple (f(vn) * f(xu) > 0)

xu = vn

13 fin de ciclo Repetir hasta que ((vn - va) / (vn)) * 100 <= ErrorAb)

#include <iostream>
#include <iomanip>
#include <cmath>

#define PRECISION 5
using namespace std;

double f(double x);


double a = 0, b = 0, c = 0, xl, xu, ErrorAb, Ea;

int main()
{
cout << setprecision(PRECISION);
cout << "\nMetodo de falsa posicion\n";

cout << "\nIngrese los terminos de la ecuacion cuadratica ax2 + bx +


c:" << endl;
cout << "\na = "; cin >> a;
cout << "b = "; cin >> b;
cout << "c = "; cin >> c;
cout << "su ecuacion es " << a << "x^2 + " << b << "x + " << c << endl;

cout << "\n Determine el intervalo [xl,xu]" << endl;

cout << "\nxl = "; cin >> xl;


cout << "xu = "; cin >> xu;

double vn; double va = 0;

if (f(xl) * f(xu) > 0)


{
cout << "\nNo se puede aplicar este metodo\n";
cout << "porque f(" << xl << ") y f(" << xu << ") tienen el mismo signo
o porque no hay raices en este intervalo" << endl;

}
else
{
cout << "Porcentje de Error = "; cin >> ErrorAb;

cout << "\nxl\txu\tx\tf(xl)\t\tf(xu)\t\tf(x)\t\tEa" << endl;


do {

vn = xu - f(xu) * ((xu - xl) / (f(xu) - f(xl)));

Ea = ((vn - va) / (vn)) * 100;

cout << xl << "\t" << xu << "\t" << vn << "\t" << f(xl) <<
"\t\t" << f(xu) << "\t\t" << f(vn) << "\t\t" << Ea << endl;

if (((vn - va) / (vn)) * 100 <= ErrorAb)


{
cout << "\n\nPara un porcentaje de Error del " << ErrorAb
<< "% la raiz de f es: " << vn << endl;
break;
}
else
{
va = vn;
if (f(vn) * f(xl) > 0) {
xl = vn;

}
else if (f(vn) * f(xu) > 0) {
xu = vn;
}
}

} while (((vn - va) / (vn)) * 100 <= ErrorAb);


}
cin.get();
cin.get();
return 0;
}
double f(double x)
{
return a*(x)*(x)+b*(x)+c;
}

También podría gustarte