Comment convertir une équation en formules pour des variables individuelles?

.net c# expression-trees logic math

Question

Comment convertir une équation en formules pour des variables individuelles? Je pense à des équations mathématiques telles que:

c^2 = a^2 + b^2

Je voudrais avoir une fonction qui pourrait traiter n'importe quelle formule et me donner les formules de variables individuelles. L'équation ci-dessus produirait ce qui suit:

c^2 = a^2 + b^2

Je voudrais aussi commencer par:

c^2 = a^2 + b^2

et sortie:

c^2 = a^2 + b^2

J'ai examiné les arbres d'expression, mais j'ai du mal à comprendre comment cela fonctionnera. Je souhaite une solution .NET (C #, VB.NET ou F #). Des idées?

Quelque chose comme:

c^2 = a^2 + b^2

Merci.

Réponse acceptée

La résolution d'équations symboliques est un problème complexe et il n'y a pas de solution fermée pour de nombreuses équations. Écrire votre propre système de calcul formel n’est pas trivial, mais vous pourrez peut-être écrire un programme pour une équation simple.

Vous devrez créer un arbre d'expression de la chaîne d'entrée et définir des règles de transformation pour manipuler l'arbre d'expression. Pour résoudre une variable, vous pouvez ensuite effectuer une recherche (guidée par de bonnes méthodes heuristiques pour que le runtime reste acceptable) sur l’espace de l’arborescence des expressions pouvant être dérivée de l’arborescence par plusieurs applications de règles de transformation.


Réponse populaire

C'est un problème non trivial que vous essayez de résoudre ... Je ne pense pas que vous aurez beaucoup de chance d'essayer de le résoudre vous-même. Mieux vaut trouver une application tierce ou une bibliothèque qui le fasse. Un certain nombre de programmes peuvent effectuer l'opération dont vous parlez, tels que Matlab et Maple. En outre, une calculatrice graphique TI-89 peut le faire. Vous pourrez peut-être obtenir les algorithmes dont vous avez besoin d’ Octave , qui est essentiellement une implémentation à source ouverte de Matlab.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi