How to get solution of following polynomial?
In theory,
you could define the following 2 functions
powermat <- function(myvec) {
powervec <- function(x,maxpower)
sapply(0:maxpower,function(n)x^n)
sapply(myvec,function(x)powervec(x,length(myvec)-1))
}
polycoeffs <- function(fn,order,support=0:order)
solve(t(powermat(support)),sapply(support,Vectorize(fn)))
and then use polycoeffs(fn,4)
with your function fn to extract the coefficients of the polynomial.
polycoeffs takes a function and the order of a polynomial
as its input and computes the coefficients of the polynomial
or the given order with the same values as the function
at the points 0:order.
If the function is a polynomial of the given order, it gives you
exactly the coefficients you need.
You may use another set of support points (points where the function is
evaluated) as an optional argument.
Still, this method is not extremely reliable. If the support points are
not chosen well, you might get rather unreliable results.
A safer way would be to use a computer algebra system to extract the
coefficients of your polynomial. You could use Ryacas to do this from R.
But you still would have to grasp the syntax of yacas.
Paul Smith wrote:
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
______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ------------------------------------------------------------------------ No virus found in this incoming message. Checked by AVG - http://www.avg.com Version: 8.0.176 / Virus Database: 270.10.5/1886 - Release Date: 1/10/2009 6:01 PM
Erich Neuwirth, University of Vienna Faculty of Computer Science Computer Supported Didactics Working Group Visit our SunSITE at http://sunsite.univie.ac.at Phone: +43-1-4277-39464 Fax: +43-1-4277-39459