MATLAB: Are the symbolic units not evaluated by a square root

square rootsymbolicunits

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?

Best Answer

  • 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.