évaluer la partie numérique d'une variable « sym »
-
21-12-2019 - |
Question
J'ai besoin d'évaluer la partie numérique d'une variable "sym" dans MATLAB (quelque chose comme la fonction "evalf" en maple), par exemple j'ai cette variable sym :
(12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)
"evalf" en maple me donne 12.48019224*EE*II/(AA*ll^4*ro), existe-t-il un moyen de faire cela dans MATLAB ?
La solution
Je pense que vous recherchez le généracodeagcode (arithmétique de précision variable) fonction
syms EE II AA ll ro
y = (12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)
vpa(y)
qui retourne
ans =
(12.48019215375377223869826038978*EE*II)/(AA*ll^4*ro)
Autres conseils
MATLAB a un simplify
commande, mais gardez à l'esprit que la boîte à outils symbolique n'aime pas évaluer pour donner des décimales, elle essaiera de tout conserver en valeurs fractionnaires, car c'est de toute façon plus précis.
syms('EE','AA','ll','II','ro')
simplify((12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)))
Cela se réduira à ce qui suit
-(12*EE*II*(8*39^(1/2) - 51))/(AA*ll^4*ro)
C'est vraiment à vous de décider si cela vous convient davantage, mais je suggérerais de garder les choses en fractions plutôt qu'en décimal.Plus de précision, c'est mieux.
Le eval
la fonction pourrait également vous être utile, mais cela aussi la gardera fractionnaire.Utiliser cela vous donnera
(13722116389931*EE*II)/(1099511627776*AA*ll^4*ro)