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 ?

Était-ce utile?

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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top