2010-04-27 3 views
1

-je construit équations de manière dynamique comme suit:résoudre l'équation mathématique avec une inconnue (équations sont dynamiquement construites)

x + x/3 + (x/3)/4 + (x/3/4)/2 = 50

Maintenant je voudrais évaluer cette équation et obtenir x. L'équation est construite dynamiquement. x est le nœud feuille dans une taxonomie, les 3 autres nœuds sont les super concepts. Le diviseur représente le nombre d'enfants des nœuds enfants.

Existe-t-il une bibliothèque qui permet de construire dynamiquement de telles équations et de résoudre x?

Merci, Chris

Répondre

1

Si c'est le cas, lors de la construction de l'équation, mettez simplement x à 1 et évaluez les lhs. Cela vous donnera LHS = 1 + 1/3 + (1/3)/4 + (1/3/4)/2 = 1,4583 .. ensuite x = calculer rhs/LHS = 50/1,4583

+0

oui ils sont toujours sous cette forme! existe-t-il une bibliothèque Java gérant cela? MERCI – user326667

0

Si vous avez l'intention d'utiliser Java, vous pouvez essayer JAS. Il prétend être capable de résoudre des équations polynomiales.

FTA:

Java Algèbre système (JAS) est un objet orienté, le type et la sécurité approche multi-thread pour l'algèbre informatique. JAS fournit une bibliothèque logicielle bien conçue utilisant les types génériques pour les calculs algébriques implémentés dans le langage de programmation Java . La bibliothèque peut être utilisée comme tout autre logiciel Java ou peut être utilisée interactivement ou interprétée via un frontal front-end Jython (Java Python). Le foyer de JAS est actuellement sur polynômes commutatifs et solubles, bases de Groebner et applications. Par l'utilisation de Java en tant que mise en œuvre langage JAS est 64 bits et multi-core prêt pour le cpu. Est-ce que vos équations sont toujours de cette forme (linéaire en x)?

1

Cela pourrait vous aider à faire de l'algèbre.

Notez que:

x= 3*x/3 = (x*4*3*2)/(4*3*2) 
x+x/3 = 3x/3 + x/3 = 4x/3 

et dans votre cas particulier:

x + x/3 + (x/3)/4 + (x/3/4)/2 = (x*4*3*2)/(4*3*2) + (x*4*2)/(4*3*2) + (x*2)/(4*3*2) + (x)/(4*3*2) 
= (4*3*2x + 4*2x + 2*x + x)/(4*3*2) 

Peut-être que si vous pouvez trouver un moyen d'avoir le côté gauche réécrite comme une seule grande fraction comme celui-ci, le solution viendra beaucoup plus facile. En outre, le facteur le x

(4*3*2x + 4*2x + 2*x + x)/(4*3*2) = x*(4*3*2 + 4*2 + 2 + 1)/(4*3*2) 

résoudre ensuite pour x

50= x*(a/b) 
50*(b/a) = x 

Puisque vous avez un code générant le polynôme, vous devriez être en mesure de générer ce grand (a/b) chose fraction assez facilement aussi. Je n'ai volontairement pas simplifié les multiplications pour qu'il soit clair d'où vient chaque composant.

Questions connexes