2010-11-02 57 views
8

La risoluzione di un'equazione simbolicamente può essere ottenuta in R utilizzando la libreria di Ryacas. Per esempioRisoluzione dei sistemi di equazioni in R

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

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

Qualcuno sa come (simbolicamente) risolvere un sistema di equazioni?

Grazie.

risposta

9

Beh, io uso la libreria Python eccellente, sympy, per il calcolo simbolico.

Utilizzando sympy, sistemi di equazioni risolvere semplice:

>>> 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} 

Ecco come risolvere un sistema di equazioni utilizzando algebra simbolica, se non attraverso un pacchetto python.

La buona notizia è che c'è una porta R per sympy, chiamato rsympy, che è disponibile sul CRAN, o Google Code, here.

Non ho mai usato rsympy, tranne il download/l'installazione e il lavoro attraverso un paio degli esempi più semplici nel manuale rsympy. Ho usato la libreria Python originale molto negli ultimi tre anni e posso raccomandarla molto.

3

Prova questo:

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

avete un'idea circa la seguente? Se eseguo 'yacas (" OldSolve ({x + 5 * y == 2, -3 * x + 6 * y == 15}, {x, y}) ")' allora ottengo '{{x == 2-5 * y, y == 1}}; 'che va bene, ma non so perché * x * non è stato calcolato per ottenere -3 alla fine. È possibile fare R calcolare risultati esatti? – daroczig

+0

Non ho un dispositivo con Yacas installato al momento per testare la mia soluzione, ma dopo aver visto i documenti avrei provato: 'yacas (" OldSolve ({a * x + y == 0, x + z == 0}, x) ")' –

Problemi correlati