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:
Lo primero que vamos a hacer es calcularlo. De entrada obtenemos la indeterminación , 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:
Es decir, el resultado de este límite es .
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 ? ¿?¿?¿? O sea, que Wolfram|Alpha nos dice que el resultado es que hemos obtenido nosotros a mano menos
.
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).
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
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
, 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».
¿No falta un paréntesis en el —e^(-t)/t) /….— ?
Yo utilizo WolframAlfa, para comprobar las fórmulas que publico en:
http://enciclopedia.us.es/index.php/Constantes_matemáticas
Espero que no contengan errores.
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:
,donde
, con
la constante de Euler.
Aplicando esta función el resultado es el que se obtiene con WolframAlpha y con Mathematica 8.
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 el programa Mathematica, magnífico software matemático creado por Stephen Wolfram. Y también conoceréis el más-que-buscador Wolfram|Alpha,……
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)
Maple también lo resuelve correctamente:
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. 😛
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
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… Lee más »
Jaja! Era por criticarte algo. 😉 Saludos!
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.
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…
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… Lee más »
[…] Pero hai veces en que o cálculo simbólico non puede ser realizado, por limitacións do propio sistema ou por impedimentos de tipo matemático (por exemplo, hai integrais indefinidas que non se poden escribir explícitamente en termos das funcións habituais). E os programas sempre poden ter erros. […]
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.
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.
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.
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.
Gracias que se puede hacer para mostrar las fechas de los ejes coordenados existe algun comando para eso
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!!! 🙂
MATLAB también falla en el cálculo de esta integral. Devuelve como resultado el valor «0».
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.
en el mathematica 10 si sale el resultado
[…] Pero hai veces en que o cálculo simbólico non puede ser realizado, por limitacións do propio sistema ou por impedimentos de tipo matemático (por exemplo, hai integrais indefinidas que non se poden escribir explícitamente en termos das funcións habituais). E os programas sempre poden ter erros. […]
Entre en Mathematica Limit[(Integrate [(E^-t)/t, {t, 1, x^2 + 1}])/(3 x^2), x -> 0] y da 1/(3 E), que es correcto