Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Funcion de error, erf(X)

Estas en el tema de Funcion de error, erf(X) en el foro de C/C++ en Foros del Web. Hola a todos, soy un novato en la programación y es que no se como arreglar el problema que tengo. Estoy programando en Visual Studio ...
  #1 (permalink)  
Antiguo 28/07/2010, 09:21
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Funcion de error, erf(X)

Hola a todos,

soy un novato en la programación y es que no se como arreglar el problema que tengo.
Estoy programando en Visual Studio 2008 en c++. Quiero utilizar la función de error, erf(x) o erfc(x). He visto por la red que añadiendo el encabezado math.h (#include "math.h") el problema estaría solucionado ya que estaría ahí incluido. Me pasó lo mismo con anterioridad para el exponencial, exp(x), y el logaritmo, log(x). Pero resulta que ahora al utilizar erf(x) no funciona (y con el logaritmo y exponencial no tuve ningún problema). Al compilar me da el error C3861 y me dice que no se ha encontrado el identificador. ¿Puede alguien ayudarme en saber qué pasa y comó arreglarlo? #include "stdafx.h" también está incluido en el código.

gracias y un saludo
  #2 (permalink)  
Antiguo 28/07/2010, 09:52
 
Fecha de Ingreso: septiembre-2008
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Funcion de error, erf(X)

En teoria com hacer include de <math.h> deberia bastar pero OJO te hablo desde Linux y compilando con GCC, para windows quizas el compilador o el sistema no tiene definida esa funcion.

Saludos.
  #3 (permalink)  
Antiguo 28/07/2010, 10:59
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Funcion de error, erf(X)

en C/C++,
#include "cabecera.h"
y
#include <cabecera.h>
Representan dos cosas diferentes

la primera indica que va a buscar el archivo de cabecera en el directorio actual, y la segunda indica que va a buscar en los directorios estandar.

Dado que tu utilizas la libreria math.h, la cual es una libreria estandar tu deberias utilizar la segunda opcion
  #4 (permalink)  
Antiguo 28/07/2010, 15:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Funcion de error, erf(X)

Para compilar con el Gcc tambien tenes que agregar la bandera "-lm". Supongo que debe ser asi en otros compiladores.

Asi seria:
gcc miprigrama.c -o miprograma -lm
  #5 (permalink)  
Antiguo 29/07/2010, 01:08
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Funcion de error, erf(X)

Gracias djrony y margarito04, pero tu solución no ha funcionado. Me da el mismo error al compilar.

Sam90 gracias a ti también, pero tengo un problema, no he entendido tu respuesta, o mejor dicho no se como hacer eso que me dices. Soy un novato muy novato. ¿Me podéis explicar qué es el Gcc y lo de la banderita, cómo hacerlo?

Mil gracias
  #6 (permalink)  
Antiguo 29/07/2010, 08:01
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Funcion de error, erf(X)

No conosco Visual Studio. Nunca he trabajado con el... pero supongo que debes buscar las opciones de compilacion. Ir a la parte de "linker" y ahi agregar la libreria matematica!
  #7 (permalink)  
Antiguo 29/07/2010, 09:16
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Funcion de error, erf(X)

podrias mostrarno el codigo?
  #8 (permalink)  
Antiguo 02/08/2010, 03:19
 
Fecha de Ingreso: julio-2010
Mensajes: 3
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Funcion de error, erf(X)

Gracias por las respuestas. Pero iré por partes. El codigo es el siguiente (al final he decidido emplear Boost):

#include "boost/math/special_functions/erf.hpp"
#include <iostream>
using namespace std;

int main()
{
double x;
x = erf(2);
cout << x << endl;

return 0;
}


Pero ahora tengo otros problemas. Este codigo me da error. El problema es que los include de Boost están todos escritos así:

<boost/math/special_functions/erf.hpp>

Y el error se corrige escribiéndolo así:

"boost/math/special_functions/erf.hpp"

Pero claro, así debería cambiar una infinidad de líneas y me imagino que esto se debe solucionar de otra forma. Os agradecería que me echarais un cable.

Gracias a todos.
  #9 (permalink)  
Antiguo 02/08/2010, 16:13
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Funcion de error, erf(X)

Supongamos que bajaste los archivos de la libreria y que los tienes en la siguiente carpeta:

C:\boost_X_XX_X

En Visual Studio seleccionas:

Tools>Options>Projects and Solutions>VC++ Directories

Y en la ventana actual arriba a la derecha, en donde dice "Show directories for:" selecciona Include files y agregas el directorio "C:\boost_X_XX_X" a la lista.

Con lo anterior deberías poder compilar lo siguiente:

Código C++:
Ver original
  1. #include <boost/math/special_functions/erf.hpp>
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     double x = boost::math::erf(2);
  8.     cout << x << endl;
  9.  
  10.     return 0;
  11. }

Observa la forma de invocar erf() a través del espacio de nombres boost::math.

Saludos.
  #10 (permalink)  
Antiguo 02/08/2010, 16:37
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Funcion de error, erf(X)

lo que dice sam90 es
gcc ./main.c -lm

-lm es para enlazar la librería math.h
  #11 (permalink)  
Antiguo 02/08/2010, 16:41
 
Fecha de Ingreso: julio-2010
Mensajes: 153
Antigüedad: 13 años, 9 meses
Puntos: 1
Respuesta: Funcion de error, erf(X)

Cita:
Iniciado por iwkillyou Ver Mensaje
lo que dice sam90 es
gcc ./main.c -lm

-lm es para enlazar la librería math.h
ignoren esto : P

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:13.