[Scilab-users] improve accuracy of roots
Stéphane Mottelet
stephane.mottelet at utc.fr
Tue Jan 15 18:14:05 CET 2019
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20190115/00d2b95c/attachment.htm>
More information about the users
mailing list