help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave for Mac with Reference Lapack


From: Lukas Reichlin
Subject: Re: Octave for Mac with Reference Lapack
Date: Tue, 29 May 2012 18:10:52 +0200

On 29.05.2012, at 17:40, Sergei Steshenko wrote:

> ----- Original Message -----
>> From: Lukas Reichlin <address@hidden>
>> To: Alexander Hansen <address@hidden>
>> Cc: help-octave <address@hidden>
>> Sent: Tuesday, May 29, 2012 6:24 PM
>> Subject: Re: Octave for Mac with Reference Lapack
> [snip]
>> 
>> The really bad examples from system identification are not ready for a 
>> release 
>> yet. But it is sufficient to install the official control-2.3.50 package on 
>> a 
>> Mac and run
>>     test_control
>> All tests should pass. A few sign changes are not a problem, but wrong 
>> Hankel 
>> singular values are a no-go. Framework Accelerate on Mac OS X 10.7 is the 
>> worst 
>> of all, not to say FUBAR, followed by various ATLAS 3.9.* releases (MacPorts 
>> doesn't have 3.8.x). Accelerate from 10.6 is slightly better, but still 
>> unusable for SLICOT system identification purposes. I lost several weeks of 
>> my 
>> thesis because of that …
>> 
>> Best regards,
>> Lukas
>> 
> 
> See below what I have on my Linux box. Is it the errors you are talking about 
> ?
> 
> Regards,
>   Sergei.
> 
> octave:1> test_control
>   ***** assert (ac, ac_e, 1e-4);
> !!!!! test failed
> assert (ac,ac_e,1e-4) expected
>    0.00000   0.00000   0.00000   0.00000  -1.26270   0.43340   0.46660
>    0.00000   2.00000   0.00000  -3.74170  -0.85200   0.29240  -0.43420
>    0.00000   0.00000   1.78620   0.37800  -0.26510  -0.77230   0.00000
>    0.00000   0.00000   0.00000   3.74170   0.85200  -0.29240   0.43420
>    0.00000   0.00000   0.00000   0.00000  -1.55400   0.53340   0.57420
>    0.00000   0.00000   0.00000   0.00000  -0.65330   0.22420   0.24140
>    0.00000   0.00000   0.00000   0.00000  -0.58920   0.20220   0.21770
> but got
>    0.00000   0.00000  -0.00000   0.00000  -1.41132  -0.00509  -0.09025
>    0.00000   2.00000   0.00000  -3.74166  -0.70600  -0.70821   0.00000
>    0.00000   0.00000   1.78619   0.37796   0.05219  -0.05202  -0.81316
>    0.00000   0.00000   0.00000   3.74166   0.70600   0.70821  -0.00000
>    0.00000   0.00000   0.00000   0.00000   1.98980   0.00718   0.12724
>    0.00000   0.00000   0.00000   0.00000   0.01122   0.00004   0.00072
>    0.00000   0.00000   0.00000   0.00000   0.15568   0.00056   0.00996
> maximum absolute error 3.5438 exceeds tolerance 0.0001
> PASSES 5 out of 5 tests
> PASSES 3 out of 3 tests
> PASSES 5 out of 5 tests
> PASSES 1 out of 1 tests
> PASSES 1 out of 1 tests
> PASSES 9 out of 9 tests
> PASSES 1 out of 1 tests
> PASSES 4 out of 4 tests
> PASSES 1 out of 1 tests
> PASSES 22 out of 22 tests
> PASSES 12 out of 12 tests
> PASSES 8 out of 8 tests
> PASSES 2 out of 2 tests
> PASSES 2 out of 2 tests
> PASSES 27 out of 27 tests
> PASSES 7 out of 7 tests
> PASSES 3 out of 3 tests
> PASSES 3 out of 3 tests
> PASSES 4 out of 4 tests
> PASSES 2 out of 2 tests
> PASSES 5 out of 5 tests
> PASSES 3 out of 3 tests
> PASSES 3 out of 3 tests
>   ***** assert (Mo, Me, 1e-4);
> !!!!! test failed
> assert (Mo,Me,1e-4) expected
>    1.27290   0.00000   6.59470   0.00000  -3.42290   0.13310  -0.13310
>    0.00000   0.81690   0.00000   2.48210   0.00000  -0.08620  -0.08620
>   -2.98890   0.00000  -2.90280   0.00000  -0.36920  -2.67770   2.67770
>    0.00000  -3.39210   0.00000  -3.11260   0.00000  -3.57670  -3.57670
>   -1.47670   0.00000  -2.03390   0.00000  -0.61070  -2.30330   2.30330
>   -0.69070  -0.68820   0.07790   0.09580  -0.00380   0.00000   0.00000
>    0.06760   0.00000   0.65320   0.00000  -0.75220   0.00000   0.00000
>    0.69070  -0.68820  -0.07790   0.09580   0.00380   0.00000   0.00000
> but got
>    1.27295   0.00000  -6.59466   0.00000  -3.42287  -0.13307   0.13307
>   -0.00000   0.81688   0.00000   2.48210   0.00000   0.08620   0.08620
>    2.98890  -0.00000  -2.90283   0.00000   0.36919  -2.67775   2.67775
>   -0.00000  -3.39208  -0.00000  -3.11263  -0.00000   3.57669   3.57669
>   -1.47666   0.00000   2.03393  -0.00000  -0.61070   2.30328  -2.30328
>    0.69073   0.68823   0.07791  -0.09576   0.00376   0.00000   0.00000
>   -0.06755  -0.00000   0.65316  -0.00000   0.75223   0.00000   0.00000
>   -0.69073   0.68823  -0.07791  -0.09576  -0.00376   0.00000   0.00000
> maximum absolute error 13.1894 exceeds tolerance 0.0001
> shared variables
>   scalar structure containing the fields:
> 
>     Mo =
> 
>        1.27295   0.00000  -6.59466   0.00000  -3.42287  -0.13307   0.13307
>       -0.00000   0.81688   0.00000   2.48210   0.00000   0.08620   0.08620
>        2.98890  -0.00000  -2.90283   0.00000   0.36919  -2.67775   2.67775
>       -0.00000  -3.39208  -0.00000  -3.11263  -0.00000   3.57669   3.57669
>       -1.47666   0.00000   2.03393  -0.00000  -0.61070   2.30328  -2.30328
>        0.69073   0.68823   0.07791  -0.09576   0.00376   0.00000   0.00000
>       -0.06755  -0.00000   0.65316  -0.00000   0.75223   0.00000   0.00000
>       -0.69073   0.68823  -0.07791  -0.09576  -0.00376   0.00000   0.00000
> 
>     Me =
> 
>        1.27290   0.00000   6.59470   0.00000  -3.42290   0.13310  -0.13310
>        0.00000   0.81690   0.00000   2.48210   0.00000  -0.08620  -0.08620
>       -2.98890   0.00000  -2.90280   0.00000  -0.36920  -2.67770   2.67770
>        0.00000  -3.39210   0.00000  -3.11260   0.00000  -3.57670  -3.57670
>       -1.47670   0.00000  -2.03390   0.00000  -0.61070  -2.30330   2.30330
>       -0.69070  -0.68820   0.07790   0.09580  -0.00380   0.00000   0.00000
>        0.06760   0.00000   0.65320   0.00000  -0.75220   0.00000   0.00000
>        0.69070  -0.68820  -0.07790   0.09580   0.00380   0.00000   0.00000
> 
>     Info =
> 
>       scalar structure containing the fields:
> 
>         n =  7
>         ns =  7
>         hsv =
> 
>            0.880263
>            0.850619
>            0.803778
>            0.449390
>            0.397312
>            0.021408
>            0.020850
> 
>         nu = 0
>         nr =  5
> 
>     HSVe =
> 
>        0.880300
>        0.850600
>        0.803800
>        0.449400
>        0.397300
>        0.021400
>        0.020900
> 
> PASSES 2 out of 2 tests
> PASSES 2 out of 2 tests
> PASSES 2 out of 2 tests
> PASSES 2 out of 2 tests
> PASSES 2 out of 2 tests
> PASSES 1 out of 1 tests
> PASSES 4 out of 4 tests
> PASSES 1 out of 1 tests
> PASSES 4 out of 4 tests
> PASSES 1 out of 1 tests
> PASSES 2 out of 2 tests
> PASSES 30 out of 30 tests
> PASSES 2 out of 2 tests
> PASSES 1 out of 1 tests
> PASSES 2 out of 2 tests
> octave:2>

Yes, these are failing tests, but the results are not "wrong". You can do any 
state transformations (but not input/output transformations) in state-space 
models without changing the input-output behaviour of the system, but the 
Hankel singular Values (HSV) must not change (for better numerics, the control 
package uses such transformations by default when calculating the frequency 
responses and a few other things)

From the help text of the "prescale" function:

          Es = Tl * E * Tr
          As = Tl * A * Tr
          Bs = Tl * B
          Cs =      C * Tr
          Ds =      D

     For proper state-space models, TL and TR are inverse of each other.

In your case, matrices Tl and Tr have just a few -1 entries.

BTW: Linux might be a different story. When I tested with Fedora 16 some time 
ago, the results were surprisingly good.

Cheers,
Lukas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]