Чи можна розв'язати лінійну систему рівнянь лише для перших кількох змінних?


15

У мене лінійна система рівнянь розміром mxm, де m велика. Однак змінні, які мене цікавлять, - це лише перші n змінних (n мало в порівнянні з m). Чи є спосіб я наблизити рішення до перших значень m, не потребуючи вирішення всієї системи? Якщо так, чи було б це наближення швидшим, ніж розв’язання повної лінійної системи?


2
За винятком випадків, коли ваша функція форсування також обмежена першими n змінними. Якщо це так, ви можете сформувати доповнення Щура, хоча воно, ймовірно, щільне. Якщо ваш оригінальний оператор розріджений, можливо, це не варто.
Джек Поульсон

1
Я гадаю, що ви могли використовувати гауссова елімінація, починаючи з правого нижнього кута матриці. Це було б ~ 2 рази швидше, ніж звичайні гаусові елімінації, якщо ви дбаєте лише про перші кілька елементів і зупинитеся на півдорозі. Я не знаю, як це було б порівняно з ітераційними методами.
День

4
@OscarB: Будь ласка, ні. Правило Крамера - це жорстокість в арифметиці з плаваючою точкою. Я ніколи не чув, щоб він використовувався для серйозних обчислень, і для цього потрібна пристойна думка, щоб уникнути факторної складності , де він досі не конкурує з ліквідацією Гаусса.
Джек Поульсон

1
@Paul: Більшість скорочень замовлень моделей використовується в умовах великих систем ODE або DAE. Іноді методології скорочення мотивуються системами ODE або DAE, які виникають внаслідок дискретизації PDE. Я не бачив скорочення моделі, що використовується в чисто алгебраїчних рівняннях. (Якщо у вас є, будь ласка, надішліть мені довідки, тому що я займаюсь дисертацією щодо методів скорочення моделі і дуже зацікавлений би її побачити.) Якщо ви хочете, я можу накреслити, як може виглядати скорочення моделі, якщо ми будемо розглядати алгебраїчні рівняння як вироджений випадок диференційно-алгебраїчної системи рівнянь.
Джефф Оксберрі

1
@JackPoulson - Ви не проти підсумувати свій коментар як відповідь? Я думаю, що це найбільш правильне рішення, і я не хочу, щоб це було втрачено в коментарях.
Арон Ахмадія

Відповіді:


13

Як зазначали інші, це зробити важко з прямим вирішувачем. Однак це не так вже й складно зробити з ітераційними рішеннями. З цією метою зауважте, що більшість ітеративних вирішувачів так чи інакше мінімізують помилку стосовно певної норми. Часто ця норма або індукується самою матрицею, але іноді вона є також просто нормою вектора l2. Але це не повинно бути так: ви можете вибрати, в якій нормі ви хочете мінімізувати помилку (або залишкову), і ви могли б, наприклад, вибрати норму, в якій ви зважуєте компоненти, які вам важливі, з 1 і всі інші з 1e-12, тобто, наприклад, щось на зразок (1e-24)||x||2=i=15xi2+ та відповідний скалярний добуток. Потім напишіть усі етапи ітеративного вирішувача стосовно цієї норми та скалярного добутку, і ви отримаєте ітеративний розв'язувач, який приділяє значно більше уваги векторним елементам, які вам цікаві, ніж іншим.i=6Nxi2

Питання, звичайно, полягає в тому, чи потрібно вам менше ітерацій, ніж для норми / скалярного продукту, який зважує всі компоненти однаково. Але це дійсно має бути так: скажімо, ви дбаєте лише про п’ять перших векторних елементів. Тоді вам знадобиться щонайбільше п’ять ітерацій, щоб зменшити помилку в коефіцієнт 1e12, оскільки п’ять ітерацій - це те, що потрібно для системи 5x5, яка їх описує. Це не доказ, але я впевнений, що ви дійсно повинні піти з набагато меншою кількістю ітерацій, якщо вага в нормі (1e-12 вище) менший, ніж допуск, з яким ви хочете ітеративно вирішувати лінійну систему .


