алгоритм решения связанных уравнений

Я работаю над проектом по созданию универсального решателя уравнений... представьте, что это будет иметь форму 25-30 уравнений, которые будут сохранены в именах переменных таблицы вместе с операторами.

Затем я бы назвал эту таблицу для решения любого уравнения с отсутствующей переменной, и она переместила бы операторы/другие части на другую сторону от отсутствующей переменной.

например 2x+ 3y=z и если x отсутствовала переменная. Я бы назвал уравнение со значениями для y и z, и оно преобразовало бы решение для x=(z-3y)/2.

уравнения могут быть линейными, полиномиальными, бинарными (да/нет результата)...

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


person raghu    schedule 03.09.2010    source источник


Ответы (2)


Если бы такой общий алгоритм черного ящика можно было сделать точным, надежным и стабильным, свиньи могли бы летать. Решения могут быть несуществующими, кратными, параметризованными и т.д.

Даже для линейных уравнений сложно сделать это правильно.

Лучше всего подойдет какая-то форма алгоритма Ньютона, но обычно вы адаптируете его к своей проблеме.

РЕДАКТИРОВАТЬ: я не видел, чтобы вы хотели что-то символическое, а не числовое. Это еще один мешок с червями.

person Alexandre C.    schedule 03.09.2010
comment
Это будет означать портной. Извиняюсь. :-/ - person Paul Nathan; 03.09.2010
comment
Ах хорошо. Фиксированный. Я не носитель английского языка, но определенно математик... Тальёр для меня гораздо более естественен, чем портной (каким бы богатым он ни был). - person Alexandre C.; 03.09.2010
comment
Думаю, я не объяснил свою потребность должным образом - не ожидая, что свиньи будут летать ... на одном уровне все, что мне нужно, - это возможность хранить уравнение, состоящее из нескольких переменных, а затем быть в состоянии решить его, если одна переменная пропал, отсутствует. 25-30 уравнений НЕ являются системой уравнений. Я буду использовать только одно уравнение за раз. И проверки на ошибки, сделанные заранее, прежде чем добраться сюда. Если это все еще сложная проблема, нужно будет пересмотреть подход... в настоящее время, решая ее с помощью сложного процесса. - person raghu; 03.09.2010
comment
Для одной переменной существует множество надежных численных методов. Вы хотите символическое или численное решение вашего 1-неизвестного уравнения? - person Alexandre C.; 03.09.2010
comment
Ясно, что я не в себе... не уверен в разнице между символическим и числовым решением. у меня были бы значения для всех, кроме отсутствующего элемента, и мне каким-то образом пришлось бы переместить операторы и переменные на другую сторону уравнения. Я чувствовал, что это был бы стандартный алгоритм, если бы я знал, где искать - не могли бы вы указать мне правильное направление для поиска. Спасибо - person raghu; 04.09.2010
comment
вы просите алгоритм, который мог бы заменить математиков... Хотел бы я, чтобы он был! Лучшее, что вы можете сделать, это составить список эвристик и применять их с умом. Это очень, очень тяжелая задача и определенно требует некоторых математических навыков, навыков работы с компьютером и большого количества рабочей силы. Взгляните на бесплатные пакеты, такие как maxima. - person Alexandre C.; 04.09.2010
comment
хорошо, думаю, здесь больше сложностей, чем я могу себе представить... поговорил в автономном режиме с кем-то, кто думает, что у него есть идея... обновлю группу, если найду что-то простое и работоспособное. Спасибо - person raghu; 05.09.2010

См. Maxima.

Мне это больше нравится для моих потребностей в символьных вычислениях.

person Paul Nathan    schedule 03.09.2010
comment
можете ли вы поделиться более подробной информацией: вы вызываете библиотеки maxima из своего кода? - person raghu; 29.09.2010
comment
@raghu: Нет, обычно я напрямую кодирую в нем. Он написан на Common Lisp, поэтому, немного поработав, вы сможете вывести его как минимум на стандартный ввод/вывод. - person Paul Nathan; 29.09.2010