[Scilab-users] Strange behaviour of prod on rationals
Federico Miyara
fmiyara at fceia.unr.edu.ar
Tue Mar 17 10:30:43 CET 2020
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20200317/20ee0c30/attachment.htm>
More information about the users
mailing list