| 
	
		|  Autor | Tema: Leer y operar bisección con una función  (Leído 3,547 veces) |  
	| 
			| 
					
						| Antoniio 
								
								 Desconectado 
								Mensajes: 121
								
								   | 
 
Hola, tengo un programa de bisección en c++ pero lee dos variables (a y b), alguien sabe cómo hacer para que realice las operaciones dada una función del usuario? este es el code: #include <iostream>#include <cstdlib>
 #include <math.h>
 
 using namespace std;
 
 double f(double x);
 double biseccion ( double a, double b, double tol, int n);
 int main()
 {
 double a, b, tol, raiz;
 int n;
 cout<< "Ingrese el n\xA3mero de iteraciones:  ";
 cin>>n;
 cout << "Ingrese a:  ";
 cin>>a;
 cout<< "Ingrese b:  ";
 cin>>b;
 cout<< "Ingrese la tolerancia:  ";
 cin>>tol;
 raiz=biseccion(a,b,tol,n);
 cout<<"La ra\xA1z es: "<< raiz <<endl;
 system("pause");
 return 0;
 }
 
 double f(double x)
 {
 return x*x*x+4*x*x-10;
 }
 double biseccion(double a, double b, double tol, int n)
 {
 double c;
 int nolter=0;
 do
 {
 c=(a+b)/2;
 if(f(a)*f(c)<0)
 {
 b=c;
 }
 else
 {
 a=c;
 }
 cout<<nolter<<"\t"<<a<<"\t"<<b<<"\t"<<c<<"\t"<<f(c)<<endl;
 nolter++;
 }
 while((fabs(f(c))>tol)&&(nolter<n));
 return c;
 }
gracias de antemano.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ivancea96 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
sabe cómo hacer para que realice las operaciones dada una función del usuario? Si lo que quieres es que el usuario te ponga una función, la única posibilidad que te queda en C++ es interpretar y transformar la cadena de entrada, pero es algo más complicado. En C++, en vez de <math.h>, <cmath>. 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Antoniio 
								
								 Desconectado 
								Mensajes: 121
								
								   | 
 
Sí, sin duda es más complicado, no supe hacerlo por eso vengo a ver si alguien me puede hechar una mano para explicarme más o menos cómo hacer todo ese proceso, gracias :3 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| someRandomCode 
								
								 Desconectado 
								Mensajes: 250
								
								   | 
 
Vos te referis a esta biseccion? click aca O sea, a buscar raices por aproximacion? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Antoniio 
								
								 Desconectado 
								Mensajes: 121
								
								   | 
 
Sí, puedo llegar a la raíz con el código pero no se cómo hacer para que el usuario ingrese la función y con ella realizar las operaciones, no con a y b como lo tengo... |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| someRandomCode 
								
								 Desconectado 
								Mensajes: 250
								
								   | 
 
a y b son puntos continuos en la recta?Porque la idea es que hay varios criterios a cumplir para que puedas usar este metodo..
 Basicamente igual vas a tener que cargarlo por pantalla, y en cuanto a la ecuacion tendras que hacer un parser lamentablemente..
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Antoniio 
								
								 Desconectado 
								Mensajes: 121
								
								   | 
 
Sí, el problema es que me piden sacar la aproximación a una raíz de una función dada, pero no se cómo implementar el código con una función dada por el usuario, sólo pidiendo los puntos a y b...no sé cómo hacer para que en lugar de pedir dos puntos pida la ecuación y realice lo mismo.. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ivancea96 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
Como dijo someRandomCode, tendrás que parsear la ecuación. Tendrás que interpretar la cadena de caracteres, y de ahí sacar las operaciones (manteniendo prioridad en los operadores), los coeficientes, y las variables. Salvo que solo lo quieras hacer con ecuaciones que sigan un patrón (Ej. "aX^2+bX+c"), tendrás que interpretarlo con todas sus posibilidades, y eso ya te va a llevar más tiempo.
 
 Si real, realmente quieres hacerlo ahora, te aconsejo apartarte de ese proyecto momentaneamente y ponerte con lo otro. Pensar en cómo lo harás, pensar en cómo mantendrás el orden de los paréntesis, en como cambiarás las variables por tus valores, etc.
 
 Para ver operadores, solo es comparar los caracteres (str[ i ] == '+'), y los números los separas y conviertes a variables enteras o flotantes con el set de funciones <stof, stoi...>.
 
 Dale tiempo a pensar el algoritmo.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Antoniio 
								
								 Desconectado 
								Mensajes: 121
								
								   | 
 
Sí, tal parece que es un problema que con lo que sé de c++ no podré realizar por el momento. Ahora, que pasaría si yo incluyo las funciones?, eso debe ser mucho más fácil, osea, no pedir nada al usuario, que sean supongamos 3 funciones ya establecidas y hacer las operaciones con esas. Sinceramente no se hacerlo, algún consejo para hacerlo de esa forma?, gracias de antemano. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ivancea96 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
Crea las funciones float func1(float x, float y);
 Y luego las introduces como sea. ¿Qué es lo que no das hecho? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Metodo bisección para cualquier funcion dada Programación C/C++
 | rob1104 | 5 | 13,978 |  18 Febrero 2017, 05:33 am por yorfrank
 |  
						|   |   | Problema al usar la función fscanf para leer datos en un vector. Programación C/C++
 | dvc | 4 | 5,529 |  15 Abril 2012, 22:16 pm por dvc
 |  
						|   |   | fread o alguna funcion para leer un bloc de notas Programación C/C++
 | Erres | 8 | 7,742 |  5 Octubre 2012, 18:19 pm por Erres
 |  
						|   |   | La función de iOS 8 para leer tarjetas de crédito con la cámara puede ser un ... Noticias
 | wolfbcn | 0 | 1,541 |  8 Junio 2014, 01:32 am por wolfbcn
 |  
						|   |   | Error al leer datos función read Programación C/C++
 | jose94 | 4 | 3,634 |  3 Agosto 2017, 20:13 pm por jose94
 |    |