Message Boards Message Boards

Find the quasi-normal modes of a scattering problem?


Hello everybody.

I would like to use this platform to ask some questions about a computation that I have been trying to do with Mathematica. I'm interested in finding the quasi-normal modes of a scattering problem. At the end of the day is about solving a second order differential equation with 4 regular singular points. My notebook (which makes use of codes of different authors most of them Physicist) solves numerically the equation by supposing two series solutions between the region of interest, the horizon and the boundary of the spacetime (the first questions arise here).

  1. I'm running the same lines in two different computers and one file is the same and the other is completely different. I mean in my old computer the file generated is about 13 MB and with the new one the file is more than 2 GB (the series solution at infinity). While the solution series at the horizon coincide in both computers.

  2. I would like to compute the series coefficients to a higher order, but even the computational time is superior to 3 days or the file generated is so heavy than Mathematica stops working. How can I improve my notebook in order to reduce computational time and achieve for example an order bigger than 12?

  3. The quasi normal modes are found by using FindRoot, however how could I be sure that the root is the lowest one (n=1)? FindRoot locates the root closest to the initial guess but it could be a quasi normal mode with a higher n.

I would appreciate any help. Thank you so much!


POSTED BY: Julian Barragan
11 days ago

With respect to (1): Instead of solving for the f1hor[i] with all parameters symbolic, why not carrying out the calculation of the f1hor[i] within INT[...] after the parameters are symbolic? This would allow to go to much higher order (say 100). Use a sufficiently high working precision for the NSolve[{f[q] == 0}, q] step. In addition, instead of using Radial, I would use an explicit rational coefficient ODE, e.g.

RadialRat = Collect[Numerator[Together[Radial]], {F[z], F'[z], F''[z]}, Factor]
POSTED BY: Michael Trott
10 days ago

Dear Mr. Michael,

Thank you for your reply. All your comments were very valuable and indeed I have been able to reach higher orders in a faster time. I would like to ask about the following FindRoot routine (the last to number in INT are the orders at the horizon and infinity)

\[Omega]guess1 = 311/100 - (274/100) I;
\[Omega]guess2 = 516/100 - (476/100) I;
f4[y_?NumericQ] := 
  INT[y, 10, 1/10, 1/10, 1, 0, 0, 0, 1, 1/10000, 10^2, 15, 15][[1]];
y0n = y /. 
   FindRoot[f4[y] == 0, {y, \[Omega]guess1, \[Omega]guess2}][[1]];
check = Abs[f4[y0n]];
{y0n, check}

by using the secant method I have obtained a 10^-6 error for a certain frequency. Do you know how can I reduce the error and if there is a systematic way to find the first frequencies consecutively? I have been trying to hunt the frequencies by putting the quasi normal modes of the table as my initial guesses, but this is not quite efficient. Have a nice week.

Best, Julián.

POSTED BY: Julian Barragan
9 days ago

Group Abstract Group Abstract