Ayuda con metodo de biseccion
Publicado por Angel (1 intervención) el 26/03/2013 07:27:51
Hola a todos:
Estoy haciendo un programa que calcula raices usando el metodo de bisecion. Actualmente el programa realiza bien el calculo si la funcion esta en el codigo, pero necesito que el usuario introduzca la funcion por teclado y que el programa la calcule.
¿Hay alguna forma de que lo que inserte el usuario reemplace al x*x*x-x-2 del codigo?
Gracias.
Estoy haciendo un programa que calcula raices usando el metodo de bisecion. Actualmente el programa realiza bien el calculo si la funcion esta en el codigo, pero necesito que el usuario introduzca la funcion por teclado y que el programa la calcule.
¿Hay alguna forma de que lo que inserte el usuario reemplace al x*x*x-x-2 del codigo?
Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cmath>
#include <stdlib.h>
using namespace std;
double f(double x);
double biseccion(double a, double b, double tolerancia, int maxiter);
int main()
{
double a, b, raiz;
double tolerancia=0.00000;
int maxiter=25;
cout << "Ingrese inicio del intervalo: ";
cin >> a;
cout << "Ingrese final del intervalo: ";
cin >> b;
cout << "\n";
cout << " # de"<<"\n"<<"Iteracion"<<"\t"<<" A"<<"\t"<<" B"<<"\t"<<" C"<<"\t"<<" f(c)"<<endl;
raiz=biseccion(a,b,tolerancia,maxiter);
cout << "\n";
cout << "La raiz es: "<< raiz <<endl;
return 0;
}
double f(double x)
{
return x*x*x-x-2;
}
double biseccion(double a, double b, double tolerancia, int maxiter)
{
double c;
int numiter=1;
do
{
c=(a+b)/2;
if(f(a)*f(c)<0)
{
b=c;
}
else
{
a=c;
}
cout<<" "<<numiter<<"\t"<<"\t"<<a<<"\t"<<b<<"\t"<<c<<"\t"<<f(c)<<endl;
numiter++;
}
while((abs(f(c))>tolerancia)&&(numiter<maxiter));
return c;
}
Valora esta pregunta


0