<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244</link>
    <title>MATLAB Central Newsreader - Help!!! Eigenvalue program for frequency dependent matrix</title>
    <description>Feed for thread: Help!!! Eigenvalue program for frequency dependent matrix</description>
    <language>en-us</language>
    <copyright>&amp;copy;1994-2012 by MathWorks, Inc.</copyright>
    <webmaster>webmaster@mathworks.com</webmaster>
    <generator>MATLAB Central Newsreader</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <ttl>60</ttl>
    <image>
      <title>MathWorks</title>
      <url>http://www.mathworks.com/images/membrane_icon.gif</url>
    </image>
    <item>
      <pubDate>Wed, 09 Jul 2008 04:05:03 -0400</pubDate>
      <title>Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#441945</link>
      <author>Yogesh </author>
      <description>I am trying find the natural frequency of a vibration problem&lt;br&gt;
&lt;br&gt;
The standard eigenvalue problem looks like&lt;br&gt;
&lt;br&gt;
Kx=lMx&lt;br&gt;
&lt;br&gt;
for which there is a simple eig(K,M) command that does the&lt;br&gt;
trick. &lt;br&gt;
&lt;br&gt;
The trouble is that the K matrix is frequency dependent in&lt;br&gt;
this case. So, each element of the K matrix is a function of&lt;br&gt;
frequency. How can I approach this type of a problem in matlab?&lt;br&gt;
&lt;br&gt;
Help will be much appreciated!! &lt;br&gt;
&lt;br&gt;
Thanks,&lt;br&gt;
YM</description>
    </item>
    <item>
      <pubDate>Wed, 09 Jul 2008 05:32:02 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#441958</link>
      <author>Miroslav Balda</author>
      <description>&quot;Yogesh &quot; &amp;lt;yahoo@trashmail.net&amp;gt; wrote in message&lt;br&gt;
&amp;lt;g51ddf$pm4$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; I am trying find the natural frequency of a vibration problem&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The standard eigenvalue problem looks like&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Kx=lMx&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; for which there is a simple eig(K,M) command that does the&lt;br&gt;
&amp;gt; trick. &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; The trouble is that the K matrix is frequency dependent in&lt;br&gt;
&amp;gt; this case. So, each element of the K matrix is a function of&lt;br&gt;
&amp;gt; frequency. How can I approach this type of a problem in&lt;br&gt;
matlab?&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Help will be much appreciated!! &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Thanks,&lt;br&gt;
&amp;gt; YM&lt;br&gt;
&lt;br&gt;
Hi&lt;br&gt;
&lt;br&gt;
Your problem may be rewritten into the form&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;K(omega).X = M.X.S&lt;br&gt;
&lt;br&gt;
where &lt;br&gt;
K(omega) is a stiffness matrix of a system dependent on an&lt;br&gt;
operational frequency (speed),&lt;br&gt;
M is a mass matrix of the system,&lt;br&gt;
X is a modal matrix of the system composed of modal vectors,&lt;br&gt;
S is a diagonal spectral matrix with eigenvalues on diagonal.&lt;br&gt;
&lt;br&gt;
To each operational frequency omega belong matrices X and S,&lt;br&gt;
which are different from those belonging to other omega. The&lt;br&gt;
system is &quot;evolutionary&quot;. &lt;br&gt;
&lt;br&gt;
You wanted to solve the eigenvalue problem for omega as a&lt;br&gt;
function of S. It is possible to solve it in iterations for&lt;br&gt;
a single eigenvalue s_k, if you reguire that, say, omega=&lt;br&gt;
real(s_k). Then, you may use the MATLAB  function fzero&lt;br&gt;
applied to the difference  omega-real(s_k).&lt;br&gt;
&lt;br&gt;
I hope that it helps.&lt;br&gt;
&lt;br&gt;
Mira</description>
    </item>
    <item>
      <pubDate>Wed, 09 Jul 2008 18:12:04 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#442089</link>
      <author>Miroslav Balda</author>
      <description>&quot;Miroslav Balda&quot; &amp;lt;balda.nospam@cdm.it.cas.cz&amp;gt; wrote in&lt;br&gt;
message &amp;lt;g51igi$8g1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
:&lt;br&gt;
SNIP&lt;br&gt;
:&lt;br&gt;
&lt;br&gt;
&amp;gt; You wanted to solve the eigenvalue problem for omega as a&lt;br&gt;
&amp;gt; function of S. It is possible to solve it in iterations for&lt;br&gt;
&amp;gt; a single eigenvalue s_k, if you reguire that, say, omega=&lt;br&gt;
&amp;gt; real(s_k). Then, you may use the MATLAB  function fzero&lt;br&gt;
&amp;gt; applied to the difference  omega-real(s_k).&lt;br&gt;
&lt;br&gt;
Sorry, there should be  omega = imag(s_k).&lt;br&gt;
&lt;br&gt;
Mira</description>
    </item>
    <item>
      <pubDate>Wed, 09 Jul 2008 21:30:25 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#442141</link>
      <author>Miroslav Balda</author>
      <description>&quot;Miroslav Balda&quot; &amp;lt;balda.nospam@cdm.it.cas.cz&amp;gt; wrote in&lt;br&gt;
