[Scilab-users] improve accuracy of roots

Federico Miyara fmiyara at fceia.unr.edu.ar
Tue Jan 15 19:49:02 CET 2019


Stéphane,

Thank you very much for your contribution!

Best regards,

Federico Miyara


On 15/01/2019 14:14, Stéphane Mottelet wrote:
> Hello,
>
> After a quick search on the internet I have found and translated in 
> Scilab "multroot", a Matlab Package computing polynomial roots and 
> multiplicities. If you are interested proceed to this url: 
> http://bugzilla.scilab.org/show_bug.cgi?id=15349#c9
>
> Enjoy !
>
> S.
>
> Le 14/01/2019 à 21:07, Federico Miyara a écrit :
>>
>> Denis,
>>
>> What I meant is that convergence is a limiting process. On average, 
>> as the number of iterations rises you´ll be closer to the limit, bu 
>> there is no guarantee that any single iteration will bring you any 
>> closer; it may be a question of luck. Maybe (though it would require 
>> a proof, it is not self-evident for me) in the exact case of a single 
>> multiple root as (x - a)^n the convergence process is monotonous, but 
>> what if you have (x - a1)* ... * (x  - an) where ak are all very 
>> similar but not identical, say, with relative differences of the 
>> order of those reported by the application of the regular version  of 
>> roots.
>> Regards,
>>
>> Federico Miyara
>>
>>
>> On 14/01/2019 13:47, CRETE Denis wrote:
>>> Thank you Frederico!
>>> According to the page you refer to, the method seems to converge more rapidly with this factor equal to the multiplicity of the root.
>>> About overshoot, it is well known to occur for |x|^a where a <1. But for a>1, the risk of overshoot with the Newton-Raphson method seems to be very small...
>>> Best regards
>>> Denis
>>>
>>> [@@ THALES GROUP INTERNAL @@]
>>>
>>> Unité Mixte de Physique CNRS / THALES
>>> 1 Avenue Augustin Fresnel
>>> 91767 Palaiseau CEDEx - France
>>> Tel : +33 (0)1 69 41 58 52 Fax : +33 (0)1 69 41 58 78
>>> e-mail :
>>>   denis.crete at thalesgroup.com  <mailto:%20denis.crete at thalesgroup.com>
>>>   http://www.trt.thalesgroup.com/ump-cnrs-thales
>>>   http://www.research.thalesgroup.com
>>>
>>>
>>> -----Message d'origine-----
>>> De : users [mailto:users-bounces at lists.scilab.org] De la part de Federico Miyara
>>> Envoyé : samedi 12 janvier 2019 07:52
>>> À : Users mailing list for Scilab
>>> Objet : Re: [Scilab-users] improve accuracy of roots
>>>
>>>
>>> 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
>>>>
>>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>
>>
>> <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> 
>> 	Libre de virus. www.avast.com 
>> <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> 
>>
>>
>> <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
>>
>> _______________________________________________
>> users mailing list
>> users at lists.scilab.org
>> https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users
>
>
> -- 
> Stéphane Mottelet
> Ingénieur de recherche
> EA 4297 Transformations Intégrées de la Matière Renouvelable
> Département Génie des Procédés Industriels
> Sorbonne Universités - Université de Technologie de Compiègne
> CS 60319, 60203 Compiègne cedex
> Tel : +33(0)344234688
> http://www.utc.fr/~mottelet
>
>
> _______________________________________________
> users mailing list
> users at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20190115/8e90578e/attachment.htm>


More information about the users mailing list