2
Хм, хороший момент. Мені було б цікаво побачити реальний приклад, оскільки я дещо переживаю наслідки лише спроб вирішити кілька ступенів свободи; незважаючи на те, що залишок може бути невеликим, можливо, норма помилки все ще досить велика (зробити це, щоб ефективно ігнорувати більшість операторів).
Джек Поульсон

Інтуїтивно це, здається, спрацює лише в тому випадку, якщо компоненти дуже малої системи справді домінують над відповіддю в сенсі L2 (або в нормі, в якій ви розумієте, що ваша помилка вимірюється). В іншому випадку я вважаю, що стурбованість Джека справедлива, але мені точно було б цікаво навіть побачити чисельне підтвердження цього ...
Арон Ахмадія

Потрібно переконатися, що ви використовуєте метод, який мінімізує помилку , а не залишкову. Я думаю, що MinErr може стати хорошою відправною точкою.
Вольфганг Бангерт

@WolfgangBangerth: Я не знайомий з MINERR: це головна довідка?
Джек Поульсон

1
Навіть цього недостатньо, тому що ви будете неточними. Неможливо отримати кілька компонентів точно, використовуючи цей зважувач.
Метт Кнеплі

17

Формування доповнення Щура

Припустимо, ви перестановили та розподілили вашу матрицю у формі

A=(A11A12A21A22),

таким чином, що містить ваші ступені свободи інтересів і набагато менше, ніж A 11 , тоді можна сформувати доповнення ШураA22A11

S22:=A22A21A111A12,

або через часткову правильну LU-факторизацію, або явну формулу, і тоді можна зрозуміти в наступному сенсі:S22

S22x=y(A11A12A21A22)(x)=(0y),

де являє собою нецікаву частину рішення. Таким чином, за умови правостороння сторона, яка є лише нульовою в ступенях свободи доповнення Шура S 22 , нам потрібно вирішити лише проти S 22 , щоб отримати частину розчину, відповідну цим ступеням свободи.S22S22

Обчислювальна складність у неструктурованому щільному випадку

Установка на висоту А і п до висоти А 22 , то стандартний метод обчислення S 22 є першим фактора L 11 U 11 : = 11 (давайте ігнорувати повороту на даний момент) в приблизно 2 / 3 ( N - п ) 3 роботи, потім сформуватиNAnA22S22L11U11:=A112/3(Nn)3

S22:=A22(A21U111)(L111A12)=A22A21A111A12

з використанням двох трикутників, що вимагають працювати кожен, а потім виконувати оновлення до A 22 у 2 n 2 ( N - n ) роботі.n(Nn)2A222n2(Nn)

Таким чином, загальна робота приблизно . При п дуже мала, N - п Н , так що вартість може бути видно, що приблизно 2 / 3 Н 3 , який є вартість повного розкладання.2/3(Nn)3+2n(Nn)2+2n2(Nn)nNnN2/3N3

Перевага полягає в тому, що якщо існує дуже велика кількість правої сторони, яку слід вирішити за допомогою однієї і тієї ж системи рівнянь, потенційно може бути використана у великій кількості разів, коли для кожного рішення потрібно буде лише 2 n 2 роботи (а не 2 N 2 працює), якщо S 22 враховується.S222n22N2S22

Обчислювальна складність у (типовому) рідкісному випадку

Якщо ваша розріджена система виникла з якихось типів кінцевих різниць або наближення кінцевих елементів, то розріджені прямі розв'язувачі майже напевно зможуть використовувати частину структури; 2d системи можуть бути вирішені за допомогою роботи та O ( N журнал N ) зберігання, в той час як 3D - системи можуть бути вирішені за допомогою O ( N 2 ) роботи та O ( N 4 / 3 ) для зберігання. Системи з фактом можуть бути вирішені таким же обсягом роботи, що і вимоги щодо зберігання.O(N3/2)O(NlogN)O(N2)O(N4/3)

