8 views (last 30 days)

clear, clc

u = symunit;

d = .025*u.m; %Automatically convert to meters

l = .6*u.m;

A = pi*d^2/4;

g = 9.81*u.m/u.s^2;

E = 207e9*u.Pa;

I = pi*d^4/64;

lambda = 76.5e3*u.N/u.m^3;

omega_n = vpa((pi/l)^2*(g*E*I/(A*lambda))^(1/2),4)

When I plug this in, the units stay the same inside the square root.

Why aren't they evaluated?

Star Strider
on 12 Jan 2020

It appears that the square root is still expressed as a square root, so the units remain the same within it:

omega_n =

27.42*(1037.0*(([Pa]*[m]^6)/([N]*[s]^2)))^(1/2)*(1/[m]^2)

Doing this:

[omega_n,omega_n_u] = separateUnits(omega_n)

produces this:

omega_n =

882.80792016869907152094706300452

omega_n_u =

1*((1/[N]^(1/2)*[Pa]^(1/2)*[m])/[s])

So the units convert correctly. It is necessary to specifically request the conversion.

Star Strider
on 12 Jan 2020

My pleasure.

The reason it did not work the first time is that the units will not convert until you request that they be converted. This likely makes things easier for the Symbolic Math Toolbos, so that it does not have to convert and then re-convert interim results, converting them only when requested at the end.

Sign in to comment.

David Goodmanson
on 13 Jan 2020

Edited: David Goodmanson
on 13 Jan 2020

Hi Lucas,

try your original code but with the last two lines

omega_n = (pi/l)^2*(g*E*I/(A*lambda))^(1/2)

omega_n = vpa(simplify(omega_n),4)

omega_n = 882.8*(1/[s])

Then you don't have to do any conversions yourself, e.g Pa to SI.

Sign in to answer this question.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.