跳至主要內容

化学式中的「大小写对立」

Wallbreaker5th大约 1 分钟突发奇想化学Mathematica

问题

我们知道,书写元素符号时,应当正确使用大小写字母。那我们如果忽略大小写,会造成多少歧义?

例如:CO\text{CO}Co\text{Co},前者是一氧化碳,后者是钴。

我们只讨论相对有名的物质,而非泛泛地讨论元素符号的随机组合。

解决

通过 Mathematica 我们可以获取到化学品的列表。

li = ChemicalData[];

并得到它们的化学式。

prop = "FormulaString";
set = EntityValue[li, prop];
set = Union[set];

将字符串按照大写后的结果分组,筛选出大小大于等于 2 的子集。

subsets = GatherBy[set, ToUpperCase];
subsets = Select[subsets, Length[#] >= 2 &]

运行结果为

{{"BaS", "BAs"}, {"Co", "CO"}, {"CoBr2", "COBr2"}, {"CoCl2", 
  "COCl2"}, {"CoS", "COS"}, {"Hf", "HF"}, {"No", "NO"}}

也可以找到它们的名称:

names = Map[Entity["Chemical", #]["Name"] &, subsets, {2}]

结果为:

{{"barium sulfide", "boron arsenide"}, {"cobalt", 
  "carbon monoxide"}, {"cobalt dibromide", 
  "carbonyl bromide"}, {"cobalt dichloride", 
  "phosgene"}, {"cobaltous sulfide", "carbonyl sulfide"}, {"hafnium", 
  "hydrogen fluoride"}, {"nobelium", "nitric oxide"}}

结论

下面出现的物质中文名称可能不准确。

有 7 对化学式出现了「大小写对立」的情况,它们分别是:

  • 硫化钡(BaS\text{BaS}) 和 砷化硼(BAs\text{BAs}
  • 钴(Co\text{Co}) 和 一氧化碳(CO\text{CO}
  • 溴化钴(CoBr2\text{CoBr}_2) 和 羰基溴(COBr2\text{COBr}_2
  • 氯化钴(CoCl2\text{CoCl}_2) 和 光气(COCl2\text{COCl}_2
  • 硫化钴(CoS\text{CoS}) 和 羰基硫(COS\text{COS}
  • 铪(Hf\text{Hf}) 和 氟化氢(HF\text{HF}
  • 锘(No\text{No}) 和 一氧化氮(NO\text{NO}