[Scilab-users] Strange behaviour of prod on rationals
Stéphane Mottelet
stephane.mottelet at utc.fr
Fri Mar 20 14:42:09 CET 2020
(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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200320/94af6019/attachment.htm>
More information about the users
mailing list