使用符号数学工具箱™测量单位。本页面展示了如何定义单位,在方程(包括微分方程)中使用单位,以及验证表达式的尺寸。
使用负载单元symunit
.
u = symunit;
通过使用指定一个单元u。
单位
.例如,指定的距离5
米,重量50
千克,速度是10
公里每小时。在显示的输出中,单位放在方括号中[]
.
d = 5 * u。M w = 50*u。Kg s = 10*u.km/u.hr
D = 5*[m] w = 50*[kg] s = 10*([km]/[h])
提示
使用制表符展开来查找单位名称。类型u。
,按选项卡,然后继续打字。
单元与其他符号表达式一样,可以用于任何标准操作或函数。单位不会自动简化,这提供了灵活性。支持单元的常用替代名称。金宝app不支持复数。金宝app
添加500
米,2
公里。由此产生的距离不会自动简化。
d = 500 * u。m + 2 * u.km
D = 2*[km] + 500*[m]
简化d
通过使用简化
.的简化
功能自动选择单元简化为。
d =简化(d)
d =(5/2) *(公里)
而不是自动选择一个单位,转换d
对一个特定的单位使用unitConvert
.转换d
米。
d = unitConvert (d, u.m)
d = 2500 * [m]
有更多的单位转换和单位系统的选择。看到单位转换和单位系统.
用距离求速度d
是交叉的50
秒。结果有正确的单位。
t = 50 *美国;s = d / t
s = 50 * ([m] / [s])
默认情况下,假定温度代表差异而不是绝对测量值。例如,5 * u。摄氏
假设表示5摄氏度的温差。这个假设允许对温度值进行算术运算。
为了表示绝对温度,使用开尔文,这样你就不必区分绝对温度和温度差。
转换23
从摄氏度到开尔文,先把它看成一个温度差,再把它看成绝对温度。
u = symunit;T = 23 * u.Celsius;英国diffK = unitConvert (T)
diffK = 23 * [K]
absK = unitConvert (T,英国,“温度”,“绝对”)
absK = (5923/20) * [K]
在较长的表达式中,视觉检查单位是很困难的。通过验证方程的尺寸,可以自动检查表达式的尺寸。
首先,定义运动学方程
,在那里v
代表着速度,一个
代表加速度,年代
表示距离。假设年代
的单位是公里,其他单位都是国际单位制的基本单位。演示尺寸检查,单位一个
是故意不正确的。
Syms v v0 a s u = symunit;eqn = (v * u.m /美国)^ 2 = = (v0 * u.m /美国)^ 2 + 2 * * u.m /美国* * u.km
eqn = v ^ 2 * ([m] ^ 2 / [s] ^ 2) = = v0 ^ 2 * ([m] ^ 2 / [s] ^ 2) +(2 * *年代)*(((公里)* [m]) / [s])
观察出现在eqn
通过使用findUnits
.返回的单位表示千米和米都用来表示距离。
findUnits (eqn)
Ans = [[km], [m], [s]
使用时检查单位尺寸(如长度、时间等)是否相同checkUnits
与“兼容”
输入。MATLAB®假设符号变量是无量纲的。checkUnits
返回逻辑0
(假
),这意味着单位是不相容的,并且不具有相同的物理维度。
checkUnits (eqn“兼容”)
逻辑0
看着eqn
,加速度一个
有不正确的单位。正确的单位和重新检查兼容性再次。eqn
现在有兼容的单位。
eqn = (v * u.m /美国)^ 2 = = (v0 * u.m /美国)^ 2 + 2 * * u.m /美国^ 2 * * u.km;checkUnits (eqn“兼容”)
逻辑1
现在,要检查每个维度是否一致地由相同的单位表示,请使用checkUnits
与“一致”
输入。checkUnits
返回逻辑0
(假
),因为米和公里都是用来表示距离eqn
.
checkUnits (eqn“一致”)
逻辑0
转换eqn
以使单位一致。运行checkUnits
一次。eqn
具有兼容和一致的单元。
eqn = unitConvert (eqn“SI”)
eqn = v ^ 2 * ([m] ^ 2 / [s] ^ 2) = = v0 ^ 2 * ([m] ^ 2 / [s] ^ 2) + (2000 * * s) * ([m] ^ 2 / [s] ^ 2)
checkUnits (eqn)
ans = struct with fields: Consistent: 1 Compatible: 1
当你用完单位,只需要无量纲方程或表达式时,用separateUnits
.
[eqn,单位]= separateUnits (eqn)
eqn = v ^ 2 = = v0 ^ 2 + 2000 * *年代单位= 1 * ([m] ^ 2 / [s] ^ 2)
你可以通过乘法返回原始方程的单位eqn
与单位
并扩展结果。
扩大(eqn *单位)
ans = v ^ 2 * ([m] ^ 2 / [s] ^ 2) = = v0 ^ 2 * ([m] ^ 2 / [s] ^ 2) + (2000 * * s) * ([m] ^ 2 / [s] ^ 2)
要从表达式中计算数值,使用潜艇
,并使用双
或vpa
.
解决eqn
为v
.然后求值v
在哪里v0 = 5
,一个= 2.5
,s = 10
.将结果转换为double。
v =解决(eqn, v);v = (2);%选择正溶液vSol = subs(v,[v0 a s],[5 2.5 10]);vSol =双(vSol)
vSol = 223.6627
在微分方程中使用单位就像在标准方程中一样。本节介绍如何通过推导速度关系在微分方程中使用单位v=v0+一个t和 从加速度的定义开始 .
用国际单位制符号表示加速度的定义。假设速度V
单位,V
必须对正确的单位进行区分,如T = T *美国
而不只是t
.
syms V(t) a u = symunit;T = T *美国;A = A *u.m/ us ^2;加速度%(米/秒)eqn1 = A == diff(V,T)
eqn1(t) = a*([m]/[s]^2) = diff(V(t), t)*(1/[s])
因为速度V
是未知的,没有单位,eqn1
具有不兼容和不一致的单元。
checkUnits (eqn1)
ans = struct with fields: Consistent: 0 Compatible: 0
解决eqn1
为V
条件是初始速度为v0.结果就是这个方程v (t)=v0+一个t.
syms v0 cond = V(0) == v0*u.m/ us;eqn2 = V == dsolve(eqn1,第二)
eqn2(t) = V(t) == v0*([m]/[s]) + a*t*([m]/[s])
通过替换来检查结果的尺寸是否正确园艺学会(eqn2)
成eqn1
和使用checkUnits
.
checkUnits(潜艇(eqn1 V, rhs (eqn2)))
ans = struct with fields: Consistent: 1 Compatible: 1
现在,推导
.因为速度是距离的变化率,代入V
对距离求导年代
.再次,考虑到年代
单位,年代
必须对正确的单位进行区分,如T = T *美国
而不只是t
.
S(t) eqn2 = subs(eqn2,V,diff(S, t))
eqn2 (t) = diff (S (t), t) * (1 / [S]) = = v0 * ([m] / [S]) + * t * ([m] / [S])
解决eqn2
所覆盖的初始距离为0
.得到预期的形式年代
通过使用扩大
.
cond2 = S(0) == 0;eqn3 = S == dsolve(eqn2,cond2);eqn3 =扩大(eqn3)
eqn3(t) = S(t) == t*v0*[m] + ((a*t^2)/2)*[m]
您可以将这个等式与符号工作流中的单位一起使用。或者,你可以使用返回右边的单位来移除园艺学会
,使用分离单元separateUnits
,并使用得到的无单位表达式。
[S units] = separateUnits(rhs(eqn3))
S(t) = (a*t^2)/2 + v0*t units(t) = [m]
当需要从表达式中计算数值时,使用潜艇
,并使用双
或vpa
.
求旅行的距离8
秒,v0 = 20
和一个= 1.3
.将结果转换为double。
S = subs(S,[v0 a],[20 1.3]);dist = S (8);dist =双(经销)
dist = 201.6000
checkUnits
|findUnits
|isUnit
|newUnit
|separateUnits
|symunit2str
|unitConversionFactor
|unitConvert