Graphics Programs Reference
In-Depth Information
One nice property of Laguerre's methodisthatconverges to aroot, with very few
exceptions, from any starting valueof
x
.
polyRoots
The
function
polyRoots
in this module
computes all
the roots
of
P
n
(
x
)
=
0,
where the polynomial
P
n
(
x
) definedbyits coefficient array
a
a
n
+
1
].
After the first root iscomputedbythe subfunction
laguerre
, the polynomial is de-
flatedusing
deflPoly
and the nextzerocomputed by applying
laguerre
to the
deflatedpolynomial. This process is repeateduntil all
n
roots have been found.
If a computedroot has avery small imaginary part, it is very likely that it rep-
resents roundoff error. Therefore,
polyRoots
replaces a tiny imaginary part by
zero.
=
[
a
1
,
a
2
,
a
3
,...,
function root = polyroots(a,tol)
% Returns all the roots of the polynomial
% a(1)*xˆn + a(2)*xˆ(n-1) + ... + a(n+1).
% USAGE: root = polyroots(a,tol).
% tol = error tolerance (default is 1.0e4*eps).
if nargin == 1; tol = 1.0e-6; end
n = length(a) - 1;
root = zeros(n,1);
fori=1:n
x = laguerre(a,tol);
ifabs(imag(x))<tol;x=real(x);end
root(i) = x;
a = deflpoly(a,x);
end
functionx=laguerre(a,tol)
% Returns a root of the polynomial
% a(1)*xˆn + a(2)*xˆ(n-1) + ... + a(n+1).
x = randn;
% Start with random number
n = length(a) - 1;
fori=1:30
[p,dp,ddp] = evalpoly(a,x);
if abs(p) < tol; return; end
g=dp/p;h=g*g-ddp/p;
f = sqrt((n - 1)*(n*h - g*g));
Search WWH ::
Custom Search