2010-11-02 2 views
8

Решение уравнения символически может быть достигнуто в R с использованием библиотеки Ryacas. НапримерРешение систем уравнений в R

library(Ryacas) 
yacas("Solve(x/(1+x) == a, x)") 

дает

expression(list(x == a/(1 - a))) 

Кто-нибудь знает, как (символически) решить систему уравнений?

спасибо.

ответ

9

Ну, я использую отличную библиотеку Python, SymPy, для символьных вычислений.

Использование SymPy, решения систем уравнений прямой:

>>> from sympy import * 
>>> x,y = symbols('x y') 
>>> solve([Eq(x + 5*y, 2), Eq(-3*x + 6*y, 15)], [x, y]) 
{y: 1, x: -3} 

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

Хорошая новость заключается в том, что есть R порт SymPy, называемый rsympy, который доступен на CRAN или Google Code, here.

Я никогда не использовал rsympy, кроме загрузки/установки и работы с несколькими простейшими примерами в rsympy Manual. Я использовал оригинальную библиотеку python много в течение последних трех лет, и я могу рекомендовать ее высоко.

3

Попробуйте это:

yacas("OldSolve({a*x+y==0,x+z==0},{x,y})") 
+0

у вас есть представление о следующем? Если я запускаю 'yacas (« OldSolve ({x + 5 * y == 2, -3 * x + 6 * y == 15}, {x, y}) "), тогда я получаю' {{x == 2-5 * y, y == 1}}; 'что хорошо, но я не знаю, почему * x * не был рассчитан, чтобы получить -3 в конце. Возможно ли, чтобы R вычислил точные результаты? – daroczig

+0

У меня нет устройства с Yacas, установленного со мной на данный момент, чтобы проверить мое решение, но, посмотрев на документы, я бы попробовал: 'yacas (« OldSolve ({a * x + y == 0, x + z == 0}, x) ")' –