Tu móvil resuelve ecuaciones, integra y deriva

13 09 2007

Los móviles de ahora tienen una potencia de cálculo muy por encima de cualquier calculadora de bolsillo. Con Calculator J2ME, la calculadora programable para móviles java, puedes crear funciones tan interesantes como la integración, la derivación y la resolución de ecuaciones de cualquier tipo. Y además, representa funciones graficamente. Por supuesto, hace trigonometría, factoriales y sumas.

calc1.jpgcalc3.jpgcalc4.jpg

Puedes instalarte el programa aquí (56 kb). Es un archivo .zip. Extrae los archivos y envía el .jar a tu móvil desde el pc por infrarrojos, bluetooth, tarjeta, cable… También puedes instalarlo directamente desde el móvil entrando en esta dirección desde él:

http://www.garret.ru/~knizhnik/wap.wml . Busca el programa Calculator.

Una vez que lo consigas, puedes seguir leyendo para ver instrucciones de como resolver ecuaciones, integrar y derivar. Para los que nunca han programado, habrá un vídeo explicativo en una próxima entrada. Feliz lectura :D

1. Entendiendo el funcionamiento del programa

Calculator J2ME funciona almacenando expresiones. Una expresion puede ser una operación matemática (2 + 3^2), una función ( f(x)=x^2-3 ), o un valor para una letra/variable ( a = 3.75 ). Puedes crear nuevas expresiones, eliminarlas… Todas se almacenan en la memoria del teléfono para que puedas usarlas cuando quieras. Para que una expresión sea efectiva hay que evaluarla al menos una vez. El programa comprueba que está bien escrita y, dependiendo del tipo que sea, mostrará un resultado:

  1. Si es una operación matemática, mostrará el resultado con muchos muchos muchos decimales.
  2. Si es una función, la guardará en memoria para que puedas utilizarla más tarde de dos maneras:
    • Si tienes una función creada llamada inv(x)=1/x, puedes crear una nueva expresión que sea inv(3), que dará como resultado 0.33333333… = 1/3.
    • También puedes escribir una expresión con la siguiente forma: plot(-3,3,inv). El programa “dibujará” la función inv en el intervalo desde -3 hasta 3.
  3. Por último, si es una variable, guardará su valor en la memoria del teléfono. Por ejemplo, si tienes una expresión del tipo a = 3.75, siempre que escribas a, el programa lo entenderá como 3.75.

IMPORTANTE: Nunca uses el nombre de una función como variable.

2. Definiendo una función para trabajar sobre ella

Antes de empezar a derivar, integrar y hacer esas cosas tan chulas, hay que definir la funcion sobre la que queremos trabajar. En este ejemplo utilizaremos una función muy sencilla: x^3 - 3*x^2 + 2. Para definirla, pulsamos en Menu > New, y con el teclado del teléfono escribimos:

f(x)=x^3 - 3*x^2 + 2

Puedes llamar a la funcion como quieras (g(x), func(x)…). Eso sí, es importante respetar la puntuación. Por ejemplo, el móvil no entiende la expresion 3x^2, sino que hay que escribir 3*x^2. Una vez que la hayas escrito, pulsa en Menu > Evaluate. En apariencia no ha pasado nada. Para comprobar que todo es correcto, crea una nueva expresión (Menu > New), y escribe, por ejemplo, f(3). Cuando evalues la expresión, en la pantalla debería dar el resultado f(3)=2. 3.

3. Factoriales

El factorial es una función matemática que se utiliza mucho en estadística. Por ejemplo, el factorial de 5 es 5 x 4 x 3 x 2 x 1 = 120. Es una buena forma de empezar a probar nuestra calculadora programable, ya que es una función muy sencilla.

Para crear esta función, pulsa en Menu > New y escribe lo siguiente:

fact(n)=n<1.5?1:(n*fact(n-1))

Pulsa en Menu > Evaluate para almacenar la función en memoria. Para probarla, crea una nueva expresión y escribe, por ejemplo, fact(4). Cuando evalues, te aparecerá el resultado en pantalla: 24.

fact2

4. A derivar se ha dicho!

La función más sencilla es derivar. Además, nos hará falta para resolver ecuaciones, ya veréis porqué. La función que crearemos nos pedirá un punto (p. ej. x=3 ) y la precisión (p.ej p=7) y nos dará la derivada de la función en ese punto.

Para crear la “función derivadora”, pulsa en Menu > New y escribe lo siguiente:

der(x,p)=(f(x-10^(-p))-f(x+10^(-p)))/(10^(-p))

