[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
- Octave for Mac with Reference Lapack, Lukas Reichlin, 2012/05/29
- Re: Octave for Mac with Reference Lapack, Sergei Steshenko, 2012/05/29
- Re: Octave for Mac with Reference Lapack, Ben Abbott, 2012/05/29
- Re: Octave for Mac with Reference Lapack, c., 2012/05/29
- Re: Octave for Mac with Reference Lapack, Lukas Reichlin, 2012/05/29
- Re: Octave for Mac with Reference Lapack, c., 2012/05/29
- Re: Octave for Mac with Reference Lapack, Lukas Reichlin, 2012/05/29
- Re: Octave for Mac with Reference Lapack, c., 2012/05/29
- Re: Octave for Mac with Reference Lapack, Lukas Reichlin, 2012/05/29
- Re: Octave for Mac with Reference Lapack, c., 2012/05/29
- Re: Octave for Mac with Reference Lapack, Lukas Reichlin, 2012/05/29
- Re: Octave for Mac with Reference Lapack, c., 2012/05/29