[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