Язык Wolfram Language

Расширенный доступ к базе знаний Wolfram Knowledgebase

Приготовление аспирина

Аспирин является одним из наиболее часто используемых препаратов для лечения боли, повышенной температуры тела, и воспалительных процессов. Он может быть синтезирован путем объединения эквимолярных количеств салициловой кислоты и уксусного ангидрида. В данном случае химические данные из базы знаний Wolfram используются совместно с информацией о количествах и группах веществ, необходимых для изучения процесса приготовления аспирина.

Рассмотрим типичный лабораторный вариант 100-миллимолярного приготовления аспирина. Для этого воспользуемся функцией EntityGroup.

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]=

Рассчитаем общую массу партии аспирина.

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 миллимолей аспирина, тогда как на практике будет получено около 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 zh