Тоже писал подобную прогу.Не знаю, какие алгоритмы использованы в этой программе, но судя по всему, коэффициенты в реакции выставляются исключительно методом подбора, так что скорость уравнивания многокомпонентных реакций оставляет желать лучшего. Например, такую вот "реакцию" 4Ge+9Os+6He+7Be+2Li+3O3=
3GeO2+Li(Be6He)+OsO3+LiBeHe5Os8 у меня на компе с 512 Mb ОЗУ и 1.09 ГГц коэффициенты подбирались больше 4 мин! Конечно в реале до таких извращений, как правило не доходит, но вдруг у пользователя комп еще намного слабее?
Для ускорения работы можно было бы поставить условие, что при подборе кол-во одинаковых элементов справа(слева) не менее, чем слева(справа)
то есть если с одной стороны реакции изначально коэффициент при элементе 2 и болеее, то подбор идет не с 1, а с 2 и более. Сложнее будет если элементы встречаются с обоих сторон несколько раз, но с этим тоже что-то можно сделать. Кроме того, если встречаются с обоих сторон одинаковые группы (NO3,CNS и т.д), считать их можно как 1 элемент а не поотдельности, если эти группы не разрушаются.
А вообще лучше всего уравнивать электронным баллансом если в реакции изменяются степени окисления, если после балланса уравнение не сходится или балланс неприменим, уже уравнивать подбором.
Также если это ОВР можно было бы расписать балланс.
PS: Встречаюся такие ОВР, которые можно уравнять исключительно баллансом, подбор в них сходится будет, но не факт что он верный.
|