[Scilab-users] eigs calculation

tim at wescottdesign.com tim at wescottdesign.com
Wed Jun 17 17:55:50 CEST 2015


On 2015-06-17 06:50, Carrico, Paul wrote:
> Dear All,
> 
> I'm performing a (mechanical) calculation using the eigs and I've been
> noticing that the results are strongly sensitive on the unit system
> I'm using; I can understand that high numbers can lead to some
> numerical "issues" …
> 
> Is there a way to increase the accuracy ?
> 
> Paul
> 
> PS: the 2 types of results
> 
> _NB_:
> 
> 1 (MPa) = 1E6 (Pa)
> 
> 1 (mm) = 1E-3 (m)
> 
> 1 (Kg/m^3) = 1E12 (T/mm^3)
> 
> [u,v] =
> eigs(K((ddl_elem+1):$,(ddl_elem+1):$),M((ddl_elem+1):$,(ddl_elem+1):$),n,"SM");
> 
> 
> a) calculation 1 in Pa, m, Kg/m^3
> 
> Natural frequency calculation:
> 
>  - Resonance 1 : 497.956 Hz
> 
>  - Resonance 2 : 3120.64 Hz
> 
>  - Resonance 3 : 5277.8 Hz
> 
>  - Resonance 4 : 6948.69 Hz
> 
>  - Resonance 5 : 8737.88 Hz
> 
>  - Resonance 6 : 15832.1 Hz
> 
>  - Resonance 7 : 17122.8 Hz
> 
>  - Resonance 8 : 20847.8 Hz
> 
>  - Resonance 9 : 26382.5 Hz
> 
>  - Resonance 10 : 28305.1 Hz
> 
>  - Resonance 11 : 34752 Hz
> 
>  - Resonance 12 : 36926.4 Hz
> 
> b) Calculation in MPa, mm, T/mm^3 ….
> 
> Natural frequency calculation:
> 
>  - Resonance 1 : 497.955 Hz
> 
>  - Resonance 2 : 497.956 Hz
> 
>  - Resonance 3 : 3120.59 Hz
> 
>  - Resonance 4 : 3120.64 Hz
> 
>  - Resonance 5 : 6948.69 Hz
> 
>  - Resonance 6 : 7463.93 Hz
> 
>  - Resonance 7 : 8737.56 Hz
> 
>  - Resonance 8 : 8737.88 Hz
> 
>  - Resonance 9 : 17121.6 Hz
> 
>  - Resonance 10 : 17122.8 Hz
> 
>  - Resonance 11 : 20847.8 Hz
> 
>  - Resonance 12 : 22390 Hz

Hi Paul:

I can't tell you about the innards of Scilab specifically, but 
eigenvalue calculation in general can be very sensitive to numerical 
issues.  If you're entering the data by hand or otherwise truncating the 
source data your entire difference in results may just be from rounding 
error in your source data.

If you're starting from one set of source data and multiplying by 
conversion constants, then you can try changing the tolerance (if it's 
not in the function then there's a global one, called, I think, %TOL).

There are ways to make the matrices more numerically stable.  I am 
absolutely positively not an expert on this, but I think that the more 
you can make your matrix into something with a band of non-zero numbers 
around the main diagonal and zeros elsewhere, the more stable the 
problem will be.

If mechanical systems are like control systems, then the numerical 
stability of the matrix that describes the system dynamics is just a 
reflection of the real sensitivity of the real system to manufacturing 
variations -- it may be that, in a group of several physical units all 
assembled to the same specification, you'll find that much variation in 
the real world!




More information about the users mailing list