Вирішення розрідженої та сильно кондиціонованої системи


9

Я маю намір вирішити Ax = b там, де A є складною, розрідженою, несиметричною та сильно обумовленою (номер умови ~ 1E + 20) квадратної чи прямокутної матриці. Мені вдалося точно вирішити систему із ZGELSS в LAPACK. Але в міру зростання ступеня свободи в моїй системі потрібно багато часу, щоб вирішити систему на ПК з ZGELSS, оскільки зрідженість не використовується. Нещодавно я спробував SuperLU (використовуючи сховище Harwell-Boeing) для тієї самої системи, але результати були неточними для номера умови> 1E + 12 (я не впевнений, чи є це чисельною проблемою з поворотом).

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


1
Чи можете ви це зумовити? Якщо так, методи підпростору Крилова можуть бути ефективними. Навіть якщо ви наполягаєте на прямих методах, попередня підготовка допоможе контролювати числові помилки.
Джефф Оксберрі

1
Я також зробив хороший досвід з попередньою підготовкою, як це описано тут: en.wikipedia.org/wiki/… Ви можете виконати попередню підготовку в точній арифметиці. Однак мої матриці є щільними, тому тут не можна вказувати на більш конкретні методи / процедури.
AlexE

11
Чому номер умови такий великий? Можливо, рецептуру можна вдосконалити, щоб зробити систему краще кондиціонованою? Загалом, ви не можете очікувати, що зможете оцінити залишок точніше, ніж(машинна точність)(номер умови), що робить Крилова малою цінністю, коли у вас закінчилися біти. Якщо номер умови справді1020, ви повинні використовувати квадратичну точність ( __float128з GCC, підтримуваним кількома пакетами, включаючи PETSc).
Джед Браун

2
Звідки ви берете оцінку кількості цієї умови? Якщо ви попросите Matlab оцінити номер умови матриці з нульовим простором, це може дати вам нескінченність, а іноді може просто дати вам дійсно величезне число (наприклад, те, що у вас є). Якщо система, яку ви дивитесь, має нульовий простір, і ви знаєте, що це таке, ви можете спроектувати це, і те, що вам залишилося, може мати кращий номер умови. Тоді ви можете використовувати PETSc або Trilinos або що у вас є.
Даніель Шаперо

3
Даніель - урізаний метод SVD, використовуваний ZGELSS, визначає нульовий простір (особливі вектори, пов'язані з крихітними сингулярними значеннями в SVD, є основою для N (A)) і знаходить рішення з найменшими квадратами для хвАх-бпонад . pеrp(N(А))
Брайан Борчерс

Відповіді:


13

Коли ви використовуєте ZGELSS для вирішення цієї проблеми, ви використовуєте усічене розкладення сингулярного значення для регуляризації цієї надзвичайно умовної проблеми. важливо розуміти, що ця рутина бібліотеки не намагається знайти рішення з найменшим квадратом , а скоріше намагається врівноважити пошук рішення, яке мінімізуєпроти мінімізації. Ах=бхАх-б

Зауважимо, що параметр RCOND, переданий ZGELSS, може бути використаний для визначення того, які особливі значення слід включити та виключити з обчислення рішення. Будь-яке значення однини менше, ніж RCOND * S (1) (S (1) є найбільшим значенням однини), буде ігноруватися. Ви не сказали нам, як ви встановили параметр RCOND у ZGELSS, і ми нічого про рівень шуму коефіцієнтів у вашій матриці або в правій частині , тому важко сказати, чи використовували ви відповідна кількість регуляризації. Аб

Ви, здається, задоволені регуляризованими рішеннями, які ви отримуєте із ZGELSS, тому, здається, що регуляризація, здійснена методом усіченого SVD (що знаходить мінімальну рішення серед найменших квадратних рішень, що мінімізують над простором розчинів, що охоплюються сингулярними векторами, пов'язаними з величинами сингулярності, більшими, ніж RCOND * S (1), є для вас задовільним. хАх-б

Ваше запитання може бути переформульоване так: "Як я можу ефективно отримати розв’язання найменших квадратів для цієї великої, розрідженої та дуже погано обумовленої лінійної проблеми з найменшими квадратами?"

Моя рекомендація полягає у використанні ітеративного методу (наприклад, CGLS або LSQR) для мінімізації явно регульованих проблем з найменшими квадратами.

хвАх-б2+α2х2

де параметр регуляризації налаштований так, щоб проблема найменших квадратиків була добре обумовлена, і щоб ви були задоволені отриманими рішеннями, що регулюються. α


Мої вибачення за те, що не згадували про це спочатку. Проблема, що вирішується, - рівняння акустики Гельмгольца за допомогою FEM. Система погано обумовлена ​​через площину хвильової основи, яка використовується для наближення рішення.
користувач1234

Звідки коефіцієнти в А і бприбув з? Чи вимірюють вони дані? "точні" значення від проектування якогось об'єкта (що на практиці не піддається механічній обробці до допусків, що становлять 15 цифр ...)?
Брайан Борчерс

1
Матриці A і b формуються за допомогою слабкої формулювання PDE Helmholtz, див .: asadl.org/jasa/resource/1/jasman/v119/i3/…
user1234

9

Джед Браун вже вказував на це в коментарях до питання, але насправді не дуже багато ви можете зробити в звичайній подвійній точності, якщо ваш номер стану великий: у більшості випадків ви, швидше за все, не отримаєте жодної цифри точності в ваше рішення, і, що ще гірше, ви навіть не можете сказати, тому що ви не можете точно оцінити залишки, відповідні вектору вашого рішення. Іншими словами: справа не в тому, який лінійний вирішувач вам слід вибрати - жоден лінійний розв'язувач не може зробити щось корисне для таких матриць.

Такі ситуації зазвичай трапляються тому, що ви обираєте непридатну основу. Наприклад, ви отримуєте такі неправильні умовні матриці, якщо ви вибрали функції1,х,х2,х3,...як основа методу Галеркіна. (Це призводить до матриці Гільберта, яка, як відомо, погано обумовлена.) Рішення в таких випадках полягає не в тому, щоб запитати, який вирішувач може вирішити лінійну систему, а запитати, чи є кращі основи, які можна використовувати. Я б закликав вас зробити те саме: подумайте про переформулювання своєї проблеми, щоб ви не закінчилися з такими матрицями.


Коли ми будемо дискретизувати неправомірну задачу для PDE, наприклад, рівняння зворотного тепла, ми, безумовно, закінчимо неправильне умовне матричне рівняння. Це не той випадок, який ми можемо вирішити, переформулювавши рівняння або вибравши ефективне рішення матриці або підвищивши точність числа з плаваючою комою. У цьому випадку [тобто акустичні зворотні проблеми] потрібен метод регуляризації.
tqviet

7

Найпростіший / найшвидший спосіб вирішити невмовні проблеми - підвищити точність обчислень (грубою силою). Ще один (але не завжди можливий) спосіб - переформулювати свою проблему.

Можливо, вам знадобиться використовувати подвійну точність (34 десяткових цифри). Незважаючи на те, що 20 курсів будуть втрачені за курс (через номер умови), ви все одно отримаєте 14 правильних цифр.

Якщо який - небудь інтерес, тепер чотирьохядерна точність розріджених вирішувачі доступні в MATLAB теж.

(Я є автором згаданого набору інструментів).

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