2010-07-31 33 views
9

Tengo una pregunta básica para todos los expertos en matemáticas que hay.¿Métodos para convertir fórmulas matemáticas en código en Matlab, C++, etc.?

"Si tengo un trabajo académico, ¿cuál es la forma más fácil de convertir una ecuación matemática simple en código de trabajo Matlab (o C++)?"

Idealmente, habría una herramienta de conversión Latex >> Matlab (o C++).

Sin embargo, en su defecto, ¿existe una "hoja de trucos" que contenga todos los símbolos matemáticos comunes y sus palabras clave de implementación equivalentes en Matlab (o R, o C++)?

+2

Probablemente esta no sea la respuesta que está buscando: vaya a unversity, tome por lo menos uno o dos semestres matemáticos, a menos que pueda leer y entender esos documentos académicos, y también aprenda Matlab/y o C++. Entonces, tal vez, podrá convertir un papel en código. En mi humilde opinión no hay un atajo para esto. –

+2

El objetivo de la programación es traducir las cosas que las personas pueden leer y comprender a las cosas que las máquinas pueden ejecutar. – user401947

+0

Gracias por sus comentarios, apreciados. – Contango

Respuesta

7

Use Mathematica Symbolic Computation.

Puede introducir ecuaciones matemáticas directamente en Mathematica, luego exporte el resultado como código C.

Siga ajustando la ecuación hasta que la representación sea idéntica a la ecuación original en el trabajo académico. Luego puede conectar sus propios parámetros y Mathematica calculará el resultado para usted.

Incluso puede hacer cosas interesantes como pedirle que diferencie la ecuación, y generará el diferencial e imprimirá la ecuación resultante.

Puede llamar Mathematica de cualquier idioma, incluyendo .NET, Q, Python, Java, etc.

Incluso se puede compilar el programa Mathematica en un ensamblado de .NET e incrustarlo en su aplicación.

Mathematica también emitirá código Java o C que coincida con la fórmula matemática que acaba de ingresar.

+0

Al igual que en el caso de cualquier otro lenguaje de programación, debe cumplir con reglas estrictas al ingresar expresiones en Mathematica (a pesar de que estas expresiones están diseñadas para parecerse a la notación matemática para la legibilidad). No tengo conocimiento de que Mathematica pueda producir código compatible con Java o .NET. – Szabolcs

+7

Sí, Mathematica tiene funciones para importar un subconjunto de fórmulas LaTeX, incluso tiene una función para tratar de adivinar lo que significan. Pero necesita comprender el significado de las fórmulas y corregirlas usted mismo. Tome, por ejemplo, 'ToExpression [" $ J_3 (x) $ ", TeXForm]'. Te da una función de Bessel. No hay ninguna garantía de que el autor del documento original en realidad significara una función de Bessel por 'J'. Como muchos otros han señalado, hay muchas herramientas que ayudan con la conversión de una fórmula entre diferentes representaciones, pero en última instancia depende de usted comprenderlas y hacer que el progreso funcione. – Szabolcs

9

Nunca he visto algo así. La mayoría de la notación matemática está escrita para ser entendida por una persona de (al menos) inteligencia razonable, por lo que a menudo omite todo tipo de detalles que serían necesarios para producir código de trabajo. Si tuviera una herramienta de este tipo, dudo que produzca resultados utilizables más de (tal vez) el 10% del tiempo.

El reverso parece mucho más sostenible: la producción de notación matemática legible a partir del código (especialmente de algo como Matlab) suena mucho más razonable. Es mucho más fácil omitir la información que está presente que tratar de sintetizar la información que falta.

+1

Bastante cierto. Pero a veces sería muy útil crear un script de línea de comandos (en algún idioma) a partir de una expresión encontrada en un documento. Sin embargo, un problema importante es que la mayoría de los documentos están en formato PDF, por lo que las fórmulas no son más que objetos gráficos ... –

+2

Pero lo contrario tiene un problema muy similar: cuando quiero entender qué es un algoritmo, especialmente un uno matemático, puedo profundizar en el código (un proceso de días o semanas) o podría pedirle al autor un bosquejo breve y comprensible para los humanos. No creo que este último se pueda automatizar fácilmente. –

+0

@Doc Brown: No me malinterpreten: no espero ver una herramienta para convertir grandes porciones de (digamos) C++ en descripciones realmente legibles pronto. No obstante, puedo al menos * imaginar * algo así que produzca resultados a medio utilizar, en los que me resulta difícil imaginarme yendo en la otra dirección. –

1

No es posible. En general, las expresiones matemáticas en los documentos están hechas para que los humanos las entiendan, como dijo Jerry Coffin. Debido a esto, hay todo tipo de problemas. Uno que creo fuera de mi cabeza es la optimalidad. El código (matemático) para el consumo humano raramente es óptimo, un mal ejemplo es la secuencia de Fibonacci. Nadie escribiría el código de Fibonacci ya que los humanos lo entienden.

Por lo tanto, incluso si obtuvo el código analizado, todavía tendrá mucho trabajo por hacer, es lo mismo que escribirlo usted mismo.

0

La pregunta se basa en un supuesto básico - ordenadores hacen todo mejor. Este no es el caso.

Las computadoras y específicamente las máquinas computacionales tienden a realizar tareas iterativas mejor que los humanos y las tareas cognitivas son peores. ¿Las matemáticas que intenta convertir son iterativas o cognitivas?Si es iterativo, entonces el procedimiento estándar - para x do n veces o while (criterio) hacer etc ... sería simple de usar para tareas iterativas. Si profundizas en la inteligencia artificial y el aprendizaje automático, existe una gran cantidad de información sobre cómo se supone que las computadoras hacen AI y lo hacen bien. Supongo que el que pregunta está pidiendo ayuda desde un punto de vista cognitivo y no iterativo. De ahí el problema y la falta de solución. Si la tarea es cognitiva para implementar, las máquinas computacionales no te ayudarán.

Cuestiones relacionadas