0

现在,我有一个带有一些符号的公式。这些符号有单位。有谁知道一个python库来评估公式的维度。

我检查了sympypintSympy似乎是基于物理的单位制,但我要处理的是像美元或公斤这样的通用单位。Sympy 似乎没有定义这些。 pint可以使用 定义单位UnitRegistry.define,但除非表达式中的每个元素都有一个单位,否则它不起作用。

from pint import UnitRegistry

ureg = UnitRegistry(filename=None)
ureg.define("KG = []")
ureg.define("MT = 1000 * KG")
ureg.define("USD = []")
ureg.define("JPY = []")
X = 1 * ureg.USD / ureg.MT
Y = 1 * ureg.JPY / ureg.USD
formula = (X + 50) / 1000 * Y
formula.u
=> JPY/USD

我想要得到的结果是JPY/KGor USD/MT。这个不希望的结果是因为X + 50将是无量纲的。如果我手动定义数字的单位,我会得到一个准确的答案。但是这样就不需要维度分析了。

我不迷恋pintsympy。有没有什么好的方法来进行维度分析?


附言

感谢@wsdookadr,我想展示一些例子。我想做的是评估公式的维度(可能用字符串表示)。

让我有两个公式。

F1 = (X + 50) / 1000 * Y
F2 = (X + 1000) * 0.5

这个 X 和 Y 的单位和前面的例子一样。如果我可以进行维度分析,结果将如下所示。

F1 = ([USD/MT] + 50) / 1000 * [JPY/USD]
   = 10^-3 [USD/MT] * [JPY/USD]
   = 10^-3 [JPY/MT]
   = [JPY/KG]
F2 = ([USD / MT] + 1000) * 0.5
   = [USD/MT]
4

0 回答 0