[R] How to get solution of following polynomial?

Paul Smith phhs80 at gmail.com
Sun Jan 11 14:07:28 CET 2009


On Sun, Jan 11, 2009 at 6:03 AM, RON70 <ron_michael70 at yahoo.com> wrote:
>
> Hi, I want find all roots for the following polynomial :
>
> a <- c(-0.07, 0.17); b <- c(1, -4); cc <- matrix(c(0.24, 0.00, -0.08,
> -0.31), 2); d <- matrix(c(0, 0, -0.13, -0.37), 2); e <- matrix(c(0.2, 0,
> -0.06, -0.34), 2)
> A1 <- diag(2) + a %*% t(b) + cc; A2 <- -cc + d; A3 <- -d + e; A4 <- -e
> fn <- function(z)
>   {
>    y <- diag(2) - A1*z - A2*z^2 - A3*z^3 - A4*z^4
>    return(det(y))
>   }; uniroot(fn, c(-10, 1))
>
> Using uniroot function, I got only one solution of that. Is there any
> function to get all four solutions? I looked at polyroot() function, but I
> do not think it will work for my problem, because, my coef. are matrix, nor
> number

Use curve to plot the curve of your function. Then, see where the
roots are, and use uniroot with a small interval around the roots to
determine their exact value.

Example:

f <- function(x) x^2-1
curve(f,-5,5)
uniroot(f,c(-2,-0.2))
uniroot(f,c(0.2,2))

Paul




More information about the R-help mailing list