主要内容

计量单位教程

使用符号数学工具箱™测量单位。本页面展示了如何定义单位,在方程(包括微分方程)中使用单位,以及验证表达式的尺寸。

定义和转换单位

使用负载单元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 2 v 0 2 + 2 一个 年代 ,在那里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

解决eqnv.然后求值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

微分方程中使用单位

在微分方程中使用单位就像在标准方程中一样。本节介绍如何通过推导速度关系在微分方程中使用单位vv0+一个t v 2 v 0 2 + 2 一个 年代 从加速度的定义开始 一个 d v d 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

解决eqn1V条件是初始速度为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 2 v 0 2 + 2 一个 年代 .因为速度是距离的变化率,代入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

另请参阅

|||||||

相关的话题

外部网站