¿Error en Mathematica 8.0 y en Wolfram|Alpha al calcular un límite?

Creo que la mayoría de los que pasáis por aquí con cierta frecuencia conocéis el programa Mathematica, magnífico software matemático creado por Stephen Wolfram. Y también conoceréis el más-que-buscador Wolfram|Alpha, de grandísima utilidad tanto para cálculos matemáticos como para muchas otras cosas, ¿verdad? Bien, pues os voy a contar una cosa que nos ocurrió el otro día en clase en relación con ellos.

La cuestión, como se puede ver en el título del post, es que parece que tanto Mathematica (la versión 8.0 en este caso) como Wolfram|Alpha dan un resultado erróneo al calcular un cierto límite. Dicho límite, que apareció hace unos días en una de las clases que imparto, es el siguiente:

\displaystyle{\lim_{x \to 0} \cfrac{\displaystyle{\int_1^{x^2+1} \cfrac{e^{-t}}{t} \; dt}}{3x^2}}

Lo primero que vamos a hacer es calcularlo. De entrada obtenemos la indeterminación 0 \over 0, que resolvemos usando la regla de L’Hopital (para calcular la derivada del numerador utilizamos la generalización del primer Teorema Fundamental del Cálculo). Al derivar una vez nos queda ya una expresión sencilla de reducir a una única fracción a partir de la cual al volver a sustituir llegamos al resultado final:

