Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

DEVELOPMENT OF STOICHIOMETRIC COEFFICIENTS SEARCH ALGORITHM FOR CHEMICAL REACTION EQUATIONS

Nikolyukin M.S. 1
1 Tambov State Technical University
Approaches to the automation of chemical production are actively gaining popularity every year. Various services and systems in the field of education are emerging and actively developing, which help students and teachers of educational institutions to better understand chemical processes. When designing your own similar systems, it is important to develop an efficient algorithm for solving a specific problem that was both fast and used a minimum of memory. Such a problem may arise, for example, when implementing a chemical equation balancing module. This paper is devoted to the development of an algorithm for the search for stoichiometric coefficients of chemical equations. The analysis of mathematical search methods proposed by other scientists, and also revealed their shortcomings. The algorithm proposed by the author of the article is described, which is based on the representation of a chemical equation in the form of a system of linear algebraic equations and its subsequent solution by the Gauss-Jordan elimination method. The algorithm was tested on monomolecular, bimolecular and trimolecular reactions. The efficiency of using the algorithm has been proved in comparison with analogues when developing services and complex systems for automating chemical tasks.
algorithm
chemical reaction
linear equation system
matrix
automation

В современных реалиях активно развиваются подходы к автоматизации химического производства. Сфера образования не стала исключением. За последние несколько лет было разработано и введено в эксплуатацию множество систем, автоматизирующих различные химические задачи: поиск результатов химических реакций, балансировка, расчет концентрации растворов и т.д. Большинство подобных сервисов и систем реализованы в виде Web-приложений и доступны повсеместно в сети Интернет.

При проектировании собственной системы очень важно разработать эффективный алгоритм решения определенной задачи, который был бы одновременно и быстрым и использовал минимум памяти. Такая проблема может возникнуть, например при реализации модуля балансировки химического уравнения.

Химические уравнения играют особую роль как в теоретической, так и в промышленной химии. Каждое химическое уравнение описывает некоторую химическую реакцию. Вещества, первоначально участвующие в реакции, называются реагентами, а вновь образовавшиеся – продуктами.

Процесс балансировки химических уравнений, который заключается в поиске стехиометрических коэффициентов, является одним из важнейших в промышленной химии. Специалисты, занимающиеся балансировкой, в основном используют эвристический метод, который рационален лишь для простых химических реакций [1].

В экспертных системах или сервисах, которые направлены на автоматизацию решения различных химических задач, на смену эвристике приходят математические методы поиска стехиометрических коэффициентов.

Один из математических методов, описанный профессором Хирематом Сурешем из Индийского технологического института Брахмадевадра Мане, предполагает представление химического уравнения в виде системы линейных уравнений и последующего ее решения методом Гаусса [2]. Однако алгоритм, предложенный профессором, не является эффективным для решения задачи на компьютере, так как дальнейший вывод конечного результата усложняет алгоритм.

Метод, основанный на поиске ядра матрицы, который предложил Лоуренс Торн из Сандийских национальных лабораторий, не подходит для реализации на компьютере из-за его сложности [3].

Таким образом, появляется необходимость поиска более эффективного алгоритма для решения задачи. Использование метода Гаусса – Жордана в конечном счете может заменить большинство операций преобразований всего лишь нахождением наименьшего общего кратного знаменателей вектора решений системы.

Цель работы: разработка эффективного алгоритма поиска стехиометрических коэффициентов химического уравнения. Для несбалансированной химической реакции требуется найти стехиометрические коэффициенты, используя метод Гаусса – Жордана.

Алгоритм решения задачи

Пусть дана некоторая несбалансированная химическая реакция:

nikol01.wmf (1)

где х1 – х4 – искомые стехиометрические коэффициенты; А, В, С – участвующие в реакции вещества; у1 – у8 – количество атомов каждого вещества в молекулах, участвующих в реакции.

В соответствии с количеством участвующих элементов в реакции, составляются линейные уравнения

nikol02.wmf

nikol03.wmf (2)

nikol04.wmf

nikol05.wmf

На основе составленных линейных уравнений формируется система

nikol06.wmf (3)

Далее система записывается в виде матрицы и решается методом Гаусса – Жордана. Этот метод предназначен не только для решения систем линейных уравнений, но и для нахождения обратной матрицы [4]. Первый этап метода – прямой ход, он аналогичен методу Гаусса. Второй этап – обратный ход, он заключается в обнулении всех элементов матрицы коэффициентов системы линейных уравнений, выше ведущих элементов [5].

