[Scilab-users] Strange behaviour of prod on rationals
Perrichon
perrichon.pierre at wanadoo.fr
Tue Mar 17 11:42:23 CET 2020
Here are examples of my process in Open loop (FTBO) or Close loop (FTBF)
Depending of managemat, D can have s14 …
De : Perrichon <perrichon.pierre at wanadoo.fr>
Envoyé : mardi 17 mars 2020 10:49
À : 'Users mailing list for Scilab' <users at lists.scilab.org>
Objet : RE: [Scilab-users] Strange behaviour of prod on rationals
Hello Federico
I have met few months or years ago this problem when i was developping my « OPTSIM Solution » software to fix parameters of a PID for turbines (30 mw to 2 gw) in Nyquist and Bode Plans with hydraulic parameters site
So I’ve seen instability of the denominator, witch damage calculus.
I don ‘t remember what I’ve done to get a cool solution, but it has been a hard and severe problem with syslin, tf2ss and ss2tf instructions
Sincerely
Pierre P.
De : users <users-bounces at lists.scilab.org <mailto:users-bounces at lists.scilab.org> > De la part de Federico Miyara
Envoyé : mardi 17 mars 2020 10:31
À : Users mailing list for Scilab <users at lists.scilab.org <mailto:users at lists.scilab.org> >
Objet : [Scilab-users] Strange behaviour of prod on rationals
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/e60a4033/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.jpg
Type: image/jpeg
Size: 45551 bytes
Desc: not available
URL: <https://lists.scilab.org/pipermail/users/attachments/20200317/e60a4033/attachment.jpg>
More information about the users
mailing list