[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