из задачи моделирования, я хочу вычислить сложные квадратные матрицы порядка 1000x1000 в MATLAB. Поскольку значения относятся к значениям функций Бесселя, матрицы не являются вообще разреженными.Детерминанты огромных матриц в MATLAB
Поскольку меня интересует изменение детерминанта по некоторому параметру (энергия искомой собственной функции в моем случае), я в данный момент преодолеваю проблему, сначала исследуя коэффициент масштабирования для исследуемого диапазона, а затем вычислить определители,
result(k) = det(pre_factor*Matrix{k});
Сейчас это очень неудобно решение и работает только для размеров матрицы, скажем, не более 500x500.
Кто-нибудь знает хорошее решение проблемы? Взаимодействие с Mathematica может работать в принципе, но у меня есть сомнения относительно осуществимости. Спасибо заранее
Роберт
Edit: я не нашел Convient решения задачи расчета, так как это потребует изменений в более высокую точность. Вместо этого я использовал это
ln det M = trace ln M
, который, когда я его вывода относительно к
A = trace(inv(M(k))*dM/dk)
Так что я по крайней мере, было изменение логарифма определителя относительно к. Из физического фона проблемы я мог бы получить ограничения на A, который в конце концов дал мне обходной путь, применимый для моей проблемы. К сожалению, я не знаю, можно ли обобщить такое обходное решение.
Есть ли что-то особенное в структуре вашей матрицы, которая может помочь? Вы упомянули k = {A1, B1; A2, B2}, где A1, A2 симметричны. Что-нибудь еще? А1 и А2 коммутируют, или любая из подматричек легко инвертируется? – 2010-12-03 18:24:20
@ Джонатан Дурси: Благодарю вас за ваши продуманные вопросы. Но я боюсь, что в целом я не вижу причины, по которой A1 и A2 должны переключаться, а также почему любая из подматричек должна быть обратимой. Кроме того, поскольку интересные случаи близки к det (M) = 0, инверсия не очень хорошо работает. – 2010-12-03 20:33:04
Матрица, являющаяся единственной, не обязательно говорит ничего интересного о подматрицах; если B1 и B2 равны нулю, M не будет обратим, хотя A1 и A2 могут быть очень хорошо себя вести. – 2010-12-03 22:29:00