f es el nombre de la función que quieres derivar. p es la precisión; cuanto más, mejor, pero sin pasarse.

Menu > Evaluate para almacenar la funcion en memoria.

Ahora probaremos la función. Para ello, crea una nueva expresión y escribe der(3,7). El resultado, si todo es correcto, debe ser 9,0000000… y algunos números detras. Podemos decir que la derivada de x^3 - 3x^2 + 2 en el punto 3 es 9.

Para derivar otras cosas, simplemente vete a Menu > List, pulsa en f(x)=… con el botón central y edita lo que quieras. Puedes escribir f(x)=sin(x) para el seno, f(x)=exp(x) para e^x, log(x) para el logaritmo neperiano…

Derivative

5. Integrar

Integrar ya es algo más dificil. Este algoritmo diabólicamente recursivo pondrá a prueba las capacidades del procesador de tu teléfono.

Utilizaremos la misma función de antes ( f(x)=x^3 - 3*x^2 + 2) y calcularemos la integral definida entre -3 y 3.

Para crear la “función integradora”, pulsa en Menu > New y escribe lo siguiente:

intg(a,b,p,s)=s>p?(f(b)+f(a))/2*(b-a):intg(a,(a+b)/2,p,2*s)+intg((a+b)/2,b,p,2*s))

Imagina que quieres calcular la integral definida de f(x) entre -3 y 3. Para esto crearemos una nueva expresión, y pondremos lo siguiente:

intg(-3,3,1024,1)

-3 y 3 son los límites de integración. 1024 es el número de trocitos en el que dividiremos el área; cuantos más trocitos mejor, pero más lento. El 1 es la variable que controla el progreso de la operación, y debe ser siempre un 1.

El resultado en este caso es -42.

IMPORTANTE: Para calcular áreas, tendrás que poner la función en valor absoluto. En vez de f(x) = … , escribe f(x) = |…|. El símbolo | lo encontrarás en la ayuda del programa o en los símbolos de tu móvil.

600px-Numerical_quadrature_4up

6. Resolver ecuaciones

Lo último que haremos será resolver una ecuación. El procedimiento es muy similar a la integral, y nos permitirá sacar al menos una solución de casi cualquier ecuación.

Imagina que quieres resolver la ecuación x^3 + 2 = 3x^2. Primero, pasa todos los términos a un lado de la ecuación, para que te quede en la forma x^3 - 3x^2 + 2 = 0.

Después introduciremos la ecuación en Calculator J2ME como si fuera una función. Casualmente coincide con la función que llevamos utilizando en todo el curso, que es f(x) = x^3 - 3*x^2 + 2.

La función resolvedora de ecuaciones nos dará un valor de x para el que f(x) = 0, lo que equivale a encontrar una solución de la ecuación.

Y la función “resolvedora” es…

solve(i,p,s)=s>p?-f(i)/der(i,7)+i:solve(-f(i)/der(i,7)+i,p,s+1)

Si te fijas en la estructura, utiliza la derivada. Necesitas tener la función derivada definida y funcionando para que la resolución de ecuaciones funcione.

Para utilizarla, escribiremos lo siguiente en una nueva expresión:

solve(3.5,100,1)

3.5 es una aproximación inicial, un número que creemos que está cerca de la solución. Si tienes dudas, siempre es mejor que pongas un número raro, que no sea “redondo”; p.ej. 3,7234. Es muy importante que la derivada en el punto nunca sea 0.

100 es la precisión. 100 da buenos resultados, pero si ves que puedes poner más y tu teléfono no se queda bloqueado, hazlo.

1, al igual que en las integrales, debe ser siempre 1. No lo cambies.

Este resultado en concreto debería rondar en torno a 2,73, que es, más o menos, 1 + sqr(3). Esta es una de las soluciones de la ecuación x^3 +2 = 3x^2.

newmet

¿Dudas? ¿Problemas? ¿Quieres alguna explicación sobre los métodos utilizados? ¿Has descubierto una función que merecería la pena integrar? Experimenta y, si descubres algo, cuéntalo en los comentarios.

  • Un giro de perspectiva para Google Earth
  • Los 100 mejores juegos gratuitos de los últimos 3 años
  • Creando un Windows gratuito - React OS
  • Todos tus programas en un pendrive
  • Televisión a la carta y gratis a través de Internet : Joost

  • Acciones

    Informacion

    WordPress database error: [Can't open file: 'blog1_comments.MYI' (errno: 145)]
    SELECT * FROM blog1_comments WHERE comment_post_ID = '329' AND comment_approved = '1' ORDER BY comment_date

    Deje un comentario

    usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>