2010-07-02 17 views
6

¿Alguien sabe de una biblioteca de Cálculo para JavaScript? He hecho algo de Google y no he encontrado nada. Solicité la API WolframAlpha, pero eso es caro a menos que elijan otorgarme una subvención.¿Hay una biblioteca de Cálculo para JavaScript?

Idealmente, podría alimentar una matriz de puntos 2D en una función, y recuperar el gráfico (matriz) de los puntos de la derivada.

Si tal biblioteca no existe, crearé una para compartir.

+2

Un punto no tiene una derivada. ¿Intentaría tu biblioteca ideal ajustar una curva a los datos y calcular la derivada de eso? –

+0

¡Sí! Mi biblioteca ideal haría exactamente eso. –

+0

¡Es una idea fascinante y/o increíble! :) Soy un cálculo n00b total, así que, por favor, perdone mi ignorancia, pero: ¿cómo encontraría una curva que se ajuste a los datos (programáticamente)? – tommytwoeyes

Respuesta

5

Como dices que tienes una matriz bidimensional de puntos, supongo que tienes una función de dos variables f(x, y). Eso significa que no tienes un solo derivado. En cambio, obtienes un conjunto de derivadas parciales.

Puede aproximar las derivadas parciales utilizando fórmulas de diferencias finitas.

La derivada parcial con respecto a x en f(x, y) sería (f(x+h, y) - f(x-h, y))/2h.

La derivada parcial con respecto a y en f(x, y) sería (f(x, y+h) - f(x, y-h))/2h.

En estas fórmulas, h es el espacio entre los nodos en su cuadrícula, suponiendo que tiene una cuadrícula regularmente espaciada. Si los espaciamientos horizontales y verticales son diferentes, utilice el espaciado horizontal para el parcial con respecto a x y el espaciado vertical para el parcial con respecto a y.

Actualización: He entendido mal su pregunta. Pensé que la matriz 2-D era una matriz de valores de dominio. Si tiene una lista de valores x y f(x), puede aproximar f'(x) como (f(x+h) - f(x-h))/2h. Esto funcionará en todas partes, excepto en el primer y último punto donde uno de los términos estará fuera de rango. Puede usar (f(x + h) - f(x))/h en el extremo izquierdo y (f(x) - f(x-h))/h en el extremo derecho. La aproximación será menos precisa en los puntos finales, pero eso no se puede evitar.

+0

Creo que en realidad es una función de una variable, f (x) = y. Cada valor de x está espaciado por 1. ¿Puedo seguir usando la fórmula de diferencia finita? –

+0

¡Genial! ¿Sigue siendo válido cuando 'h' es muy grande (1)? –

+0

La precisión dependerá de dos cosas: h^2 y el tamaño de la tercera derivada. Si h = 1, su error será grande a menos que f '' '(x) sea pequeño, es decir, a menos que f sea aproximadamente cuadrático. –

Cuestiones relacionadas