Суть виведення обчислювальної складності полягає в тому, що якщо і у вас є система 2d, то, оскільки доповнення Шура, ймовірно, буде щільним, складність розв язання з урахуванням фактично складеного доповнення Шура будеO(n2)=O(N), якому не вистачає лише логарифмічного коефіцієнта проти вирішення повного система! У 3d, вона вимагаєO(N)роботу замістьO(N 4 / 3 ).nNO(n2)=O(N)O(N)O(N4/3)

Тому важливо пам’ятати, що у вашому випадку, коли , значні заощадження будуть лише в тому випадку, якщо ви працюєте в декількох вимірах і матимете багато правого боку для вирішення.n=N


1
Це чудовий підсумок методу доповнення Щура, і коли його обчислювально ефективно використовувати!
Павло

6

Підхід до скорочення моделі

PPR(P)Ax=b, and has dimension k, where k is the number of unknowns for which you wish to solve in a linear system.

A singular value decomposition of P will yield the following partitioned matrix:

P=[V][diag(1k)000][WT].

The matrices obscured by stars matter for other things (like estimating error, etc.), but for now, we'll avoid dealing with extraneous details. It follows that

P=VWT

is a full rank decomposition of P.

Essentially, you'll solve the system

PAx=Pb

in a clever way, because V and W also have the property that WTV=I. Multiplying both sides of PAx=Pb by WT and letting y=Vx^ be an approximation for x yields

WTAx^=WTb.

Solve for x^, premultiply it by V, and you have y, your approximation for x.

Why the Schur complement approach is probably better

For starters, you have to pick P somehow. If the solution to Ax=b is in R(P), then y=x, and y isn't an approximation. Otherwise, yx, and you introduce some approximation error. This approach doesn't really leverage at all the structure you mentioned wanting to exploit. If we pick P such that its range is the standard unit basis in the coordinates of x you want to calculate, the corresponding coordinates of y will have errors in them. It's not clear how you'd want to pick P. You could use an SVD of A, for instance, and select P to be the product of the first k left singular vectors of A and the adjoint of the first k right singular vectors of A, assuming that singular vectors are arranged in decreasing order of singular value. This choice of projector would be equivalent to performing proper orthogonal decomposition on A, and it would minimize the L2-error in the approximate solution.

In addition to introducing approximation errors, this approach also introduces three extra matrix multiplies on top of the linear solve of the smaller system and the work needed to calculate V, and W. Unless you're solving the same linear system a lot, only changing the right hand side, and P is still a "good" projection matrix for all of those systems, those extra costs will probably make solving the reduced system more expensive than solving your original system.

The drawbacks are much like JackPoulson's approach, except that you're not quite leveraging the structure that you mentioned.


4

The long answer is...sort of.

You can re-arrange your system of equations such that the farthest right k columns are the variables which you wish to solve for.

Step 1: Perform Gaussian Elimination so that the matrix is upper triangular. Step 2: solve by back substitution for only the first (last) k variables which you are interested in

This will save you the computational complexity of having to solve for the last nk variables via back-substitution, which could be worth it if n is as large as you say. Keep in mind that a fair amount of work will still have to be done for step 1.

Also, keep in mind that restricting the order in which you are going to perform back-substituion may restrict the form of the matrix (it takes away the ability to exchange columns) which could possibly lead to an ill conditioned system, but I am not sure about that - just something to keep in mind.


Gaussian elimination requires O(n3) work, but backward substitution only requires O(n2). Thus, as n grows larger, the percentage of time spent in the triangle solve becomes vanishingly small.
Jack Poulson

which is why the answer is "sort of" instead of "yes" =)
drjrm3

It makes sense that it can be done this way... However, the bulk of the computation in a Gaussian Elimination is in the forward elimination phase, yielding an O(n^3) complexity despite the truncated backward substitution phase. I was hoping there was a faster method...
Paul
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.