11
votes

Des méthodes permettant de convertir des formules mathématiques en code de Matlab, C ++, etc.?

J'ai une question de base pour tous les experts en mathématiques là-bas.

"Si j'ai un papier académique, quel est le moyen le plus simple de convertir une simple équation mathématique en code MATLAB (ou C ++) de travail?"

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

Cependant, en échec, existe-t-il une "feuille de triche" qui contient tous les symboles mathématiques communs et leurs mots-clés équivalents de mise en œuvre dans Matlab (ou R ou C ++)?


3 commentaires

Ce n'est probablement pas la réponse que vous recherchez: Allez à une inverse, prenez au moins un ou deux semestres mathématiques, à moins que vous ne puissiez lire et comprendre ces papiers académiques et apprendre également MATLAB / et ou C ++. Ensuite, peut-être - vous serez en mesure de convertir un papier en code. Imho il n'y a pas de coupe courte à cela.


L'ensemble de la programmation consiste à traduire les choses que les gens peuvent lire et comprendre les choses que les machines peuvent courir.


Merci pour vos commentaires, apprécié.


5 Réponses :


9
votes

Je n'ai jamais vu une telle chose. La plupart des notations mathématiques sont écrites pour être comprises par une personne de (au moins) intelligence raisonnable, il omet souvent toutes sortes de détails nécessaires pour produire du code de travail. Si vous avez eu un tel outil, je doute que cela produirait des résultats utilisables plus que (peut-être) 10% du temps.

L'inverse semble beaucoup plus tenable - produisant une notation mathématique lisible à partir du code (surtout de quelque chose comme Matlab) semble beaucoup plus raisonnable. Il est beaucoup plus facile d'omettre des informations présentes que d'essayer de synthétiser des informations manquantes.


6 commentaires

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


Mais l'inverse a un problème très similaire - lorsque je tiens à comprendre ce que certains algorithmes, espérons une mathématique, je peux me creuser à travers le code (un processus de jours ou de semaines) ou je pourrais demander à l'auteur d'un court-circuité. -Cours interprétable. Je ne pense pas que ce dernier puisse être facilement automatisé.


@Doc Brown: Ne vous méprenez pas: je ne m'attends pas à voir un outil pour convertir de grandes morceaux de (dire) C ++ dans des descriptions vraiment lisibles à tout moment. Néanmoins, je peux au moins imagine une telle chose produisant des résultats utilisables à mi-chemin, où j'ai du mal à imaginer même d'aller dans l'autre sens.


Si vous trouvez un tel outil dans les 10 prochaines années, ce qui peut produire des résultats utiles, laissez-moi savoir ;-)


@Doc Brown. Voir ma dernière réponse.


J'ai ce problème. Je suis une personne d'intelligence raisonnable, mais quand il s'agit d'équations, mon intelligence est limitée. Mon mathématicien essaie toujours de m'aider avec des égaliseurs que je peux mettre en œuvre dans le code, mais c'est difficile parce qu'il ne parle pas d'ordinateur, et je ne parle pas de mathématiques complexes. En fin de compte, je lui dis à Excel .. S'il peut obtenir son résultat dans Excel, je peux le dupliquer en code



1
votes

Ce n'est pas possible. En règle générale, les expressions mathématiques dans des papiers sont faites pour les humains à comprendre, comme l'a dit Jerry Coffin. Pour cette raison, il y a toutes sortes de problèmes. On Je pense que le sommet de ma tête est une optimalité. (Mathématical) Le code de la consommation humaine est rarement optimal, le mauvais exemple est la séquence Fibonacci. Personne n'écrirait le code de Fibonacci alors que les humains le comprennent.

Donc, même si vous avez eu le code analysé, vous aurez toujours beaucoup de travail à faire de la même chose que de l'écrire vous-même.


0 commentaires

11
votes

Utilisez Mathematica Symbolique Computation .

Vous pouvez entrer des équations mathématiques directement dans Mathematica, puis exporter le résultat en tant que code C.

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

Vous pouvez même faire des choses froides telles que la demander de différencier l'équation - et il produira le différentiel et l'impression d'une équation résultante.

Vous pouvez appeler Mathematica à partir de n'importe quelle langue, y compris .NET, Q, Python, Java, etc.

Vous pouvez même compiler le programme Mathematica dans un assemblage .NET et l'intégrer à votre application.

Mathematica émettra également un code Java ou C qui correspond à la formule mathématique que vous venez d'entrer.


2 commentaires

Tout comme dans le cas d'un autre langage de programmation, vous devez vous conformer à des règles strictes lors de la saisie d'expressions dans Mathematica (malgré ces expressions conçues pour ressembler à la notation mathématique pour la lisibilité). Je ne suis pas au courant de Mathematica pouvant produire un code compatible Java ou .NET.


Oui, Mathematica dispose de fonctionnalités pour importer un sous-ensemble de formules de latex, elle a même une fonctionnalité pour essayer de deviner ce qu'ils veulent dire. Mais vous devez comprendre le sens des formules et les corriger vous-même. Prendre par exemple Toexpression ["$ J_3 (x) $", Texform] . Cela vous donne une fonction de bessel. Il n'y a aucune garantie que l'auteur du papier d'origine signifiait réellement une fonction Bessel par j . Comme beaucoup d'autres l'ont souligné, de nombreux outils contribuent à la conversion d'une formule entre différentes représentations, mais il est finalement à vous de les comprendre et de faire le travail de PROG.



3
votes

0 commentaires

0
votes

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

Les ordinateurs et spécifiquement des machines de calculent ont tendance à mieux faire des tâches itératives que les humains et les tâches cognitives aggravent. Les maths que vous essayez de convertir itératif ou cognitif? Si son itératif, la procédure standard - pour x do n fois ou tandis que (critère), etc ... serait simple à utiliser pour des tâches itératives. Si vous expliquez dans l'AI et l'apprentissage de la machine, il existe une mine d'informations sur la manière dont les ordinateurs sont censés faire de l'AI et le faire bien. Je suppose que le questionneur demande de l'aide d'un sens cognitif et non itératif. D'où le problème - et le manque de solution. Si la tâche est cognitive de mettre en œuvre, les machines de calculationnel ne vous aideront pas.


0 commentaires