Wolfram 语言

更丰富的知识库访问

阿司匹林制备

阿司匹林是一种广泛用于治疗疼痛、发烧和炎症的药品. 他可以通过相同摩尔数的水杨酸(salicylic acid)和酸酐(acid anhydride)合成产生. 这里,我们将 Wolfram Knowledgebase 中的化学品数据与数量框架和实体组、复制一同使用,来研究学习阿司匹林的化学制备.

EntityGroup 表示典型实验用的一批 100 毫摩尔的阿司匹林预备品.

In[1]:=
Click for copyable input
reactants = EntityGroup[{EntityInstance[Entity["Chemical", "SalicylicAcid"], Quantity[0.1, "Moles"]], EntityInstance[Entity["Chemical", "AceticAnhydride"], Quantity[0.1, "Moles"]]}]
Out[1]=

加里化(curried) 格式的实体-属性查询,计算该批化学品的总质量.

In[2]:=
Click for copyable input
mass = reactants["AbsoluteMass"]
Out[2]=

由于乙酸酐是液体,知道实际需要多少将会更方便.

In[3]:=
Click for copyable input
UnitConvert[ EntityInstance[Entity["Chemical", "AceticAnhydride"], Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
Out[3]=

假如是化学计量比反应,即(理论上的)定量反应,这将生出 100 mmol 的阿司匹林. 但是实际所能取得的产出大约为 90%.

In[4]:=
Click for copyable input
EntityInstance[Entity["Chemical", "Aspirin"], 0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]
Out[4]=

计算组成阿司匹林分子的原子数目.

In[5]:=
Click for copyable input
elem = Entity["Chemical", "Aspirin"]["ElementCounts"]
Out[5]=

将适当数目的这些原子放入分组的实体表达式中.

In[6]:=
Click for copyable input
atomAssemble = EntityGroup[ MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]
Out[6]=
In[7]:=
Click for copyable input
atomicmass = atomAssemble["AtomicMass"]
Out[7]=

自然地,该实体分组的总体原子质量与整个分子的摩尔质量一致.

In[8]:=
Click for copyable input
molarmass = Entity["Chemical", "Aspirin"][ EntityProperty["Chemical", "MolarMass"]]
Out[8]=
In[9]:=
Click for copyable input
Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}
Out[9]=

但是,其中有很多可能的同位素组合,每个的整体质量都会有细微差别.

In[10]:=
Click for copyable input
stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@ Keys[elem]
Out[10]=

这一组仅含有标准同位素(即 主要离子).

In[11]:=
Click for copyable input
EntityGroup[{EntityCopies[Entity["Isotope", "C12"], 9], EntityCopies[Entity["Isotope", "H1"], 8], EntityCopies[Entity["Isotope", "O16"], 4]}]["AtomicMass"]
Out[11]=

产生有这样成分的分子的概率小于 90%,不过其在质谱中则为最显著分子峰值.

In[12]:=
Click for copyable input
Times @@ MapThread[(QuantityMagnitude[#1[ EntityProperty["Isotope", "IsotopeAbundance"]], "PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
Out[12]=

相关范例

de en es fr ja ko pt-br ru