Проверяйте на совместимые размерности и сопоставимые модули
C = checkUnits(
проверки expr
)expr
для совместимых размерностей и сопоставимых модулей и возвращает структуру, содержащую поля Consistent
и Compatible
. Поля содержат логический 0
ложь
) или логический 1
TRUE
) в зависимости от результатов проверки.
expr
имеет совместимые размерности, если все условия имеют те же размерности, такие как длина или время. expr
имеет сопоставимые модули, если все единицы той же размерности могут быть преобразованы друг другу с коэффициентом преобразования 1.
Проверяйте размерности уравнения или выражения. Размерности проверяются, чтобы подтвердить, что уравнение или выражение допустимы.
Проверьте размерности уравнения
при помощи checkUnits
с опцией 'Compatible'
. MATLAB® принимает, что символьные переменные являются безразмерными. checkUnits
функция возвращает логический 0
ложь
) потому что размерности уравнения не совместимы.
u = symunit; syms A B eqn = A*u.m/u.s == B*u.kg/u.s; checkUnits(eqn,'Compatible')
ans = logical 0
Замените u.kg
с u.m
при помощи subs
и повторите проверку. Поскольку размерности теперь совместимы, checkUnits
возвращает логический 1
TRUE
).
eqn = subs(eqn,u.kg,u.m); checkUnits(eqn,'Compatible')
ans = logical 1
Проверка модулей для непротиворечивости является более сильной проверкой, чем совместимость. Модули сопоставимы, когда все единицы той же размерности могут быть преобразованы друг другу с коэффициентом преобразования 1. Например, 1 ньютон сопоставим с 1 кг m/s2, но не с 1 кг cm/s2.
Покажите тот 1
Ньютон сопоставим с 1
kg m/s2 путем проверки expr1
но не с 1
kg cm/s2 путем проверки expr2
.
u = symunit; expr1 = 1*u.N + 1*u.kg*u.m/u.s^2; expr2 = 1*u.N + 1*u.kg*u.cm/u.s^2; checkUnits(expr1,'Consistent')
ans = logical 1
checkUnits(expr2,'Consistent')
ans = logical 0
Покажите различие между совместимостью и непротиворечивостью путем показа того expr2
имеет совместимые размерности, но не сопоставимые модули.
checkUnits(expr2,'Compatible')
ans = logical 1
Проверяйте несколько уравнений или выражений путем размещения их в массив. checkUnits
возвращает массив, элементы которого соответствуют элементам входа.
Проверяйте несколько уравнений на совместимые размерности. checkUnits
возвращает [1 0]
, подразумевать, что первое уравнение имеет совместимые размерности, в то время как второе уравнение не делает.
u = symunit; syms x y z eqn1 = x*u.m == y*u.m^2/(z*u.m); eqn2 = x*u.m + y*u.s == z*u.m; eqns = [eqn1 eqn2]; compatible = checkUnits(eqns,'Compatible')
compatible = 1×2 logical array 1 0
Проверяйте и на совместимые размерности и на сопоставимые модули уравнения или выражения при помощи checkUnits
.
Определите уравнения для x-и y-смещения движущегося снаряда. Проверяйте их модули на совместимость и непротиворечивость.
u = symunit; g = 9.81*u.cm/u.s^2; v = 10*u.m/u.s^2; syms theta x(t) y(t) x(t) = v*cos(theta)*t; y(t) = v*sin(theta)*t + (-g*t^2)/2; S = checkUnits([x y])
S = struct with fields: Consistent: [1 0] Compatible: [1 1]
Второе уравнение имеет совместимые размерности, но противоречивые модули. Это несоответствие состоит в том потому что g
неправильно использование cm вместо m. Переопределите g
и проверяйте уравнения снова. Второе уравнение теперь имеет сопоставимые модули.
g = 9.81*u.m/u.s^2; y(t) = v*sin(theta)*t + (-g*t^2)/2; S = checkUnits([x y])
S = struct with fields: Consistent: [1 1] Compatible: [1 1]
findUnits
| isUnit
| newUnit
| separateUnits
| str2symunit
| symunit
| symunit2str
| unitConversionFactor