\displaystyle{\lim_{x \to 0} \cfrac{\displaystyle{\int_1^{x^2+1} \cfrac{e^{-t}}{t} \; dt}}{3x^2}}=\{L'Hopital \}=\displaystyle{\lim_{x \to 0} \cfrac{\frac{e^{-(x^2+1)}}{x^2+1} \cdot 2x}{6x}}=\displaystyle{\lim_{x \to 0} \cfrac{e^{-(x^2+1)}}{3(x^2+1)}=\cfrac{e^{-1}}{3}}

Es decir, el resultado de este límite es 1 \over {3e}.

Uno de los chicos de clase (Daniel, para más señas) lo intentó calcular después como Wolfram|Alpha. Veamos qué nos dice. Introducimos en él la expresión

limit x->0 (integrate from 1 to (x^2+1) e^(-t)/t)/3x^2

y obtenemos el siguiente resultado:

¿Obtenemos como resultado {1 \over 3} \left ( {1 \over e}-1 \right )? ¿?¿?¿? O sea, que Wolfram|Alpha nos dice que el resultado es que hemos obtenido nosotros a mano menos 1 \over 3.

Veamos ahora qué nos dice Mathematica 8.0. Introducimos en él la expresión

Limit[Integrate[Exp[-t]/t,{t,1,x^2+1}]/(3 x^2),x->0]

y obtenemos el siguiente resultado:

El mismo resultado que el obtenido en Wolfram|Alpha. No era de extrañar, la verdad, pero por probar no perdíamos nada.

Probemos ahora con Derive (la versión 6.0 en este caso):

¡Vaya! En este caso sí obtenemos el resultado correcto.

¿Qué es lo que ocurre? Pues, sinceramente….no lo sé. No sé por qué Mathematica 8.0 y Wolfram|Alpha dan un resultado erróneo, pero el caso es que lo dan. Y aunque no está de más recordar que sólo con el ordenador no es suficiente, pienso que esto no debería ocurrir. Sería magnífico si alguien sabe por qué ocurre esto y nos puede explicar cómo solucionarlo (si es que se puede).

Autor: ^DiAmOnD^

Miguel Ángel Morales Medina. Licenciado en Matemáticas y autor de Gaussianos y de El Aleph. Puedes seguirme en Twitter o indicar que te gusta mi página de Facebook.

22 Comentarios

  1. YO LO SÉ
    YO LO SÉ!!!!!

    Mirad en esta imagen:
    http://farm9.staticflickr.com/8375/8383379452_6b3e7208e8_b.jpg

    Si le añadimos al MATHEMÁTICA a suposición PREVIA de que x\in{\mathbb R}, entonces SÍ que lo resuelve bien.

    El problema puede surgir de que, por defecto, el MAthematica trabaja en VARIABLE COMPLEJA. Si hacéis la integral (sin suposición previa), ANTEs de hacer el límite, la solución que da es… curiosa: “Im[x^2] != 0 || Re[x^2] >= -1” Vamos, que te hace la cuenta como complejos.

    Creo que por ahí viene el “error”.

    Publica una respuesta
  2. Hola,

    En Mathematica 9 la respuesta es correcta.

    Como ya comentaron creo qu el problema está en que para Mathematica las variables son complejas, salvo que se indique lo contrario por lo que Mathematica utiliza la función ExpIntegralEi(z) como resultado de la integral:
    \int \frac{e^{-t}}{t} \, dt= \text{ExpIntegralEi}(-t),donde
    Ei(z)=\int_0^z \frac{e^t-1}{t} dt +\frac{1}{2}(\log(z)-\log(1/z))+\gamma, con \gamma=0,557.. la constante de Euler.

    Aplicando esta función el resultado es el que se obtiene con WolframAlpha y con Mathematica 8.

    Publica una respuesta
  3. Yo lo he probado con Sage 5.4 y también lo calcula bien, eso sí, haciendo la suposición que x>0

    assume(x>0)
    limit(integral(exp(-t)/t, (t, 1, x^2+1))/(3*x^2),x=0)

    –>> 1/3*e^(-1)

    Publica una respuesta
  4. Al final era lo que te comenté en clase, que utiliza números complejos como dice Tito.

    Por cierto, ya que estamos diciendo errores, has puesto cuatro puntos suspensivos. Y después de los tres puntos suspensivos, va mayúscula. 😛

    Publica una respuesta
  5. Yo también he utilizado wolfram alpha para comprobar algunos resultados y me he encontrado con algunos errores, creo que hay que considerar que estas herramientas son solo eso “herramientas” de apoyo y que al final de cuentas la interpretación está de nuestro lado…

    Recuerdo que el año pasado un alumno me mostró que en su calculadora (por cierto de origen chino) afirmaba que la raíz cuadrada de -4 era -2…

    Saludos

    Publica una respuesta
  6. Imaginaba que la cuestión sería, como dijo Daniel en clase y como ha comentado Tito Eliatron, el tema de los complejos, ya que no es la primera vez que Mathematica da un resultado erróneo por trabajar con complejos. La cuestión es que pienso que en este caso no debería usar complejos, ya que no es necesario. De hecho, este ejercicio es de un curso de cálculo en el que no se imparten complejos. Y creo que es ahí donde está el error: trabajar con variable compleja cuando no debería.

    Y puede que no sea el único que lo piensa, ya que como comenta Antonio en la versión 9 de Mathematica ya se muestra el resultado correcto, por lo que interpreto que ellos también vieron un error de interpretación y lo han solucionado.

    Gracias a todos los que habéis probado en otro programas.

    Ah, Daniel, cierto, he puesto un punto de más, pero lo de las mayúsculas como que no lo veo. Puede que la regla sea así en todos los casos (ahora mismo no lo sé), pero tal como lo pienso yo queda bien así, con minúscula :).

    Publica una respuesta
  7. Sólo añadir que wxMaxima 0.8.6 (versión libre análoga a Mathematica) lo calcula correctamente. Y yo me pregunto, ¿se ha tenido que llegar a la versión 9 para solucionarlo? ¿cómo que no se detecto antes? Desde la universidad no uso Mathematica, con Maxima me las arreglo perfectamente.

    Publica una respuesta
  8. Pues entonces es esa solucion la que es incorrecta, no? Porque el limite por la derecha y por la izquierda en R obviamente cumple Re[x^2] >= -1, asi que en principio podria usarse la solucion, -ExpIntegralEi[-1] – Gamma[0, 1 + x^2] – Log[1 + x^2], y la expansion de potencias que Wolfram Alpha ejecuta para esta funcion alrededor de x=0 da el resultado incorrecto…

    Publica una respuesta
  9. Para mí lo importante es que hay muchas personas que en vez de hacer sus cáculos u operaciones creen que la máquina les soluciona sus problemas, y cuando la máquina falla son incapaces de resolver el problema.

    Yo sigo multiplicando de cabeza o a bolígrafo y haciendo cálculo aproximado cerebralmente, con lo que ante cualquier resultado no normal lo reviso hasta verificar todo lo exhaustivamente que puedo que el resultado es correcto.

    No, no soy de una época anterior, trabajo en informatica desde hace 33 años y la realidad no permite lujos tontos, pero una buena aproximación propia hacia el resultado es mejor que cualquier máquina. Luego obtendré el resultado exacto.

    Se puede ver en mis aportaciones a este blog que generalmete empiezo por una observación de los casos mas sencillos. No es casualidad, es una buena práctica que te permite conocer por donde se dirige el problema.

    Si lo meto en uno de esos programas informáticos, y me dá la solución, no aprendo nada y encima me puede inducir a errores.

    Si lo resuelvo para casos sencillos y al meterlo en uno de esos programas (el único que uso es Excel como calculadora) me dá la solución general equivalente a lo visto, sigo esperando poder demostrarlo. Y si lo consigo soy muy feliz.

    Publica una respuesta
  10. Creo que es un problema de paréntesis : limit x->0 ( (integrate from 1 to (x^2+1) (e^((-t)/t)))/3x^2 ) me da 1/ 3e

    En la versión gratuita no computa en el tiempo límite, señal de que algo no va.

    Publica una respuesta
  11. Mikel Blasco, es que ese no es el límite. Es este: limit x->0 ( (integrate from 1 to (x^2+1) (e^(-t)/t))/3x^2 ). Es decir, el exponente de e no es -t/t, es solo -t.

    Publica una respuesta
  12. En Maple 9.5 me sale correcto. he intentado enviar el código en latex exportándo el worksheet y me da fórmula inválida.

    Publica una respuesta
  13. Una forma sencilla de ver lo que pasa es que Mathematica te calcule esa integral, la toma en los complejos, lo cual no me extraña, porque una forma sencilla de hacerla es con Variable Compleja, aunque estos programas junto con sus desarrolladores se empeñan en darnos los resultados en función de funciones com la Gamma o la Ei o la ERF, y yo qué se cuántas más; todas ellas bastante innecesarias si lo haces a mano.

    Publica una respuesta
  14. Gracias que se puede hacer para mostrar las fechas de los ejes coordenados existe algun comando para eso

    Publica una respuesta
  15. Excelente Tito Eliatron, ya había migrado a Maple ya que siempre me resolvía las ED en lo complejos, y la verdad es que la interfaz y calidad de Mathematica es la mejor de todas, ahora estoy que no puedo de la felicidad, ya me quedare en Mathematica!!! 🙂

    Publica una respuesta
  16. MATLAB también falla en el cálculo de esta integral. Devuelve como resultado el valor “0”.

    Publica una respuesta
  17. He creado un script en MATLAB que devuelve el valor correcto. No sé qué era exactamente lo que estaba haciendo mal pero por si alguien tiene interés aquí lo dejo:

    clear
    clc
    syms x t;
    I=int(exp(-t)/t,t,1,x^2+1)
    den=3*x^2
    limit(I/den,x,0)

    Si se escribe lo siguiente:

    limit(int(exp(-t)/t,t,1,x^2+1)/3*x^2,x,0)

    El programa da como resultado “0”. Si alguien supiera decirme a qué se debe esta diferencia le estaría muy agradecido.

    Publica una respuesta

Trackbacks/Pingbacks

  1. Bitacoras.com - Información Bitacoras.com... Valora en Bitacoras.com: Creo que la mayoría de los que pasáis por aquí con cierta frecuencia conocéis…
  2. Diferenzas entre o cálculo simbólico e o numérico | fundmat - [...] Pero hai veces en que o cálculo simbólico non puede ser realizado, por limitacións do propio sistema ou por…
  3. Diferenzas entre o cálculo simbólico e o numérico | fundmat - […] Pero hai veces en que o cálculo simbólico non puede ser realizado, por limitacións do propio sistema ou por…

Puedes utilizar código LaTeX para insertar fórmulas en los comentarios. Sólo tienes que escribir
[latex]código-latex-que-quieras-insertar[/latex]
o
$latex código-latex-que-quieras-insertar$.

Si tienes alguna duda sobre cómo escribir algún símbolo puede ayudarte la Wikipedia.

Y si los símbolos < y > te dan problemas al escribir en LaTeX te recomiendo que uses los códigos html & lt; y & gt; (sin los espacios) respectivamente.

Envía un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *