[Scilab-users] Strange behaviour of prod on rationals

Federico Miyara fmiyara at fceia.unr.edu.ar
Sun Mar 22 05:33:46 CET 2020


Stéphane,

In the meantime, a workaround is to toggle simplification off:

simp_mode(%f).

This inhibits simplification.

Regards,

Federico Miyara


On 20/03/2020 10:42, Stéphane Mottelet wrote:
>
> (num,den) calling style seems to be OK:
>
> --> [a,b]=simp(prod(q.num),prod(q.den))
>  a  =
>
>                                     2            3            4
>    3.432D-17 +1.230D-16s +3.079D-16s  +5.709D-17s  +3.432D-17s
>
>  b  =
>
>                                     2            3   4
>    1.0000004 +61.501079s +59.597296s  +14.304769s  +s
>
> The problem is in %r_simp code, which does a cleaning, but not a 
> complete one. If fact we should have the same result when the cleaning 
> is done afterwards :
>
> --> clean(a/b)
>  ans  =
>
>
>    0
>    --
>
>    1
>
> which is OK to me when you see this:
>
> --> w=10^(1:6); abs(horner(a/b,%i*w))
>  ans  =
>
>    2.224D-17   3.415D-17   3.432D-17   3.432D-17   3.432D-17 3.432D-17
>
> S.
>
>
> Le 20/03/2020 à 14:10, Stéphane Mottelet a écrit :
>>
>> Hello Frederico,
>>
>> The problem is in simp() :
>>
>> ---> rlist(prod(a.num),prod(a.den),a.dt)
>>  ans  =
>>
>>                                       2 3            4
>>    3.432D-17 + 1.230D-16s + 3.079D-16s + 5.709D-17s + 3.432D-17s
>> --------------------------------------------------------------
>>                                           2            3 4
>>        1.0000004 + 61.501079s + 59.597296s + 14.304769s + s
>>
>>
>> ---> simp(rlist(prod(a.num),prod(a.den),a.dt))
>>  ans  =
>>
>>                                       2 3            4
>>    3.432D-17 + 1.230D-16s + 3.079D-16s + 5.709D-17s + 3.432D-17s
>> --------------------------------------------------------------
>>
>>                                  1
>>
>> S.
>>
>> Le 17/03/2020 à 10:30, Federico Miyara a écrit :
>>>
>>> Dear all,
>>>
>>> Look at this code (the coefficients are actually the result of 
>>> pevious calculations):
>>>
>>> NUM = [5.858D-09 + 2.011D-08*%s + 4.884D-08*%s^2 ...
>>> 5.858D-09 + 8.796D-10*%s + 7.028D-10*%s^2]
>>> DEN = [0.1199597 + 7.2765093*%s + %s^2 ...
>>>        8.336136 + 7.0282601*%s + %s^2]
>>> q = NUM./DEN
>>>
>>> Running it yields
>>>
>>>    5.858D-09 +2.011D-08s +4.884D-08s²  5.858D-09 +8.796D-10s 
>>> +7.028D-10s²
>>>    ---------------------------------- 
>>> ----------------------------------
>>>        0.1199597 +7.2765093s +s²            8.336136 +7.0282601s +s²
>>>
>>> This is, correctly, a two-component rational vector with the 
>>> expected numerators and denominators.
>>>
>>> Now let's evaluate
>>>
>>> q = prod(NUM./DEN)
>>>
>>> The prod documantation sys that the argument may be "an array of 
>>> reals, complex, booleans, polynomials or rational fractions". It 
>>> should provide the rational obtained by multiplying the twonumrators 
>>> and the two denominators. However, we get
>>>
>>>    3.432D-17 +1.230D-16s +3.079D-16s² +5.709D-17s³ +3.432D-17s⁴
>>> ------------------------------------------------------------
>>> 1
>>>
>>> The numeratoris right, but the expected denominator has been just 
>>> replaced by 1
>>>
>>> However, rewriting the command as
>>>
>>> prod(NUM)/prod(DEN)
>>>
>>> we get the expected result:
>>>
>>>    3.432D-17 +1.230D-16s +3.079D-16s² +5.709D-17s³ +3.432D-17s⁴
>>> ------------------------------------------------------------
>>>        1.0000004 +61.501079s +59.597296s² +14.304769s³ +s⁴
>>>
>>> This is quite strange!
>>>
>>> Now we repeat with simpler polynomials:
>>>
>>> NUM = [1-%s 2-%s]
>>> DEN = [1+%s 2+%s]
>>> q = NUM./DEN
>>>
>>> We get
>>>
>>>    1 -s  2 -s
>>>    ----  ----
>>>    1 +s  2 +s
>>>
>>> Now evaluate
>>>
>>> prod(NUM./DEN)
>>>
>>> The result is the expected one!
>>>
>>>    2 -3s +s²
>>>    ---------
>>>    2 +3s +s²
>>>
>>> The behavior seems to depend on the type of polynomials.
>>>
>>> Is this a bug or there is something I'm not interpreting correctly?
>>>
>>> Regards,
>>>
>>> Federico Miyara
>>>
>>> _______________________________________________
>>> 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
>> 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/20200322/c1b4dc7f/attachment.htm>


More information about the users mailing list