主要内容

计量单位教程

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

定义和转换单位

通过使用symunit

U =对称单位;

指定一个单位使用u。单位.例如,指定距离为5米,重量为50公斤,和一个速度10千米每小时。在显示的输出中,单位被放在方括号中[]

D = 5*u。M w = 50*u。Kg s = 10*u.k km/u.h
D = 5*[m] w = 50*[kg] s = 10*([km]/[h])

提示

使用标签展开来查找单位的名称。类型u。,按选项卡,然后继续输入。

单元与其他符号表达式一样,可以在任何标准操作或函数中使用。单位不会自动简化,这提供了灵活性。支持单元的通用替代名称。金宝app不支持复数形式。金宝app

添加500米,2公里。得到的距离不会自动简化。

D = 500*u。M + 2*u.k
D = 2*[km] + 500*[m]

简化d通过使用简化.的简化函数自动选择要简化为的单位。

简化(D)
D = (5/2)*[km]

而不是自动选择一个单位,转换d用到一个特定的单位unitConvert.转换d米。

d = unitConvert(d,u.m)
D = 2500*[m]

有更多的单位转换和单位系统选项。看到单位转换和单位系统

用距离求速度d是交叉的50秒。结果的单位是正确的。

T = 50* us;S = d/t
S = 50*([m]/[S])

使用绝对形式或差异形式的温度单位

默认情况下,假定温度表示差异而不是绝对测量值。例如,5 * u。摄氏假设代表5摄氏度的温差。这个假设允许对温度值进行算术运算。

要表示绝对温度,用开尔文,这样就不用区分绝对温度和温差了。

转换23从摄氏度到开尔文,先把它当作温差,然后再当作绝对温度。

U =对称单位;T = 23*u.摄氏度;diffK = unitConvert(T, uk)
diffK = 23*[K]
abk = unitConvert(T, uk,'Temperature','absolute')
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“兼容”)
Ans =逻辑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“一致”)
Ans =逻辑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,units] = 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 = 5A = 2.5,S = 10.将结果转换为double。

V = solve(eqn, V);V = V (2);%选择正解vSol = subs(v,[v0 a s],[5 2.5 10]);vSol = double(vSol)
vSol = 223.6627

微分方程中使用单位

在微分方程中使用单位就像在标准方程中一样。本节通过推导速度关系来展示如何在微分方程中使用单位vv0+一个t而且 v 2 v 0 2 + 2 一个 年代 从加速度的定义开始 一个 d v d t

用SI单位符号表示加速度的定义。给定速度V单位,V必须对正确的单位进行微分T = T * us不仅仅是t

syms V(t) a u =符号单位;T = T * us;%时间(秒)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,cond)
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 * us不仅仅是t

syms 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 = expand(Eqn3)
eqn3(t) = S(t) == t*v0*[m] + ((a*t^2)/2)*[m]

您可以将这个方程与符号工作流中的单位一起使用。或者,您可以通过返回右边的using来删除单元园艺学会,用separateUnits,并使用得到的无单位表达式。

[S units] = separateUnits(rhs(eqn3))
S(t) = (a*t^2)/2 + v0*t units(t) = [m]

当需要从表达式计算数值时,使用潜艇,并将其转换为数值vpa

求出所经过的距离8秒,V0 = 20而且A = 1.3.将结果转换为double。

S = subs(S,[v0 a],[20 1.3]);dist = S(8);Dist = double(Dist)
Dist = 201.6000

另请参阅

|||||||

相关的话题

外部网站