# PhysicalQuantity
我一直想知道为什么编程语言只实现数学中使用的数字集?(int8, uint64,等等),?(complex()等),?(双的,单的,…)等等。对于任何物理学家来说,有一种表示物理量的数据类型是有意义的;既有数值(double)又有度量单位的东西。最好,这种数据类型可以直观地适用于各种标准操作——根据艾萨克·牛顿(Isaac Newton)的理论,质量乘以长度除以时间²应该得到一个力,但同样的一组操作永远不可能等于面积。
此提交就是这种数据类型的实现。
准备工作:
—将“PhysicalQuantity”和“PhysicalVectorQuantity”目录放在
MATLAB搜索路径,递归
会话示例:
>> L =长度(4,'m')
L =
4米
>> R =长度(2,'ft')
R =
2英尺
>> A =面积(L*R, 'm^2')
一个=
2.4384e+00平方米
让我们检查一下:1英尺= 0.3048米,所以
2英尺* 4米= 2*0.3048 * 4 = 2.4384平方米。太酷了!
试试下面的方法:
>> A =面积(L*L*R, 'm^2')
使用Area时出错(第13行)
不能从维度为[L]³的数量中创建“Area”(尺寸[L]²)。
>> A =面积(L*R, 'm^3')
使用Area时出错(第13行)
给定字符串([L]³)暗示的维度与Area ([L]²)的维度不兼容。
>> tan(面积(L*R, 'm^2'))
无法计算Area的tan()。
角是无量纲的,在这个框架中被视为特殊的:
>> theta =角度(-1.2,'deg')
θ=
-1.2度
> > cos(θ)
ans =
9.997806834748455e- 01% <-实际上与cosd(-1.2)相同
>> =角(0.5,'rad')
φ=
500毫弧度
#概述
在物理学中,量的单位与量本身有着错综复杂的联系。通常,具有不同单位的量不能在同一操作中使用,除非它们之间存在某种转换—您不能“将苹果添加到橘子中”。
这与大多数编程语言中的数据类型没有什么不同。当你把两个整数相除时,你期望得到什么?添加布尔字符?如果没有某种形式的皈依,你是无法做到这一点的。
因此,创建一个将物理单元考虑到所有操作的数据类型是有意义的。最好,这种数据类型也非常容易使用,并且在以一种物理上毫无意义的方式使用它时产生易懂的错误消息。
这正是这个工具集的目的所在。
#如何使用
pysicalquantity是这样从头构造的:
Q =
在PhysicalQuantity目录中查看当前的概述
万博1manbetx支持数量< >。<值>可以是任何数值(包括
稀疏、复杂等等)。
支持的长万博1manbetx/短单元名(见下文),可能前缀为
si乘法器(用于公制单位)。多个单元可以通过
以下操作:
‘*’:相乘
“/”:鸿沟
“^”:取幂
例子:
F =力(300,'牛顿')
r =密度(2,'kg/m^3')
获取可用单元的列表:
>> L =长度();
> > L.listUnits ()
长度支持以下测万博1manbetx量单位:
-中国哩
-秒差(pc)
-天文单位(AU)
-英尺(ft)
-弗朗(毛皮)
-英寸(英寸)
-光年(光年)
-米(m)
-英里(米)
-海里(n.mi)
- smt (smoot)
-法定英里(st.mi)
-码(码)
- Ångström (Å)
兼容单元之间的转换是无缝的:
>> L =长度(20,'码');
> > L(米)
ans =
1.8288 e + 1米
>> P =长度(3,'英寸');
>> Q =长度(18,'英尺');
长度(L*P/Q, '米')
ans =
254毫米
操作按预期工作:
>> L =长度(1,'英寸');
>> t =持续时间(32,'秒');
>> M =质量(18,'lb');
>> F =力(M*L/t/t, '牛顿')
ans =
2.025219058242187 e + 02 milliNewtons
#注意
如果你发现什么奇怪的事情,请提醒我。
最好是在GitHub上提出一个问题:)否则,普通的ol'
电子邮件就可以了。
引用作为
Rody Oldenhuis(2022)。PhysicalQuantityGitHub (https://github.com/rodyo/FEX-PhysicalQuantity/releases/tag/v1.1)。检索.