I am trying to determine eigenvalues for an nxn matrix where n>2

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

basically I am trying to determine the math steps for determining the
eigenvalues for a nxn matrix where n= either 3 or 4.
 
Eigenvalues for a n x n matrix where n= either 3 or 4.

If you don't get a better response to a 3 by 3 matrix, here's a brute force
method to calculate the Characteristic Polynomial.
You then call a routine that Solves the cubic Equation with the following
coefficients.
Here, 'a is assumed to be 1.

Sub Demo()
Dim m
Dim b, c, d
Dim Det

m = [A1:C3]

'A future item to check...
'If Det = 0 then...
Det = WorksheetFunction.MDeterm(m)

'//=======================================
'// Characteristic Polynomial =
'// x^3 + b*x^2 + c*x + d = 0
'//=======================================

b = -(m(1, 1) + m(2, 2) + m(3, 3))

c = m(1, 1) * m(2, 2) - m(1, 3) * m(3, 1) - _
m(2, 3) * m(3, 2) + m(1, 1) * m(3, 3) + _
m(2, 2) * m(3, 3) - m(1, 2) * m(2, 1)

d = m(1, 3) * m(2, 2) * m(3, 1) - _
m(1, 2) * m(2, 3) * m(3, 1) - _
m(1, 3) * m(2, 1) * m(3, 2) + _
m(1, 1) * m(2, 3) * m(3, 2) + _
m(1, 2) * m(2, 1) * m(3, 3) - _
m(1, 1) * m(2, 2) * m(3, 3)

Debug.Print b
Debug.Print c
Debug.Print d
End Sub
 
It looks like the longer equation for d can be reduced...

Change:
d = m(1, 3) * m(2, 2) * m(3, 1) ...etc

to:

Det = WorksheetFunction.MDeterm(m)
d = -Det

--
HTH. :>)
Dana DeLouis
Windows XP, Office 2003

<snip>
 
For a 3x3 matrix, this might be slightly better to calculate the 3 variables
in the cubic equation.
You then solve the cubic equation to get your 3 Eigenvalues.
I'm not exactly sure how it's done for larger systems.

Sub Demo()
Dim m
Dim b, c, d
Dim j, p, n

'// Load array from A1:C3
m = [A1:C3]

'//=======================================
'// Characteristic Polynomial =
'// x^3 + b*x^2 + c*x + d = 0
'//=======================================

For j = 1 To 3
b = b - m(j, j) 'Trace

p = 163 Mod (j + 4)
n = 11 Mod (j + 2)

'Minors
c = c + m(p, p) * m(n, n) - m(p, n) * m(n, p)
Next j

d = -WorksheetFunction.MDeterm(m)

Debug.Print b; c; d
End Sub

--
HTH. :>)
Dana DeLouis
Windows XP, Office 2003

<snip>
 
OK... I am assuming that this is a macro code. Let me give it a whirl.
Thanks for the help. I'll let you know how it worked.

thanks,
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top