From the simulation problem, I want to calculate complex square matrices of the order of 1000x1000 in MATLAB. Since the values refer to the values of the Bessel functions, the matrices are not generally sparse.
Since I'm interested in changing the determinant for some parameter (the energy of the desired eigenfunction in my case), I currently overcome the problem by first examining the scaling factor for the range under study, and then calculating the determinants,
result(k) = det(pre_factor*Matrix{k});
Now this is a very inconvenient solution and works only for the matrix dimension, say, a maximum of 500x500.
Does anyone know a good solution to the problem? Interaction with Mathematica may work in principle, but I have doubts about feasibility. Thank you in advance
Robert
Edit: I did not find a convincing solution to the computational problem, since this would require a change to a higher accuracy. Instead, I used
ln det M = trace ln M
which when i print it relative to k
A = trace(inv(M(k))*dM/dk)
So, at least I had a change in the logarithm of the determinant in k. From the physical background of the problem, I could get restrictions on A, which eventually gave me a workaround applicable to my problem. Unfortunately, I do not know if it is possible to generalize such a workaround.
source
share