Usually, an eigenvalue of a matrix A is defined as |A-b*I|=0, where I is the identity matrix and |..| is for the determinant.

Now my question becomes a little different, let's say A is a function of b. Therefore, if I still want to calculate the eigenvalue of A, I cannot directly use something like Eigensystem[A]. The meaning of such a problem lies in the Green's function in quantum field theory. Sometimes the Hamiltonian includes a self-energy term which is dependent on omega(energy).

To avoid raising XY problem, I just post some of my previous effort in the last, which may or may not be helpful. I have tried to go back to the definition of eigenvalue, namely |A(b)-b*I|=0. And use FindRoot, but very strangely, the returned answer is always 0. I guess it's due to the numeric error. Becuase there're many high order polynomials in the determinant. Later, I find a more severe problem that it is even not possible to solve the eigenvalues of a normal matrix using the definition of eigenvalue and finding roots of it unless putting every number in fraction and using symbolic calculation. Here is a simple example to reproduce the situation:

A = Partition[Range[64], 8]
eiv = Eigenvalues[A]

The result is

{2 (65 + Sqrt[4897]), 2 (65 - Sqrt[4897]), 0, 0, 0, 0, 0, 0}

If I try to substitute the root back to determinant:

(Det[A - b*IdentityMatrix[8]] /. b -> # &) /@ eiv // N

It will not return 0 for all eigenvalues:

{4096., 5.06639*10^-7, 0., 0., 0., 0., 0., 0.}

Instead, if I use symbolic way,

(Det[A - b*IdentityMatrix[8]] /. b -> # &) /@ eiv // Simplify

it works

{0, 0, 0, 0, 0, 0, 0, 0}

But the actual problem will be a very large sparse matrix around 4000 by 4000, which is not feasible to do a symbolic calculation. While the numeric calculate has such a big error, which doesn't work either.

Thanks for your time! Any comment will be highly appreciated.


closed as off-topic by Daniel Lichtblau, MarcoB, m_goldberg, halirutan Jul 10 '18 at 23:11

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question cannot be answered without additional information. Questions on problems in code must describe the specific problem and include valid code to reproduce it. Any data used for programming examples should be embedded in the question or code to generate the (fake) data must be included." – MarcoB, m_goldberg, halirutan
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    $\begingroup$ What happens if you use N[#, {$MachinePrecision, 100}] & instead of N? $\endgroup$ – Michael E2 Jul 9 '18 at 2:54
  • $\begingroup$ If I understand your word correctly, I used N[Eigenvalue[A],{$MachinePrecision, 100}]. It gives me some very weird output: {0.*10^4, 0.*10^-6, 0, 0, 0, 0, 0, 0}. And the first element is red framed, saying no significant digits are available to display. $\endgroup$ – Jake Pan Jul 9 '18 at 4:18
  • 1
    $\begingroup$ In don't get it, (Det[A - #*IdentityMatrix[8]] &) /@ eiv // N returns precisely {0., 0., 0., 0., 0., 0., 0., 0.}... $\endgroup$ – Henrik Schumacher Jul 9 '18 at 16:26