[Date Index]
[Thread Index]
[Author Index]
Re: Eigenvalues and eigenvectors of a matrix with nonpolynomial elements.
*To*: mathgroup at smc.vnet.net
*Subject*: [mg51313] Re: [mg51284] Eigenvalues and eigenvectors of a matrix with nonpolynomial elements.
*From*: DrBob <drbob at bigfoot.com>
*Date*: Thu, 14 Oct 2004 06:35:50 -0400 (EDT)
*References*: <200410120557.BAA19223@smc.vnet.net>
*Reply-to*: drbob at bigfoot.com
*Sender*: owner-wri-mathgroup at wolfram.com
Why not let Mathematica do the work?
mat = {{-1,
0, -1, 0}, {-Cos[k], -Sin[k], -
Cosh[k], -Sinh[k]}, {1, 0, -1, 0}, {Sin[k], -Cos[k], -Sinh[
k], -Cosh[k]}};
mat // MatrixForm
Eigensystem@mat
(voluminous output omitted)
Your use of FindRoot below didn't find the eigenvalues of a single matrix; it found the values of k that make the matrix singular. At each value of k (whether it's one of those roots or not), the matrix has a different Eigensystem.
Bobby
On Tue, 12 Oct 2004 01:57:47 -0400 (EDT), Goyder Dr HGD <h.g.d.goyder at cranfield.ac.uk> wrote:
> I need to find the eigenvalues and eigenvectors of matrices where the elements depend on a variable, k, in a nonpolynomial manner. Thus, according to my (limited) knowledge of eigensystems, the eigenvalues are the values of k that make the determinant zero and there should be an eigenvector associated with each eigenvalue. A simple warm-up example is given below; my actual cases will be more complicated. I wish to know if the method I have put together below, using engineering rather than maths, is suitable and what accuracy I can expect.
>
> First, here is the warm-up problem; the matrix is called mat and depends on the variable k. I start by working out the determinant.
>
> In[39]:=
> mat = {{-1, 0, -1, 0}, {-Cos[k], -Sin[k], -Cosh[k], -Sinh[k]}, {1, 0, -1, 0},
> {Sin[k], -Cos[k], -Sinh[k], -Cosh[k]}};
>
> In[40]:=
> d = Det[mat]
>
> Out[40]=
> 2*Cosh[k]*Sin[k] - 2*Cos[k]*Sinh[k]
>
> Second, I find one of the roots. There are an infinite number of roots and Ted Ersek's method for finding all the roots in an interval might help. I assume that each root is an eigenvalue: is this always true?
>
> In[41]:=
> rt = FindRoot[d, {k, 6, 8}]
>
> Out[41]=
> {k -> 7.068582745628732}
>
> Third, I attempt to get the eigenvector. It has been necessary to "go numeric" and so I need a method that will cope with numerical issues. I try singular value decomposition because I feel that the information is in there somewhere.
>
> In[43]:=
> {u, w, v} = SingularValueDecomposition[mat /. rt];
>
> Examination of the singular values indicates that the last one is zero. I assume that this means that this singular value is associated with a zero determinant. I select the column of v associated with the zero singular value and hope that this is the eigenvector.
>
> In[46]:=
> vec = Transpose[v][[-1]];
>
> A check shows that the selected vector when multiplied by the matrix evaluated at the eigenvalue gives approximately zero: this looks hopeful. Am I on the correct track?
>
> In[47]:=
> (mat /. rt) . vec
>
> Out[47]=
> {3.883820346708995*^-17, 1.2588519636425044*^-13, -1.1055045534287126*^-16, 1.255173265671261*^-13}
>
> Are there better methods? In general how do I set up the number of figures to give me a target accuracy for the eigenvalue and vector?
>
> Thanks
> Hugh Goyder
>
>
>
>
--
DrBob at bigfoot.com
www.eclecticdreams.net
Prev by Date:
**Sorting a list of pairs on the second elements**
Next by Date:
**Re: argMax**
Previous by thread:
**Eigenvalues and eigenvectors of a matrix with nonpolynomial elements.**
Next by thread:
**Re: Eigenvalues and eigenvectors of a matrix with nonpolynomial elements.**
| |