GNU Units

GNU Units 是一款用於單位換算的跨平台電腦程式。它擁有一個龐大的度量衡單位資料庫,包含了各種非慣用單位與歷史計量單位。例如,它能輕鬆換算「弗隆每兩週」的速度,或是「噸每英畝」的壓力。輸出單位會自動進行一致性檢查,這使得複雜表達式的單位換算驗證變得簡單可靠。

歷史
GNU Units 由 Adrian Mariano 編寫,旨在實作 Unix 作業系統中內建的 units 工具。該程式最初採用寬鬆的授權條款,後來 GNU 版本改為 GPL 授權,不過 FreeBSD 專案仍維護著一份授權變更前的自由分支版本。

Unix 工具
原始的 units 程式自早期的 貝爾實驗室版本以來,一直是 Unix 的標準工具。
類似於原始版本的原始碼可從 Heirloom 專案取得。

GNU 實作
GNU units 在原版基礎上擴充了多項功能, 包括:

  • 指數可使用 ^ 或 ** 編寫。
  • 若使用 ^ 或 **,指數可大於 9。
  • 支援有理數與小數指數。
  • 支援單位加總(例如:)。
  • 支援換算至單位總和(稱為「單位列表」,例如將度數換算為度、分、秒)。
  • 支援倒數維度單位的換算(例如:S 換算至 megohm)。
  • 支援括號進行運算分組,使複雜表達式更直觀。
  • 支援計算單位根(例如:)。
  • 支援仿射單位轉換(例如:°F 轉 °C)。
  • 內建 sin、cos、ln、log、log2 等數學函數。
  • 內建用於更新匯率的 Python 腳本。

單位定義(包含非線性轉換與單位列表)皆可由使用者自訂擴充。

純文字格式的資料庫檔案 definitions.units 本身就是一份極佳的參考資料,其中包含詳盡的註解與參考文獻。

其他實作
UDUNITS 是另一個類似的工具程式,不同之處在於它提供了程式設計的函式庫介面,並具備日期轉換功能。UDUNITS 被視為 netCDF 檔案變數單位換算的「事實標準」程式與函式庫。

版本歷史
GNU Units 2.19 版於 2019 年 5 月 31 日發布,以對應2019年國際單位制基本單位重新定義;2.14 版(2017 年 3 月 8 日)修復了若干小錯誤並改進了 Windows 平台的編譯支援。2.10 版(2014 年 3 月 26 日)加入了大於 1 的有理數指數支援,以及將互動式會話紀錄儲存至檔案的功能。自 2.10 版起,專案官網提供 32 位元 Windows 二進位發行版(2008 年起作為 GnuWin32 專案的一部分,已提供 1.87 版的 32 位元 Windows 移植版)。

2.02 版(2013 年 7 月 11 日)加入了十六進位浮點數輸出及其他格式化選項。

2.0 版(2012 年 7 月 2 日)新增了轉換至單位總和的功能(如「時與分」或「英尺與英吋」),並支援 UTF-8 編碼。 此外,也加入了對地區特定單位定義的支援,修改了非線性單位的定義語法,並新增了選擇性的定義域與值域規範。標準與個人單位資料檔的命名有所變更,匯率定義改置於獨立檔案中,並新增了用於更新匯率的 Python 腳本。

詳細版本歷史請見原始碼包中的 NEWS 檔案。

用法
Units 會分兩行輸出換算結果。通常第一行(乘法)是預期結果;第二行則是該換算的除法表示法。

Units 亦可作為通用科學計算機使用,內建多種數學函數,如 sin、cos、atan、ln、exp 等。

若嘗試轉換不相容的量測單位,units 會顯示一致性錯誤(conformability error)訊息,並顯示每個量測單位的化簡形式。

範例
以下範例基於 GNU units 2.10 版。

互動模式
Currency exchange rates from www.timegenie.com on 2014-03-28
2729 units, 92 prefixes, 77 nonlinear units

You have: 10 furlongs
You want: miles

  • 1.25

/ 0.8
You have: 1 gallon + 3 pints
You want: quarts

  • 5.5

/ 0.18181818
You have: sqrt(meter)
^
Unit not a root
You have: sqrt(acre)
You want: ft

  • 208.71033

/ 0.0047913298
You have: 21 btu + 6500 ft lbf
You want: btu

  • 29.352939

/ 0.034068139
You have: _
You want: J

  • 30968.99

/ 3.2290366e-005
You have: 3.277 hr
You want: time
3 hr + 16 min + 37.2 sec
You have: 1|2 inch
You want: cm

  • 1.27

/ 0.78740157

底線('_')用於表示上一次成功換算的結果。

命令列模式(非互動式)
C:\>units "ten furlongs per fortnight" "kilometers per hour"

  • 0.0059871429

/ 167.02458

% units cup ounces
conformability error
0.00023658824 m^3
0.028349523 kg

複雜單位表達式
達西-魏斯巴赫方程式(Darcy–Weisbach equation)是流體力學中的方程式之一:
: \Delta P = \frac {8} {\pi^2} \rho fL \frac {Q^2} {d^5} \,,
其中 ΔP 是壓力降,ρ 是質量密度,f 是(無因次)摩擦係數,L 為管長,Q 為體積流率,d 為管徑。若希望將方程式整理為方便使用美制單位的形式:
: \Delta P = A_1 \,\rho fL \frac {Q^2} {d^5}
我們可以透過 units 快速計算出常數 A1:

$ units "(8/pi^2)(lbm/ft^3)ft(ft^3/s)^2(1/in^5)" psi

  • 43.533969

/ 0.022970568

Crane 技術文件 No. 410 指出,該乘法係數約為 43.5。

參見

  • 计量单位统一代码(Unified Code for Units of Measure)

註釋
參考文獻
外部連結

评论 (0)

  • 还没有评论,来抢沙发吧。