Skip to content

system solver in R

8 messages · Engin Yılmaz, Berend Hasselman, John C Nash +2 more

#
Dea(R)

Do you know any system solver in R ?

For example, in matlab, is very easy

syms a b c x eqn = a*x^2 + b*x + c == 0; sol = solve(eqn)

How can I  find this type code in R (or directly solver)?

*Since(R)ely*
Engin YILMAZ
#
R package Ryacas may be what you want.

Berend
#
Thanks a lot!

Berend Hasselman <bhh at xs4all.nl>, 20 Kas 2018 Sal, 12:02 tarihinde ?unu
yazd?:

  
    
#
Dea(R)
I try to solve one equation but this program did not give me real roots
for example
yacas("Solve( 5/((1+x)^1) + 5/((1+x)^2) + 5/((1+x)^3) + 105/((1+x)^4) -105
==0, x)")
gave me following results
How can I find real roots?

expression(list(x == complex_cartesian((1/42 - ((1/63 -
((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3)))/21 - -2/21)/(4 * root(((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3) - 1/63)^2/4 + 1, 2)))/2 - 1, root(4 *
(((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3) - 1/63)/2 + root(((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3) - 1/63)^2/4 + 1, 2)) - (((1/63 -
((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3)))/21 - -2/21)/(4 * root(((root(7339451281/3087580356,
    2) - 4535/71442)^(1/3) - (4535/71442 + root(7339451281/3087580356,
    2))^(1/3) - 1/63)^2/4 + 1, 2)) - 1/42)^2, 2)/2),...more




Engin Y?lmaz <ispanyolcom at gmail.com>, 20 Kas 2018 Sal, 12:53 tarihinde ?unu
yazd?:

  
    
#
A bit pedestrian, but you might try

pf <- function(x){5/((1+x)^1) + 5/((1+x)^2) + 5/((1+x)^3) + 105/((1+x)^4) -105}
uniroot(pf,c(-10,10))
curve(pf, c(-10,10))
require(pracma)
tryn <- newton(pf, 0)
tryn
pf(0)
pf(0.03634399)
yc <- c(-105, 5,5,5,105)
rooty <- polyroot(yc)
rooty
rootx <- 1/rooty - 1
rootx

There are lots of rootfinders, and the histoRicalg project (https://gitlab.com/nashjc/histoRicalg)
that is supported by the R Consortium to look into older codes has quite a bit on rootfinders.

JN
On 2018-11-20 7:09 a.m., Engin Y?lmaz wrote:
#
How about this:

library(rootSolve)
f1<-function(x)5/((1+x)^1) + 5/((1+x)^2) + 5/((1+x)^3) + 105/((1+x)^4) -105
uniroot.all( f1,c(-1e6,1e6))

[1] -1.9881665  0.0363435

Cheers


Am 20.11.2018 um 13:09 schrieb Engin Y?lmaz:

  
    
#
Yes, it works for me.

Eik Vettorazzi <E.Vettorazzi at uke.de>, 21 Kas 2018 ?ar, 00:19 tarihinde ?unu
yazd?:

  
    
#
Once you figure out how to decipher the output, you realise that it actually does give you all 4 roots, including the two real ones:

...
[1] -1.00028+0.988174i
[1] -1.00028-0.988174i
[1] 0.03634399
[1] -1.988165

(No, I don't quite know what I am doing either...)

-pd