2010-07-31 6 views
9

J'ai une question de base pour tous les experts en mathématiques. "Si j'ai un article académique, quel est le moyen le plus simple de convertir une équation mathématique simple en code Matlab (ou C++)?"Méthodes pour convertir des formules mathématiques en code dans Matlab, C++, etc?

Idéalement, il y aurait un outil de conversion Latex >> Matlab (ou C++).

Cependant, à défaut, y a-t-il une "feuille de triche" qui contient tous les symboles mathématiques communs, et leurs mots-clés d'implémentation équivalents dans Matlab (ou R, ou C++)?

+2

Ce n'est probablement pas la réponse que vous cherchez: aller à l'université, prendre au moins un ou deux semestres de mathématiques, à moins que vous ne puissiez lire et comprendre ces articles académiques, et aussi apprendre Matlab/et C++. Puis - peut-être - vous serez en mesure de convertir un document en code. À mon humble avis il n'y a pas de raccourci à cela. –

+2

Tout le but de la programmation est de traduire des choses que les gens peuvent lire et comprendre en choses que les machines peuvent exécuter. – user401947

+0

Merci pour vos commentaires, apprécié. – Contango

Répondre

7

Utilisez Mathematica Symbolic Computation.

Vous pouvez entrer des équations mathématiques directement dans Mathematica, puis exporter le résultat sous forme de code C.

Continuez à peaufiner l'équation jusqu'à ce que le rendu semble identique à l'équation d'origine dans l'article académique. Vous pouvez ensuite ajouter vos propres paramètres et Mathematica calculera le résultat pour vous.

Vous pouvez même faire des choses sympas, par exemple demander de différencier l'équation - et cela produira le différentiel, et imprimer l'équation résultante.

Vous pouvez appeler Mathematica de toutes les langues, y compris .NET, Q, Python, Java, etc.

Vous pouvez même compiler le programme Mathematica dans un ensemble de .NET et l'intégrer dans votre application. Mathematica émettra également du code Java ou C qui correspond à la formule mathématique que vous venez d'entrer.

+0

Tout comme dans tout autre langage de programmation, vous devez vous conformer à des règles strictes lorsque vous entrez des expressions dans Mathematica (bien que ces expressions soient conçues pour ressembler à la notation mathématique pour la lisibilité). Je ne suis pas au courant que Mathematica soit capable de produire du code compatible Java ou .NET. – Szabolcs

+7

Oui, Mathematica a des fonctionnalités pour importer un sous-ensemble de formules LaTeX, il a même une fonction pour essayer de deviner ce qu'elles signifient. Mais vous devez comprendre la signification des formules et les corriger vous-même. Prenez par exemple 'ToExpression [" $ J_3 (x) $ ", TeXForm]'. Cela vous donne une fonction de Bessel. Il n'y a aucune garantie que l'auteur de l'article original ait réellement signifié une fonction de Bessel par 'J'. Comme beaucoup d'autres l'ont souligné, il existe de nombreux outils qui aident à la conversion d'une formule entre différentes représentations, mais en fin de compte c'est à vous de les comprendre et de faire fonctionner le prog. – Szabolcs

9

Je n'ai jamais vu une telle chose. La plupart des notations mathématiques sont écrites pour être comprises par une personne d'intelligence (au moins) raisonnable, de sorte qu'elle omet souvent toutes sortes de détails qui seraient nécessaires pour produire un code de travail. Si vous aviez un tel outil, je doute qu'il produirait des résultats exploitables plus que (peut-être) 10% du temps. L'inverse semble beaucoup plus tenable - produire une notation mathématique lisible à partir du code (en particulier à partir de quelque chose comme Matlab) semble beaucoup plus raisonnable. Il est beaucoup plus facile d'omettre les informations présentes que d'essayer de synthétiser les informations manquantes.

+1

Tout à fait vrai. Mais parfois, il serait très pratique de créer un script en ligne de commande (dans une langue) à partir d'une expression trouvée dans un document. Cependant, un problème majeur est que la plupart des documents sont au format PDF, et donc les formules ne sont rien de plus que des objets graphiques ... –

+2

Mais l'inverse a un problème très similaire - quand je veux comprendre quel algorithme, en particulier un mathématiquement, je peux me creuser à travers le code (un processus de jours ou de semaines) ou je pourrais demander à l'auteur un bref aperçu humain compréhensible. Je ne pense pas que ce dernier puisse être facilement automatisé. –

+0

@Doc Brown: Ne vous méprenez pas: je ne m'attends pas à voir un outil pour convertir de gros morceaux de (disons) C++ en descriptions vraiment lisibles de sitôt. Néanmoins, je peux au moins * imaginer * une telle chose produisant des résultats utilisables à mi-chemin, où je trouve difficile d'imaginer même aller dans l'autre direction. –

1

Ce n'est pas possible. Généralement, les expressions mathématiques dans les journaux sont faites pour que les humains comprennent, comme l'a dit Jerry Coffin. Pour cette raison, il y a toutes sortes de problèmes. Un que je pense du haut de ma tête est l'optimalité. Le code (mathématique) pour la consommation humaine est rarement optimal, mauvais exemple est la séquence de Fibonacci. Personne n'écrirait le code de Fibonacci comme les humains le comprennent. Par conséquent, même si vous avez analysé le code, vous aurez encore beaucoup de travail à faire, c'est la même chose que de l'écrire vous-même.

0

La question se fonde sur une hypothèse de base - les ordinateurs font tout mieux. Ce n'est pas le cas.

Ordinateurs et machines de calcul spécifiquement ont tendance à faire des tâches itératives mieux que les humains et les tâches cognitives pire. Est-ce que les maths que vous essayez de convertir sont itératifs ou cognitifs?Si c'est itératif alors la procédure standard - pour x faire n fois ou while (critère) faire etc ... serait simple à utiliser pour les tâches itératives. Si vous vous intéressez à l'IA et à l'apprentissage automatique, il existe une mine d'informations sur la façon dont les ordinateurs sont censés faire de l'IA et le faire bien. Je suppose que le questionneur demande de l'aide d'un point de vue cognitif et non itératif. D'où le problème - et le manque de solution. Si la tâche est cognitive à implémenter, les machines de calcul ne vous aideront pas.

Questions connexes