Решите одновременные уравнения, используя пакет Ryacas (OldSolve) в R - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь решить систему из 3 уравнений, используя пакет Ryacas в R.

library(Ryacas)
 yacas("OldSolve({(f*Reg/(k + Reg)) - r*BB - ab * BB - a1*f1*BB*AA*P - fp*BB*P==0,(ab * BB + a1*f1*BB*AA*P)/e1 - m1 * AA == 0, (fp * BB * P)/ep - f1*AA*P - mp * P ==0 },{BB,AA,P})")

Но я получаю следующий ответ в R

expression(list(list(BB == BB, AA == (f * Reg/(k + Reg) - r * 
    BB - ab * BB - fp * BB * P)/(P * (a1 * f1 * BB)), P == P)))

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

В основном в форме

{BB -> some value, AA -> some value, P-> 0}, {BB -> some value, AA -> some value, P-> some value}, 
{BB -> some value, AA -> some value, P-> some value}

1 Ответ

0 голосов
/ 15 декабря 2018

Трудно полностью доказать это, но, скорее всего, OldSolve слишком слаб для этой системы.

Несколько важных моментов из руководства :

Эта команда пытается решить одно или несколько уравнений.

Следовательно, никаких гарантий.

Обратите внимание, что только одно решение найдено и возвращено.

Это означает, что, безусловно, нет способа получить все три упомянутых вами решения.

Опять вчаще всего возвращается одно решение.

Тот факт, что вы получили BB == BB и P == P, означает бесконечное число решений, поэтому, возможно, мы можем рассматривать его как доказательство неудачи в решенииsystem.

Решается множество уравнений рекурсивно : во-первых, ищется уравнение, в котором одна из переменных встречается ровно один раз ;тогда это уравнение решается с помощью таких слов;и, наконец, решение заменяется в других уравнениях на Eliminate, уменьшая число уравнений на единицу.Этого достаточно для всех линейных уравнений и большой группы простых нелинейных уравнений

Итак, этот вид объясняет, почему OldSolve может не работать в вашей системе.Во-первых, он нелинейный, не дает никаких гарантий.Во-вторых, каждая из переменных появляется в каждом из уравнений 1-4 раза.Если я правильно понимаю алгоритм, после решения одного уравнения (скажем, AA) и подстановки решения в два других - все готово.Это связано с тем, что тогда и BB, и P появляются в обоих оставшихся уравнениях более одного раза (и в результате OldSolve не может решить ни одно из них).Вы также можете попробовать изменить порядок уравнений;вы увидите, что тогда решается другая переменная.

...