[Scilab-users] eigs calculation

Carrico, Paul paul.carrico at esterline.com
Fri Jun 19 10:49:57 CEST 2015


Dear

I've been reading all the advices that (all of them) speak about the need to normalize the data in order to avoid the ill-conditioned issues (and to be the closest as possible to the value 1.0) ; the example shared by Serge Steer is quite interesting and highlights the ill-conditioning issue.

Nevertheless I'm a bit confuse on how to do it in order to rebuild the results afterward:
[u,v] = eigs(K((ddl_elem+1):$,(ddl_elem+1):$),M((ddl_elem+1):$,(ddl_elem+1):$),n,"SM"); 

pulse_ =sqrt(diag(u))                //pulse - circular frequency
freq_ = pulse_/(2*%pi);          //natural frequency

Naively I thought that the following would have fix the problem:
- using max(K) and max(M) to normalize the sparse matrix,
- removing the smallest values (i.e. bellow a threshold value) 

... but the matrix becomes singular (why ?).

So is there any additional advice ?

Paul

 

-----Message d'origine-----
De : users [mailto:users-bounces at lists.scilab.org] De la part de Serge Steer Envoyé : jeudi 18 juin 2015 10:08 À : users at lists.scilab.org Objet : Re: [Scilab-users] eigs calculation

Le 17/06/2015 22:18, Carrico, Paul a écrit :
> Dear All
>
> Thanks for the answers.
>
> To give more information's on what I'm doing (That's quite new I confess), I'm performing  a (basic) finite element calculation with beams using sparse matrix (stiffness matrix K and mass matrix M).
> [u,v] =
> eigs(K((ddl_elem+1):$,(ddl_elem+1):$),M((ddl_elem+1):$,(ddl_elem+1):$)
> ,n,"SM");
>
> Nota: ddl means dof
>
> I'm calculated first the natural frequencies using (K - omega^2.M).x=0 ... the pulse (or circular frequencies)  are no more and no less than the eigenvalues of the above system (u = omega^2).
>
> Just a "mechanical" remark: since the beam is clamped in one side (and free on the tip),  it is absolutely normal that you find twice the same natural frequency (1rst mode in one direction, the second one in a new direction at 90°) .... I've been really surprised to find it, but happy at the same time ...
>
> The origin of my question was: since it obvious that the results are strongly sensitive to the "units" (i.e. the numbers), I'm wondering if there is a way to control the accuracy of the eigenvalues calculation using eigs keywords ... 
There is no way to improve accurary with an option. In general the numerical algorithms try to return the best solution.
But it should be possible to improve accuracy by a well suited normalisation (unit change for example!)

The condition number of u gives a measure of the numerical difficulty to solve the problem


Note that as stated the eigenvalue computation may be a ill conditionned problem in particular when there are clusters of eigenvalues

Please find below a little script which illustrate a typicall case A=zeros(10,10)+diag(ones(1,9),1);A(10,1)=%eps;
s=spec(A);
clf;plot(real(s),imag(s),'+');

Serge Steer
> In any way, thanks for the debate
>
> Paul

_______________________________________________
users mailing list
users at lists.scilab.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.scilab.org_mailman_listinfo_users&d=AwIF-g&c=0hKVUfnuoBozYN8UvxPA-w&r=4TCz--8bXfJhZZvIxJAemAJyz7Vfx78XvgYu3LN7eLo&m=S2zme-g7wK4GeuiYqaod2UALQUgCMA5H4YAmnwGMSjE&s=yrKeTLe9iyrw3ACr0KvvHnUusYyMaXo-RoPpv8yhipg&e= 

EXPORT CONTROL : 
Cet email ne contient pas de données techniques
This email does not contain technical data


More information about the users mailing list