MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

smooth eigenvalues and eigenvectors as a function of frequency

  • To: mathgroup at smc.vnet.net
  • Subject: [mg60312] smooth eigenvalues and eigenvectors as a function of frequency
  • From: "Antonio Carlos Siqueira" <acsl at dee.ufrj.br>
  • Date: Sat, 10 Sep 2005 22:36:35 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Dear MathGroup

I am posting this message hoping that someone may have a better idea
than me and point me in some direction to the solution. I have to fit a
complex based function using a state-space approach and thus smooth
eigenvectors and eigenfunctions are needed. Using Eigensystem I
experienced some eigenvector/eigenvalues switchovers (from one
frequency step to the next).
I was wondering whether some sort of MapIndexed or some Sort can do the
trick to switch the eigenvector back. I know that if I can track the
direction of the eigenvalue.eigenvector dot product I might probably
identify the switchover.

Below I show the code I am using and a graph as an example of the
switchover.

Any help/comment is more than welcome!

Thanks in advance

Regards
Antonio

Here comes the code


evalues = Table[0, {n, 1, nf}];
evectors= evects1;

xc={-9.5, -9.5, -9.5, 9.5, 9.5, 9.5};
yc={26., 38.7, 51.4, 26., 38.7, 51.4};

nc=Length[xc];
compr = 25*10^3;
  rf = 0.0203454;
  rhoc = 4.169134020401465*^-8;
  rhosolo=100.0;

mu = (4.*Pi)/10^7;
epsilon = 8.854/10^12;

freqlog[i_, f_, n_] := Table[N[10^(i + (x*(f - i))/(Floor[n] - 1))],
   {x, 0, n - 1}]
length = 25000;
npontos = 20;
d1 = 0; d2 = 6;
ndecadas = d2 - d1;
nfd = ndecadas*npontos;
f = freqlog[d1, d2, nfd];
nf = Length[f];

Do[{w = 2*Pi*f[[nm]],
   p = Sqrt[rhosolo/(I*w*µ)],
   etac = Sqrt[(I*w*µ)/rhoc],
 Z = Table[If[i != j, ((I*w*mu)*
         Log[Sqrt[(xc[[i]] - xc[[j]])^2 + (2*p + yc[[i]] + yc[[j]])^2]/
         Sqrt[(xc[[i]] - xc[[j]])^2 + (yc[[i]] - yc[[j]])^2]])/(2*Pi),
         ((etac*rhoc)*BesselI[0, etac*rf])/((2*Pi*rf)*BesselI[1,
etac*rf]) +
         ((I*w*mu)*Log[(2*p + 2*yc[[i]])/rf])/(2*Pi)],
         {i, 1, ncond}, {j, 1, ncond}],
 P = Table[If[i != j,
         Log[Sqrt[(xc[[i]] - xc[[j]])^2 + (yc[[i]] + yc[[j]])^2]/
         Sqrt[(xc[[i]] - xc[[j]])^2 + (yc[[i]] - yc[[j]])^2]],
         Log[(2.*yc[[i]])/rf]], {i, 1, ncond}, {j, 1, ncond}],
    Y = I*w*2*Pi*epsilon*Inverse[P],
    {ll, T} = Eigensystem[Z . Y],
    {evalues[[nm]], evectors[[nm]]} =
    Transpose[Sort[Transpose[{ll, T}]]]}, {nm, 1, nf}]]

DisplayTogether[
       LogLinearListPlot[Transpose[{f, Re[evectors[[All,3,1]]]}]],

       LogLinearListPlot[Transpose[{f, Re[evectors[[All,3,2]]]}]],
       LogLinearListPlot[Transpose[{f, Re[evectors[[All,3,3]]]}]],
       LogLinearListPlot[Transpose[{f, Re[evectors[[All,3,4]]]}]]


  • Prev by Date: Re: Condition for pure functions
  • Next by Date: Re: Why this function does not return a single value
  • Previous by thread: Re: Generate a palette with a FrontEnd Token
  • Next by thread: Re: smooth eigenvalues and eigenvectors as a function of frequency