Приготовление аспирина
Аспирин является одним из наиболее часто используемых препаратов для лечения боли, повышенной температуры тела, и воспалительных процессов. Он может быть синтезирован путем объединения эквимолярных количеств салициловой кислоты и уксусного ангидрида. В данном случае химические данные из базы знаний Wolfram используются совместно с информацией о количествах и группах веществ, необходимых для изучения процесса приготовления аспирина.
Рассмотрим типичный лабораторный вариант 100-миллимолярного приготовления аспирина. Для этого воспользуемся функцией EntityGroup.
![Click for copyable input](assets.ru/prepare-aspirin/In_11.png)
reactants =
EntityGroup[{EntityInstance[Entity["Chemical", "SalicylicAcid"],
Quantity[0.1, "Moles"]],
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]}]
![](assets.ru/prepare-aspirin/O_8.png)
Рассчитаем общую массу партии аспирина.
![Click for copyable input](assets.ru/prepare-aspirin/In_12.png)
mass = reactants["AbsoluteMass"]
![](assets.ru/prepare-aspirin/O_9.png)
Поскольку уксусный ангидрид представляет собой жидкость, необходимо знать точный объем данного элемента, необходимый для приготовления желаемого количества аспирина.
![Click for copyable input](assets.ru/prepare-aspirin/In_13.png)
UnitConvert[
EntityInstance[Entity["Chemical", "AceticAnhydride"],
Quantity[0.1, "Moles"]]["AbsoluteVolume"], "Milliliter"]
![](assets.ru/prepare-aspirin/O_10.png)
Аспирин образуется в результате стехиометрической реакции. Теоретически это дает 100 миллимолей аспирина, тогда как на практике будет получено около 90% от данноого количества.
![Click for copyable input](assets.ru/prepare-aspirin/In_14.png)
EntityInstance[Entity["Chemical", "Aspirin"],
0.9*Quantity[0.1, "Moles"]]["AbsoluteMass"]
![](assets.ru/prepare-aspirin/O_11.png)
Подсчитаем количество атомов, составляющих молекулу аспирина.
![Click for copyable input](assets.ru/prepare-aspirin/In_15.png)
elem = Entity["Chemical", "Aspirin"]["ElementCounts"]
![](assets.ru/prepare-aspirin/O_12.png)
Используем данную информацию о числе атомов для следующего выражения:
![Click for copyable input](assets.ru/prepare-aspirin/In_16.png)
atomAssemble =
EntityGroup[
MapThread[EntityCopies[#1, #2] &, {Keys[elem], Values[elem]}]]
![](assets.ru/prepare-aspirin/O_13.png)
![Click for copyable input](assets.ru/prepare-aspirin/In_17.png)
atomicmass = atomAssemble["AtomicMass"]
![](assets.ru/prepare-aspirin/O_14.png)
Как и следовало ожидать, общая атомная масса равна массе молекулы аспирина.
![Click for copyable input](assets.ru/prepare-aspirin/In_18.png)
molarmass =
Entity["Chemical", "Aspirin"][
EntityProperty["Chemical", "MolarMass"]]
![](assets.ru/prepare-aspirin/O_15.png)
![Click for copyable input](assets.ru/prepare-aspirin/In_19.png)
Equal @@ QuantityMagnitude /@ {atomicmass, molarmass}
![](assets.ru/prepare-aspirin/O_16.png)
Тем не менее, существуют и другие возможные изотопные комбинации, каждая из которых имеет несколько иную общую массу, чем совокупная масса отдельно взятых атомов.
![Click for copyable input](assets.ru/prepare-aspirin/In_20.png)
stableIsotopes = #[EntityProperty["Element", "StableIsotopes"]] & /@
Keys[elem]
![](assets.ru/prepare-aspirin/O_17.png)
Данная группа элементов включает только стандартные изотопы (так называемые "основные ионы").
![Click for copyable input](assets.ru/prepare-aspirin/In_21.png)
EntityGroup[{EntityCopies[Entity["Isotope", "C12"], 9],
EntityCopies[Entity["Isotope", "H1"], 8],
EntityCopies[Entity["Isotope", "O16"], 4]}]["AtomicMass"]
![](assets.ru/prepare-aspirin/O_18.png)
Вероятность существования молекулы с такой композицией составляет менее 90%. Тем не менее, в спектре молекулярных масс, такие молекулы наиболее заметны и представляют собой так называемый "молекулярный пик".
![Click for copyable input](assets.ru/prepare-aspirin/In_22.png)
Times @@ MapThread[(QuantityMagnitude[#1[
EntityProperty["Isotope", "IsotopeAbundance"]],
"PureUnities"])^#2 &, {stableIsotopes[[All, 1]], Values[elem]}]
![](assets.ru/prepare-aspirin/O_19.png)