message &amp;lt;g51igi$8g1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
:&lt;br&gt;
SNIP&lt;br&gt;
:&lt;br&gt;
&lt;br&gt;
&amp;gt; You wanted to solve the eigenvalue problem for omega as a&lt;br&gt;
&amp;gt; function of S. It is possible to solve it in iterations for&lt;br&gt;
&amp;gt; a single eigenvalue s_k, if you reguire that, say, omega=&lt;br&gt;
&amp;gt; real(s_k). Then, you may use the MATLAB  function fzero&lt;br&gt;
&amp;gt; applied to the difference  omega-real(s_k).&lt;br&gt;
&lt;br&gt;
Sorry, there should be  omega = imag(s_k).&lt;br&gt;
&lt;br&gt;
Mira</description>
    </item>
    <item>
      <pubDate>Fri, 11 Jul 2008 21:08:02 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#442582</link>
      <author>Yogesh </author>
      <description>&quot;Miroslav Balda&quot; &amp;lt;miroslav.nospam@balda.cz&amp;gt; wrote in message&lt;br&gt;
&amp;lt;g53alh$2tc$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; &quot;Miroslav Balda&quot; &amp;lt;balda.nospam@cdm.it.cas.cz&amp;gt; wrote in&lt;br&gt;
&amp;gt; message &amp;lt;g51igi$8g1$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&amp;gt; :&lt;br&gt;
&amp;gt; SNIP&lt;br&gt;
&amp;gt; :&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; &amp;gt; You wanted to solve the eigenvalue problem for omega as a&lt;br&gt;
&amp;gt; &amp;gt; function of S. It is possible to solve it in iterations for&lt;br&gt;
&amp;gt; &amp;gt; a single eigenvalue s_k, if you reguire that, say, omega=&lt;br&gt;
&amp;gt; &amp;gt; real(s_k). Then, you may use the MATLAB  function fzero&lt;br&gt;
&amp;gt; &amp;gt; applied to the difference  omega-real(s_k).&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Sorry, there should be  omega = imag(s_k).&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Mira&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
Hi Mira,&lt;br&gt;
&lt;br&gt;
Thanks for your response. I had implemented something&lt;br&gt;
similar before posting it on the newsgroup. &lt;br&gt;
&lt;br&gt;
Here is what I was doing:&lt;br&gt;
&lt;br&gt;
1. Assume a certain omega.&lt;br&gt;
2. Find K for this omega&lt;br&gt;
3. Find eigenvalues&lt;br&gt;
4. Check is the eigenvalue is the same as the omega assumed&lt;br&gt;
in step-1. &lt;br&gt;
5. If yes, this omega is an eigenvalue. Store the freuqency&lt;br&gt;
and eigenvector.&lt;br&gt;
&lt;br&gt;
There are &quot;numerical&quot; problems with this approach though. I&lt;br&gt;
know that the frequency will lie between 0-10,000 Hz. Now,&lt;br&gt;
your ability to predict the eigenvalue depends upon how good&lt;br&gt;
your approximation in (1) is. This, in my opinion, is not&lt;br&gt;
the most elegant approach.&lt;br&gt;
&lt;br&gt;
I tried vector iteration approaches but they can only give&lt;br&gt;
the first and last eigenvalues.&lt;br&gt;
&lt;br&gt;
I appreciate your inputs and thank you again.</description>
    </item>
    <item>
      <pubDate>Sat, 12 Jul 2008 08:35:15 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#442611</link>
      <author>Rune Allnor</author>
      <description>On 11 Jul, 23:08, &quot;Yogesh &quot; &amp;lt;ya...@trashmail.net&amp;gt; wrote:&lt;br&gt;
&amp;gt; &quot;Miroslav Balda&quot; &amp;lt;miroslav.nos...@balda.cz&amp;gt; wrote in message&lt;br&gt;
&amp;gt; Here is what I was doing:&lt;br&gt;
&amp;gt;&lt;br&gt;
&amp;gt; 1. Assume a certain omega.&lt;br&gt;
&amp;gt; 2. Find K for this omega&lt;br&gt;
&lt;br&gt;
Depending on exactly what you do, this will be the wrong answer.&lt;br&gt;
If this is a wave propagation problem (the terminology suggests&lt;br&gt;
it is) then the eigenvalues you are looking for are pairs of&lt;br&gt;
frequencies and wavenumbers (w,k) that make the boundary&lt;br&gt;
conditions in the physical environment match.&lt;br&gt;
&lt;br&gt;
For instance, if you work with acoustic waves in a perfect&lt;br&gt;
underwater waveguide, the reflection coefficient at the&lt;br&gt;
water surface is -1 and at the bottom +1.&lt;br&gt;
&lt;br&gt;
So you want to find the pair(s) (w,k) that meets the&lt;br&gt;
boundary conditions *both* at the surface and at the&lt;br&gt;
bottom. Depending on exactly what you look for, there may&lt;br&gt;
be any number of solutions.&lt;br&gt;
&lt;br&gt;
Check out the book 'Computational Ocean Acoustics' by&lt;br&gt;
Jensen &amp; al to find a number of ways to find eigenvalues&lt;br&gt;
in wave propagation problems.&lt;br&gt;
&lt;br&gt;
Rune</description>
    </item>
    <item>
      <pubDate>Mon, 14 Jul 2008 16:00:24 -0400</pubDate>
      <title>Re: Help!!! Eigenvalue program for frequency dependent matrix</title>
      <link>http://www.mathworks.com/matlabcentral/newsreader/view_thread/172244#442858</link>
      <author>Miroslav Balda</author>
      <description>&quot;Yogesh &quot; &amp;lt;yahoo@trashmail.net&amp;gt; wrote in message&lt;br&gt;
