2017-09-12 7 views
1

J'utilise la bibliothèque MathNet.Symbolics à simplyfy expressions comme celle-ci:Comment puis-je calculer la racine carrée dans MathNet.Symbolics

string f = Infix.Print(Infix.ParseOrThrow("A+5*2")) 

Cela fonctionne comme prévu (f = A+10), mais en essayant d'obtenir la racine d'un nombre est beaucoup plus dur que ce à quoi je m'attendais. Par exemple:

string f = Infix.Print(Infix.ParseOrThrow("sqrt(9)")) 

f = "sqrt(9) "au lieu de f = "3" que vous attendez

string f = Infix.Print(Infix.ParseOrThrow("sqrt(x^2)")) 

f = "sqrt(x^2)" insted de f = "x"

string f = Infix.Print(Infix.ParseOrThrow("9^(1/2)")) 

ne fonctionne pas non plus Insted il se simplifie à f = "sqrt(9)"..

Comment puis-je forcer pour calculer la racine carrée d'un nombre/variable?

Y a-t-il d'autres problèmes que je pouvais attendre à rencontrer lors de l'utilisation de la « auto-simplification » de MathNet.Symbolics?

+0

Voir aussi: https://discuss.mathdotnet.com/t/how-do-i-calculate-the-sqrt-in- math-net-symbolics/533 –

Répondre

1

Vous devez exécuter l'expression par la méthode Evaluate:

string f = Infix.Print(Infix.ParseOrThrow("sqrt(9)")); 
double result = Evaluate.Evaluate(null, f);