Question

I need to evaluate numeric part of a "sym" variable in MATLAB(something like "evalf" function in maple) for instance I have this sym variable :

(12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)

"evalf" in maple gives me 12.48019224*EE*II/(AA*ll^4*ro), is there any way to do this in MATLAB?

Was it helpful?

Solution

I think that you're looking for the vpa (variable precision arithmetic) function

syms EE II AA ll ro
y = (12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)
vpa(y)

which returns

ans =

(12.48019215375377223869826038978*EE*II)/(AA*ll^4*ro)

OTHER TIPS

MATLAB has a simplify command, but keep in mind that the symbolic toolbox does not like to evaluate to give decimal, it will try to keep everything in fractional values, since that is more accurate anyway.

syms('EE','AA','ll','II','ro')
simplify((12*(51*EE*II - 8*39^(1/2)*EE*II))/(AA*ll^4*ro)))

This will reduce down into the following

-(12*EE*II*(8*39^(1/2) - 51))/(AA*ll^4*ro)

Whether this is more to your liking is really up to you, but I would suggest keeping things in fractions as opposed to decimal. More accuracy is better.

The eval function might also be of some use to you, but that too will keep it fractional. Using that will give you

(13722116389931*EE*II)/(1099511627776*AA*ll^4*ro)
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top