&amp;lt;g58i3i$8f6$1@fred.mathworks.com&amp;gt;...&lt;br&gt;
&lt;br&gt;
Sorry that I am replaying so late. I was off the Internet.&lt;br&gt;
My reply concernes discrete mechanical systems, say&lt;br&gt;
multibody systems.&lt;br&gt;
&amp;nbsp;:&lt;br&gt;
&amp;nbsp;SNIP&lt;br&gt;
&amp;nbsp;:&lt;br&gt;
&amp;gt; Thanks for your response. I had implemented something&lt;br&gt;
&amp;gt; similar before posting it on the newsgroup. &lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; Here is what I was doing:&lt;br&gt;
&amp;gt; &lt;br&gt;
&amp;gt; 1. Assume a certain omega.&lt;br&gt;
&amp;gt; 2. Find K for this omega&lt;br&gt;
&amp;gt; 3. Find eigenvalues&lt;br&gt;
&amp;gt; 4. Check is the eigenvalue is the same as the omega assumed&lt;br&gt;
&amp;gt; in step-1. &lt;br&gt;
&amp;gt; 5. If yes, this omega is an eigenvalue. Store the freuqency&lt;br&gt;
&amp;gt; and eigenvector.&lt;br&gt;
&amp;gt; &lt;br&gt;
&lt;br&gt;
In principal, the procedure is in order. However, I have&lt;br&gt;
also found problems with convergence. This has been a reasom&lt;br&gt;
why I aplied the function LMFnlsq (FEX Id 17524). The best&lt;br&gt;
way how to show it is a solved example:&lt;br&gt;
%Main script:&lt;br&gt;
%   Yogesh      Balda, 2008-07-14&lt;br&gt;
%%%%%%%%%%%%&lt;br&gt;
omega = 300;    %   Initial guess for omega near to first&lt;br&gt;
eigenvalue&lt;br&gt;
omega = LMFnlsq('KomgM',omega,'Display',1)&lt;br&gt;
&lt;br&gt;
%   Example of a cost function:&lt;br&gt;
function ds = KomgM(omg)&lt;br&gt;
% ds    difference between eigenvalue and omega&lt;br&gt;
% Mass matrix:&lt;br&gt;
M = diag([5, 32.12, 32.12, 5]);         %   [kg]&lt;br&gt;
% Stiffness matrix:&lt;br&gt;
K = [0.4397, -0.6143,  0.4095, -0.0683  %   [N/m]&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-0.6143,  1.6381, -1.4334,  0.4095&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0.4095, -1.4334,  1.6381, -0.6143&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-0.0683,  0.4095, -0.6143,  0.4397]*1e7;&lt;br&gt;
K = K-10*omg*diag(ones(4,1)); Frequeny dependent K&lt;br&gt;
s = sqrt(eig(K,M));&lt;br&gt;
omega = s(k);&lt;br&gt;
&lt;br&gt;
And results for the second natural frequency:&lt;br&gt;
&amp;gt;&amp;gt; Yogesh&lt;br&gt;
***************************************************************************&lt;br&gt;
&amp;nbsp;&amp;nbsp;itr  nfJ   SUM(r^2)        x           dx           l    &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lc&lt;br&gt;
***************************************************************************&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;0    1  1.4677e+004  3.0000e+002  0.0000e+000 &lt;br&gt;
0.0000e+000  1.0000e+000 &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;1    2  1.2516e-006  4.2099e+002 -1.2099e+002 &lt;br&gt;
0.0000e+000  1.0000e+000 &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;2    3  6.6392e-017  4.2099e+002  1.1173e-003 &lt;br&gt;
0.0000e+000  1.0000e+000 &lt;br&gt;
&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;3    4  6.6392e-017  4.2099e+002  2.3314e-008 &lt;br&gt;
0.0000e+000  1.0000e+000 &lt;br&gt;
omega =&lt;br&gt;
&amp;nbsp;&amp;nbsp;420.9890&lt;br&gt;
&lt;br&gt;
It is obvious that the solution has been found in 4&lt;br&gt;
iterations and that square of delta s(2)-omega  dropped down&lt;br&gt;
by 21 orders! It is necessary to stress out that the code is&lt;br&gt;
not optimized. &lt;br&gt;
&lt;br&gt;
Hope it helps&lt;br&gt;
&lt;br&gt;
Mira&lt;br&gt;
&amp;nbsp;</description>
    </item>
  </channel>
</rss>

