Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
roots
raízes de um polinômio
Seqüência de Chamamento
x = roots(p) x = roots(p, 'e')
Parâmetros
- p
polinômio com coeficientes reais ou complexos ou vetor dos coeficientes do polinômio em ordem de graus decrescentes (para compatibilidade com o Matlab).
- 'e', algo
a character: the algorithm to be used (default "f", for "fast"):
"f": The Jenkins-Traub method is used. The polynomial must be real and of degree < 100; otherwise, an error is yielded. "e": eigenvalues of the companion matrix are returned.
Descrição
x=roots(p)
retorna no vetor de complexos
x
as raízes do polinômio p
. Para
polinômios reais de grau<= 100 o algoritmo rápido RPOLY é utilizado. Em
outros casos, as raízes são computadas como os autovalores da matriz
companheira associada. Use x=roots(p,'e')
para forçar
este algoritmo em qualquer caso.
Exemplos
In the following examples, we compute roots of polynomials.
// Roots given a real polynomial p = poly([1 2 3],"x") roots(p) // Roots, given the real coefficients p = [3 2 1]; roots(p) // The roots of a complex polynomial p = poly([0,10,1+%i,1-%i],'x'); roots(p) // The roots of the polynomial of a matrix A = rand(3,3); p = poly(A,'x') roots(p) spec(A)
The polynomial representation can have a significant impact on the roots. In the following example, suggested by Wilkinson in the 60s and presented by Moler, we consider a diagonal matrix with diagonal entries equal to 1, 2, ..., 20. The eigenvalues are obviously equal to 1, 2, ..., 20. If we compute the associated characteristic polynomial and compute its roots, we can see that the eigenvalues are significantly different from the expected ones. This implies that just representing the coefficients as IEEE doubles changes the roots.
The "f" option produces an error if the polynomial is complex or if the degree is greater than 100.
// The following case produces an error. p = %i+%s; roots(p,"f") // The following case produces an error. p = ones(101,1); roots(p,"f")
The following script is a simple way of checking that the companion matrix gives the same result as the "e" option. It explicitly uses the companion matrix to compute the roots. There is a small step to reverse the coefficients of the polynomial ; indeed, "roots" expects the coefficients in decreasing degree order, while "poly" expects the coefficients in increasing degree order.
References
O algoritmo RPOLY é descrito em "Algorithm 493: Zeros of a Real Polynomial", ACM TOMS Volume 1, edição 2 (Junho 1975), pp. 178-189
Jenkins, M. A. e Traub, J. F. (1970), A Three-Stage Algorithm for Real Polynomials Using Quadratic Iteration, SIAM J. Numer. Anal., 7(1970), 545-566.
Jenkins, M. A. e Traub, J. F. (1970), Principles for Testing Polynomial Zerofinding Programs. ACM TOMS 1, 1 (Março1975), pp. 26-34
Report an issue | ||
<< residu | Polinômios | rowcompr >> |