[Scilab-users] improve accuracy of roots

Federico Miyara fmiyara at fceia.unr.edu.ar
Sat Jan 12 07:52:05 CET 2019


Denis,

I've found the correction here,

https://en.wikipedia.org/wiki/Newton%27s_method

It is useful to accelerate convergence in case of multiple roots, but I 
guess it is not valid to apply it once to improve accuracy because of 
the risk of overshoot.

Regards,

Federico Miyara


On 10/01/2019 10:32, CRETE Denis wrote:
> Hello,
> I tried this correction to the initial roots z:
>
> z-4*(1+z).^4 ./([ones(z),z,z.^2,z.^3]*(C(2:5).*(1:4))')
>   ans  =
>
>    -1. - 1.923D-13i
>    -1. + 1.189D-12i
>    -1. - 1.189D-12i
>    -1. - 1.919D-13i
>
> // Evaluation of new error, (and defining Z as the intended root, i.e. here Z=-1):
> z2=z-4*(z-Z).^4 ./([ones(z),z,z.^2,z.^3]*(C(2:5).*(1:4))')
> z2 - Z
>   ans  =
>
>     2.233D-08 - 1.923D-13i
>    -2.968D-08 + 1.189D-12i
>    -2.968D-08 - 1.189D-12i
>     2.131D-08 - 1.919D-13i
>
> The factor 4 in the correction is a bit obscure to me, but it seems to work also for R=(3+p)^4, again with an accuracy on the roots of a ~2E-8.
>
> HTH
> Denis
>
> -----Message d'origine-----
> De : users [mailto:users-bounces at lists.scilab.org] De la part de Federico Miyara
> Envoyé : jeudi 10 janvier 2019 00:32
> À : users at lists.scilab.org
> Objet : [Scilab-users] improve accuracy of roots
>
>
> Dear all,
>
> Consider this code:
>
> // Define polynomial variable
> p = poly(0, 'p', 'roots');
>
> // Define fourth degree polynomial
> R = (1 + p)^4;
>
> // Find its roots
> z = roots(R)
>
> The result (Scilab 6.0.1) is
>
>    z  =
>
>     -1.0001886
>     -1. + 0.0001886i
>     -1. - 0.0001886i
>     -0.9998114
>
> It should be something closer to
>
>     -1.
>     -1.
>     -1.
>     -1.
>
> Using these roots
>
> C = coeff((p-z(1))*(p-z(2))*(p-z(3))*(p-z(4)))
>
> yield seemingly accurate coefficients
>    C  =
>
>      1.   4.   6.   4.   1.
>
>
> but
>
> C - [1  4  6 4 1]
>
> shows the actual error:
>
> ans  =
>
>      3.775D-15   1.243D-14   1.155D-14   4.441D-15   0.
>
> This is acceptable for the coefficients, but the error in the roots is
> too large. Somehow the errors cancel out when  assembling back the
> polynomial but each individual zero should be closer to the theoretical
> value
>
> Is there some way to improve the accuracy?
>
> Regards,
>
> Federico Miyara
>
>
>
>
> ---
> El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
> https://www.avast.com/antivirus
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users
>
>




More information about the users mailing list