Autor
|
Tema: Leer y operar bisección con una función (Leído 3,102 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 acaO 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,523
|
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,136
|
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,212
|
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,284
|
8 Junio 2014, 01:32 am
por wolfbcn
|
|
|
Error al leer datos función read
Programación C/C++
|
jose94
|
4
|
3,265
|
3 Agosto 2017, 20:13 pm
por jose94
|
|