Решением системы будет являться вектор решений, где последний элемент – произвольное действительное число, которому присваивается единица. Каждый элемент вектора решений системы приводится к обыкновенным дробям. Для всех знаменателей дроби ищется наименьшее общее кратное, значение которого затем умножается на каждый элемент вектора. Таким образом полученные значения и будут являться искомыми стехиометрическими коэффициентами химического уравнения.

Предложенный алгоритм можно применить для всех простых химических реакций (мономолекулярные, бимолекулярные, тримолекулярные). Рассмотрим пример для несбалансированной мономолекулярной реакции:

nikol07.wmf (4)

Представим химическую реакцию в математической форме:

nikol08.wmf (5)

В соответствии с веществами, которые участвуют в реакции, составим два линейных уравнения:

nikol09.wmf

nikol10.wmf (6)

На их основе составим систему линейных уравнений:

nikol11.wmf (7)

Запишем систему в виде матрицы и решим ее методом Гаусса – Жордана:

nikol12.wmf (8)

В данном случае будет всего два решения – nikol13.wmf, x2 – произвольное действительное число, которому присваивается единица, а при переводе в обыкновенную дробь nikol15.wmf. Применив алгоритм НОК для всех знаменателей, получим число, на которое умножим решения системы. В данном случае это число равно двойке. x1 = 1, x2 = 2. Подставив полученные коэффициенты в уравнение, получим сбалансированную реакцию

nikol16.wmf (9)

Рассмотрим пример для несбалансированной бимолекулярной реакции

nikol17.wmf (10)

Представим химическую реакцию в математической форме:

nikol18.wmf (11)

В соответствии с веществами, которые участвуют в реакции, составим три линейных уравнения

nikol19.wmf

nikol20.wmf (12)

nikol21.wmf

На их основе составим систему линейных уравнений:

nikol22.wmf (13)

Запишем систему в виде матрицы и решим ее методом Гаусса – Жордана:

nikol23.wmf (14)

Данная система имеет четыре решения – nikol24.wmf, nikol25.wmf, nikol26.wmf, x4 – произвольное действительное число, которому присваивается единица, а при переводе в обыкновенную дробь nikol28.wmf. Применив алгоритм НОК для всех знаменателей получим число, на которое умножим решения системы. В данном случае это число равно шести. x1 = 2, x2 = 7, x3 = 4, x4 = 6. Подставив полученные коэффициенты в уравнение, получим сбалансированную реакцию:

nikol29.wmf. (15)

Рассмотрим пример для несбалансированной тримолекулярной реакции:

nikol30.wmf (16)

Представим химическую реакцию в математической форме:

nikol31.wmf (17)

В соответствии с веществами, которые участвуют в реакции, составим пять линейных уравнений:

nikol32.wmf

nikol33.wmf

nikol34.wmf (18)

nikol35.wmf

nikol36.wmf

На их основе составим систему линейных уравнений

nikol37.wmf (19)

Запишем систему в виде матрицы и решим ее методом Гаусса – Жордана:

nikol38.wmf (20)

Данная система имеет пять решений – x1, x3, nikol39.wmf, x2 = 3, x5 – произвольное действительное число, которому присваивается единица, а при переводе в обыкновенную дробь nikol40.wmf. Применив алгоритм НОК для всех знаменателей, получим число, на которое умножим решения системы. В данном случае это число равно трем. x1, x3, x4 = 4, x2 = 9, x5 = 3. Подставив полученные коэффициенты в уравнение, получим сбалансированную реакцию:

nikol41.wmf (21)

Алгоритм в общем виде, изображенный в виде блок-схемы, представлен на рис. 1.

nikol1.tif

Рис. 1. Блок-схема алгоритма

nikol2.tif

Рис. 2. Сравнение времени выполнения алгоритмов

Анализ результатов

Разработанный алгоритм поиска стехиометрических коэффициентов химического уравнения на основе метода Гаусса – Жордана улучшает метод, предложенный профессором Хирематом Сурешем, и применим для всех простых химических реакций. Реализация алгоритма на компьютере позволит достичь результатов за меньшее количество времени, чем при решении данной задачи методом Гаусса. Сравнение времени выполнения алгоритмов представлено на рис. 2.

Алгоритм протестирован на мономолекулярных, бимолекулярных и тримолекулярных реакциях и может быть использован при разработке сервисов и сложных систем для автоматизации химических задач в сфере образования или на производстве.