测量教程单元
使用符号数学工具箱™使用测量单元。此页面显示了如何定义单元,在方程式中使用单元(包括微分方程),并验证表达式的尺寸。
定义和转换单位
通过使用Symunit
。
u = symunit;
通过使用你。
单元
。例如,指定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])
提示
使用标签扩展查找单位的名称。类型你。
, 按标签,并继续打字。
单位像其他符号表达式一样对待,可用于任何标准操作或功能。单位不会自动简化,这提供了灵活性。支持单位的常见替代名称。金宝app不支持复数。金宝app
添加500
仪表和2
公里。结果距离不会自动简化。
d = 500*u.m + 2*英国
d = 2*[km] + 500*[M]
简化d
通过使用简化
。这简化
功能选择要返回的单元。
D =简化(D)
d =(5/2)*[km]
转变d
通过使用unitConvert
。转变d
到米。
d = unitConvert(D,U.M)
D = 2500*[M]
有关更多单元转换和单元系统选项,请参见单位转换和单元系统。
如果距离找到速度d
被旅行50
秒。结果具有正确的单位。
t = 50*美国;S = D/T
s = 50*([m]/[s])
使用绝对或差异形式的温度单位
默认情况下,假定温度代表差异,而不是绝对测量。例如,5*U.Celsius
假定代表5摄氏度的温度差。此假设允许对温度值进行算术操作。
为了表示绝对温度,请使用开尔文(Kelvin),因此您不必将绝对温度与温度差区分开。
转变23
摄氏摄氏度至开尔文,首先将温度视为温度差,然后将温度视为绝对温度。
u = symunit;t = 23*u.celsius;diffk = unitconvert(t,英国)
diffk = 23*[k]
absk = unitconvert(t,英国,'温度',“绝对”)
ABSK =(5923/20)*[k]
因为值0
次符号单元作为无量纲返回0
使用时Symunit
,您可以使用单元格数来表示0
学位。
例如,转换0
摄氏度至华氏度。
tc = {0,u.celsius};tf = unitConvert(TC,U.Fahrenheit,“温度”,“绝对”)
tf = 32*[华氏度]
验证尺寸
在更长的表达式中,很难在视觉上检查单元。您可以通过验证方程式的尺寸自动检查表达式的尺寸。
首先,定义运动学方程
, 在哪里v
代表速度,一种
代表加速度,并s
代表距离。认为s
以公里为单位,所有其他单位都在SI基础单元中。为了证明维度检查,一种
故意不正确。
Syms V V0 A S U = Symunit;eqn =(v*u.m/u.s)^2 ==(v0*u.m/u.s)^2 + 2*a*u.m/u.s*s*s*u.km
eqn = v^2*([m]^2/[s]^2)== v0^2*([m]^2/[s]^2) +(2*a*s)*([[[[[[[[[[[[[[[[[[[[[km]*[m])/[s])
观察出现在eqn
通过使用Findunits
。返回的单元显示公里和米都用来表示距离。
Findunits(eqn)
ans = [[km],[m],[s]]
检查单元是否具有相同的尺寸(例如长度或时间)checkunits
与'兼容的'
输入。MATLAB®假设符号变量是无量纲的。checkunits
返回逻辑0
((错误的
),这意味着单元不兼容,而不是相同的物理维度。
checkunits(eqn,“兼容”)
ans =逻辑0
看着eqn
,加速度一种
有不正确的单位。纠正单位并重新检查以再次兼容。eqn
现在有兼容的单元。
eqn =(v*u.m/u.s)^2 ==(v0*u.m/u.s)^2 + 2*a*u.m/u.s^2*s*s*u.km;checkunits(eqn,“兼容”)
ans =逻辑1
现在,要检查每个维度是否始终由同一单元表示,请使用checkunits
与'持续的'
输入。checkunits
返回逻辑0
((错误的
),因为仪表和公里数都用于表示距离eqn
。
checkunits(eqn,“一致”)
ans =逻辑0
转变eqn
到SI基础单元以使单位保持一致。跑checkunits
再次。eqn
具有兼容和一致的单位。
eqn = unitconvert(eqn,'si')
eqn = v^2*([m]^2/[s]^2)== v0^2*([m]^2/[s]^2) +(2000*a*s)*([m]^2/[s]^2)
checkunits(eqn)
ANS =带有字段的结构:一致:1兼容:1
完成使用单位并且只需要无量纲的方程式或表达式后,将单位和方程式分开单独的渠道
。
[eqn,单位] =单独的nits(eqn)
eqn = v^2 == v0^2 + 2000*a*s units = 1*([m]^2/[s]^2)
您可以通过乘法返回原始方程eqn
和单位
并扩展结果。
扩展(eqn*单位)
ans = v^2*([m]^2/[s]^2)== v0^2*([m]^2/[s]^2) +(2000*a*s)*([m]^2/[s]^2)
要从您的表达式计算数字值,请使用符号变量代替潜艇
,并使用双倍的
或者VPA
。
解决eqn
为了v
。然后找到一个值v
在哪里V0 = 5
,,,,a = 2.5
, 和s = 10
。将结果转换为两倍。
v = solve(eqn,v);v = v(2);%选择阳性溶液vsol = subs(v,[v0 a s],[5 2.5 10]);VSOL =双(VSOL)
VSOL = 223.6627
在微分方程中使用单元
与标准方程式一样,使用微分方程中的单元。本节显示了如何通过得出速度关系在微分方程中使用单元v=v0+一种t和 从加速的定义开始 。
使用SI单元象征性地表示加速度的定义。鉴于速度v
有单位,您必须区分v
关于正确的单位t = t*美国
不只是t
。
syms v(t)a u = symunit;t = t*u.s;秒内的百分比a = a*u.m/u.s^2;每秒米的加速度%eqn1 = a == diff(v,t)
eqn1(t)= a*([m]/[s]^2)== diff(v(t),t)*(1/[s])
因为速度v
是未知的,没有单位,eqn1
具有不兼容和不一致的单位。
checkunits(eqn1)
ans =带有字段的结构:一致:0兼容:0
解决eqn1
为了v
条件是初始速度为v0。结果是方程式v(t)=v0+一种t。
SYMS V0 COND = V(0)== V0*U.M/U.S;eqn2 = v == dsolve(eqn1,cond)
eqn2(t)= v(t)== v0*([m]/[s]) + a*t*([m]/[s])
通过替换检查结果是否具有正确的尺寸RHS(eqn2)
进入eqn1
并使用checkunits
。
checkunits(subs(eqn1,v,rhs(eqn2)))
ANS =带有字段的结构:一致:1兼容:1
现在,得出
。因为速度是距离的变化率,所以v
与距离的导数s
。再次鉴于s
有单位,您必须区分s
关于正确的单位t = t*美国
不只是t
。
syms s(t)eqn2 = subs(eqn2,v,diff(s,t))
eqn2(t)= diff(s(t),t)*(1/[s])== v0*([m]/[s]) + a*t*([m]/[s])
解决eqn2
条件是覆盖的初始距离是0
。获得预期的形式s
通过使用扩张
。
cond2 = s(0)== 0;eqn3 = s == dsolve(eqn2,cond2);eqn3 =展开(eqn3)
eqn3(t)= s(t)== t*v0*[m] +((a*t^2)/2)*[m]
您可以在符号工作流中使用此方程。另外,您可以使用RHS
,通过使用单独的渠道
,并使用最终的无单位表达式。
[S单位] =单独的nits(RHS(EQN3))
s(t)=(a*t^2)/2 + v0*t单位(t)= [m]
当您需要从表达式计算数字值时,请使用符号变量潜艇
,并使用双倍的
或者VPA
。
找到旅行的距离8
几秒钟V0 = 20
和a = 1.3
。将结果转换为两倍。
s = subs(s,[v0 a],[20 1.3]);dist = s(8);dist = double(dist)
DIST = 201.6000
也可以看看
checkunits
|Findunits
|Isunit
|newunit
|单独的渠道
|symunit2str
|UnitConversionFactor
|unitConvert