Обчисліть усі власні значення дуже великої і дуже рідкої матриці суміжності


13

У мене є два графіки з майже n ~ 100000 вузлами кожен. В обох графіках кожен вузол з'єднаний рівно з трьома іншими вузлами, тому матриця примикання симетрична і дуже рідка.

Важка частина полягає в тому, що мені потрібні всі власні значення матриці суміжності, але не власні вектори. Якщо бути точним, це буде один раз у моєму житті (наскільки я бачу, принаймні!), Тому я хочу отримати всі власні значення і не проти чекати кілька днів, щоб отримати їх.

Я спробував scipyобгортки навколо ARPACK, але це забирає занадто довго. Я знайшов кілька бібліотек, але вони найкраще працюють для отримання підмножини найбільших / найменших власних значень. Чи є бібліотека, яка працює для симетричних розріджених матриць з можливою паралельною реалізацією, щоб отримати всі власні значення?


6
З цікавості, навіщо саме вам потрібні всі власні значення? Більшість проблем такого розміру - це наближення ще більших (або навіть нескінченних розмірних) задач, і тому власне значення малих проблем лише наближається до тієї проблеми, яку дійсно хочеться вирішити. Найчастіше якість наближення хороша лише для найменших чи найбільших власних значень, а всі інші лише погано наближені і, отже, не представляють особливого практичного інтересу.
Вольфганг Бангерт


@WolfgangBangerth: (Пробачте, якщо це для вас очевидно) Проблема випливає з фізики матеріалів. Це пов'язано з наближенням матеріалів для щільного зв’язування для отримання смугової структури, вібраційних та електричних властивостей. Щоб їх отримати, мені потрібен повний спектр власних значень. До речі, це не є новим, і воно починається з 70-х та 80-х, але оскільки моя система аморфна, мені потрібно було мати дуже велику систему, щоб отримати хороші результати. Хоча більшість людей піклується лише про кристали, що надзвичайно легко порівняно з моїм випадком.
Махді

2
@ Махді: Ну, я мав на увазі те, що фізичні властивості визначаються спектром деякого часткового диференціального оператора. Я підозрюю (але, звичайно, не знаю, тому що ви не описуєте, звідки виникла проблема), що велика матрична проблема власного значення у вас є лише наближенням проблеми PDE. Отже, ваші власні значення також будуть лише наближеннями.
Вольфганг Бангерт

Відповіді:


8

Можна використовувати зсувно-інверсне спектральне перетворення [1] та обчислити діапазон спектра за діапазоном.

Техніку також пояснюють у моїй статті [2]. Крім реалізації в [1], в моєму програмному забезпеченні Graphite доступна реалізація на C ++ [3] ( оновлення 17 січня : тепер все перенесено на геограму / графіт версії 3 ), яку я використовував для обчислення власних функцій оператора Лапласа для сітки з до 1 млн вершин (проблема, схожа на вашу).

Як це працює:

A(V,λ)A(V,1/λ)A1AA1ALLtAx=bAσIdσ(AσId)1σ

[1] http://www.mcs.anl.gov/uploads/cels/papers/P1263.pdf

[2] http://alice.loria.fr/index.php/publications.html?redirect=0&Paper=ManifoldHarmonics@2008

[3] http://alice.loria.fr/software/graphite/doc/html/


Дякую Бруно! Вони виглядають дуже перспективно, я загляну в них!
Махді

1

Іншим варіантом було б використання обертів Якобі. Оскільки ваша матриця вже майже діагональна, конвергенція не потребує багато часу. Зазвичай він конвергується в лінійну швидкість, але після достатньої кількості ітерацій швидкість конвергенції стає квадратичною.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.