Решение такого рода систем в общем случае - алгоритмически неразрешимая задача. Однако она может быть приближённо решена с помощью различных эвристических алгоритмов: таких как генетические алгоритмы, алгоритм птичьих стай, а так же задача может быть решена средствами численных методов.
При всём этом многообразии методов становится сложно понять, каким из них лучше воспользоваться. Для того чтобы определить это, необходимо выяснить наилучшие алгоритмы поиска корней системы нелинейных уравнений.
При этом возникают следующие вопросы:
При ответе на вопрос, каким алгоритмом поиска корней системы нелинейных уравнении воспользоваться, следует учесть важность каждого из приведённых вопросов. Особенно следует отметить степень важности последнего вопроса, так как алгоритм, который быстрее и точнее всех других будет искать одно решение системы, может не эффективно осуществлять поиск всех решений на заданной области.
Таким образом, ставится цель создания программной системы для определения способа решения системы нелинейных уравнений, наиболее подходящего для введённых данных. Однозначно оптимальным должен быть признан алгоритм, у которого окажутся наилучшие показатели по всем приведённым вопросам. При отсутствии такого алгоритма для каждой конкретной задачи оптимальный алгоритм может быть разным (в зависимости от того, какие критерии ставит сама задача).
В данной работе рассматривается подход, который основан на практическом тестировании различных способов решения систем нелинейных уравнений основными (наиболее распространёнными) способами, для дальнейшего сравнения полученных результатов с точки зрения скорости и надёжности в получении получения ответа (т.е. вероятности того, что с помощью выбранного метода, используя заданные параметры можно найти решение данной системы нелинейных уравнений).
Для реализации необходимо решить ряд задач:
Предметом исследования являются множество алгоритмов с точки зрения их возможности по решению систем нелинейных уравнений.
Объектами исследования являются:
Для достижения поставленной цели, предполагается проведение следующих этапов исследования:
После реализации описанной программной системы предполагается получение статистических данных как о различных видах систем для определения наиболее подходящего способа их решения, так и о самих алгоритмах решения данной задачи. Эти данные используются для общего сравнения алгоритмов на примере поставленной задачи.
При реализации описанной программной системы требуется обеспечить возможность её расширения. Требование возникает за счёт того что в процессе анализа результатов, полученных с помощью различных методов решения систем нелинейных уравнений может потребоваться добавление новых программных модулей. Эти модули будут содержать программную реализацию методов решения систем нелинейных уравнений, изучение которых заранее не планировалось. Для того чтобы избежать необходимости перепроектирование всей системы (и переписывания программного кода) вследствие добавления данных модулей и вводится требование о возможности расширения системы.
На рис. 1 представлена архитектура системы.
Ключевым объектом системы является пользовательская форма содержащая список систем для решения, агрегирующая всю необходимую информацию. Список необходим для проведения массовых тестирований на большом числе систем. Каждая система имеет список параметров заданных для различных способов решения. Это могут быть такие параметры как:
Кроме того каждый метод решения должен содержать параметры по умолчанию.
Анализатор уравнений (Parser) получает в качестве входных данных уравнения системы и список переменных с их текущими значениями, возвращает же он значение левой части уравнения при заданных значениях переменных.
Генерация систем уравнений (RandomGenerator) любой сложности c заранее известным ответом может быть осуществлена достаточно просто. Для этого предполагается выполнить следующую последовательность шагов:
После генерации тестов предполагается решение сгенерированных систем всеми имеющимися в системе способами, после чего будут проанализированы результаты и определены параметры, наиболее сильно влияющие на выбор наиболее подходящего метода решения. Ими могут оказаться:
На следующем этапе предполагается построить нейронную сеть, которая на основании найденных параметров будет прогнозировать наиболее подходящий метод решения систем. Будут проанализированы также сами методы: возможно один или несколько методов окажутся наиболее предпочтительными, что также представляет немалый научный интерес.
В настоящее время проведён анализ предметной области, определены основные способы решения поставленной задачи. В будущем будет произведена реализация всех основных методов решения систем нелинейных уравнений, а также их анализ и сравнение.