0

I am using the polyeig command in Matlab to solve a polynomial eigenvalue problem of order 2 in Matlab. I know that the system has a single 0 eigenvalue (this is due to the form of the zero coefficient matrix where each diagonal element is -1 times the sum of the elements in he same row so the vector (1 1 1 ... 1) has 0 eigenvalue).

Size of the system is about 150 to 150. When I use the polyeig command the lowest eigenvalue I get is of the order 1E-4 (which is supposed to be the 0 eigenvalue) and the second lowest is of the order 1E-1. As the system size decreases the lowest eigenvalue decreases to something of the order 1E-14 which is reasonable but 1E-4 is too much.

Is there anyway to achieve better accuracy or any other library you would suggest? I could also turn the polynomial eigenvalue problem to generalized eigenvalue problem in higher dimensions (2 times the given dimension) but I am not sure how that affects speed and accuracy. I would like to see if there is a simpler solution before reformulating the problem. So I would welcome any suggestions on these matters.

EDIT: The problem is resolved it was actually about the precision of the INPUT file that I was using which was printed only up to 4 digits. Having found better ones the precision has increased. Thanks in any case.

eddie
  • 1,252
  • 3
  • 15
  • 20
Sina
  • 401
  • 5
  • 12
  • Good work! I frequently find that just writing up a detailed question for StackOverflow helps me find the problem. Can you post your solution as an answer and accept it? – Ahmed Fasih Aug 19 '16 at 14:20

1 Answers1

0

The problem turned out to be with the input file I was using which was printed only up to 4 decimal points. Now even with matrices of 800x800 I only get accuracy problems up to e-11 which is good.

Sina
  • 401
  • 5
  • 12