Вирішення величезної щільної лінійної системи?


11

Чи є надія на ефективне вирішення наступної лінійної системи за допомогою ітеративного методу?

ARn×n,xRn,bRn, with n>106

Ax=b

з

A=(ΔK) , де - дуже розріджена матриця з кількома діагоналями, що виникає з дискретизації оператора Лапласа. На його головній діагоналі є і є інших діагоналей з на ній.- 6 6 1Δ661

K - повна матриця, яка повністю складається з них.Rn×n

Розв’язування прекрасно спрацьовує за допомогою таких ітеративних методів, як Гаусс-Сейдель, оскільки це рідка діагонально домінуюча матриця. Я підозрюю, що проблему досить неможливо ефективно вирішити для великої кількості , але чи є якась хитрість, можливо, її вирішити, використовуючи структуру ?A = ( Δ - K ) n KA=ΔA=(ΔK)nK

EDIT: Був би щось подібне

Δxk+1=b+Kxk // вирішити для з Гауссом-Сейделемxk+1

сходяться до правильного рішення? Я читав, що такий метод розщеплення сходиться, якщо , де - спектральна норма. Я вручну обчислював власні значення для деяких різних малих значень і всі вони дорівнюють нулю, крім того, яке має досить високе від'ємне значення. (приблизно ~ 500 для ) Тож я думаю, це не спрацювало б.ρ Δ - 1 K n n = 256ρ(Δ1K)<1ρΔ1Knn=256

EDIT: Більше інформації проΔ :

ΔRn×n симетрична і є негативно визначеною та діагонально домінуючою.

Він створюється наступним чином у matlab

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


Чи можете ви надати більше інформації про , будь ласка? Симетричний? Визначений, напіввизначений, не визначений? Δ
Стефано М

Δ симетрична і негативно визначена.
йон

Чи допомагає тобі особистість матриці Вудбері, оскільки К низький?
Арон Ахмадія

Відповіді:


14

n>106n1012ΔΔ

  • Використовуйте огороджену систему

M=(ΔeeT1)

де - вектор стовпців, що складається з усіх і вирішує системуe

M(xy)=(b0)

використовуючи ітеративний або прямий розв'язувач.

  • Скористайтеся методом Крилова та застосуйте матрицю як (тобто розріджена матриця плюс корекція рангу-1. Використовуйте існуючий попередній умова , або , особливо якщо ви хочете використовувати пряме рішення з , оновіть його формулою Шермана-Моррісона .Δ - e e T P - 1Δ - 1 ΔAΔeeTP1Δ1Δ

Я схиляюся до думки, що вам набагато краще з другим підходом. Справа просто в тому, що ви не повинні намагатися зберігати матрицю у пам'яті, а також не намагатися робити з нею векторний матричний продукт. Швидше за все, кожного разу, коли у вашій ітераційній схемі вам доводиться множувати з вектором , ви множите а потім обчислюєте . Термін у дужках - це лише сума записів і ви обчислюєте його лише один раз. Джед уже це добре пояснив, але я хотів підкреслити порядок операцій. A z h = Δ z y = h - e ( e T z ) zKAzh=Δzy=he(eTz)z
Вольфганг Бангерт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.