在R中解决方程组

9
使用Ryacas库可以在R中以符号方式解决方程。例如:
library(Ryacas)
yacas("Solve(x/(1+x) == a, x)")

提供

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

有没有人知道如何(符号地)解决一组方程?

谢谢。

2个回答

11

我使用优秀的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}

这就是使用符号代数解决方程组的方法,除了通过Python包。
好消息是,有一个名为rsympy的R端口可用于sympy,可在CRAN或Google Code上here下载。
我从未使用过rsympy,除了下载/安装它并在rsympy手册中完成一些最简单的示例。在过去的三年中,我经常使用原始的Python库,并且我可以高度推荐它。

3

试试这个:

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

你对以下内容有了解吗?如果我运行 yacas( "OldSolve({x+5*y==2,-3*x+6*y==15},{x,y})" ),那么我得到的是 {{x==2-5*y,y==1}};,这很好,但我不知道为什么最后没有计算出 x 的值为 -3。是否可能让 R 计算出精确结果? - daroczig
我目前手头没有安装Yacas的设备来测试我的解决方案,但是在查看文档后,我会尝试使用以下代码:yacas( "OldSolve({a*x+y==0,x+z==0}, x)" ) - IRTFM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接