Які симптоми жорстокого кондиціонування при використанні прямих методів?


14

Припустимо, у нас є лінійна система, і ми нічого не знаємо про її умову і не маємо попередньої інформації про рішення. Ми сліпо застосовуємо усунення Гаусса і отримуємо деякий розв’язок . Чи можна визначити, чи є це рішення надійним (тобто що система добре кондиціонована) без ретельного попереднього аналізу матриці ? Чи дає величина поворотів достовірну інформацію?x

І взагалі, які основні вказівки щодо виявлення жорстокого кондиціонування "на льоту"?

Відповіді:


13

Коли матриця погано обумовлена ? Це залежить від точності рішення, яке ви шукаєте, наскільки "краса в очах глядача" ...

Можливо, ваше питання слід краще переосмислити, чи є дешеві та надійні оцінки кількості умов на основі факторизації?LU

Припускаючи, що вас цікавить реальна загальна (щільна, несиметрична) проблема в арифметиці з подвійною точністю, я б запропонував вам скористатися експертом LAPACK DGSVX, який надає оцінку стану у вигляді її взаємної, . Як бонус у вас є також інші товари, такі як рівняння / врівноваження рівняння, ітераційне уточнення, межі помилок вперед та назад. До речі, про патологічну хворобливість ( κ ( A ) > 1 / ϵ ) сигналізується як помилка .RCOND1/κ(A)κ(A)>1/ϵINFO>0

Детальніше, LAPACK оцінює номер умови в 1-нормі (або -норм, якщо ви вирішуєте A T x = b ) через DGECON . Основний алгоритм описаний на газоні 36: "Міцні трикутні рішення для використання в оцінці стану" .ATx=b

Я мушу визнати, що я не фахівець у цій галузі, але моя філософія така: "якщо це досить добре для ЛАПАКА, це для мене".


8

Розв’язання неправильно обумовленої системи рівнянь з матрицею норми 1 випадкова права рука норми 1 матиме з великою часткою ймовірності норму порядку числа умови. Таким чином, обчислення декількох таких рішень підкаже, що відбувається.


Це дійсно те, що робить DGECON, з додаванням тонкості ітеративного уточнення напрямку пошуку, щоб досягти максимального результату, та використання користувальницького трикутного розв'язувача (а не BLAS), щоб не було викривлених речей помилок наближення. Тому обчислювальна вартість DGECON порівнянна з вашим простим тестом. +1 для запам'ятовування нас простого значення матричних норм та номера умови. Цікаво дізнатись, чи дійсно DGECON надійніший від простої випадкової перевірки.
Стефано М

Беручи до уваги, що число умови розв’язування збігається з числом умови обчислення A x, чи достатньо просто помножити масштабовану матрицю на ті випадкові вектори замість фактичного розв’язання A x = b ? Ax=bAxAx=b
faleichik

2
@faleichik Напевно ні: хитрість тут полягає в масштабуванні так, що A = 1 і κ ( A ) = A A - 1= A - 1 . Звичайно, будучи цією лінійною алгеброю, вам не потрібно насправді масштабувати A, а лише A x ... все ж вам потрібно спершу обчислити ‖, що ми прагнемо оцінити.AA=1κ(A)=AA1=A1AAx . Ваш зворотний аргумент потребує спочатку обчислитиA - 1AA1
Стефано М

5

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

Сказавши це, ви можете отримати більше інформації, якщо вирішите більше однієї системи з тим же A . Припустимо, у вас є система форми . Для конкретного А, який ви не маєте попередніх знань щодо його кондиціонування, ви можете виконати наступний тест: Ax=b

  1. Вирішити для конкретного вектора правого боку b . Ax=bb
  2. Перешкоджаємо вектору правої руки на де | | ϵ | | дуже мала порівняно з | | б | | .bnew=b+ε||ϵ||||b||
  3. Розв’яжіть .Axnew=bnew
  4. Якщо ваша система добре кондиціонована, ваше нове рішення має бути досить близьким до вашого старого рішення (тобто має бути мало). Якщо ви спостерігаєте кардинальні зміни вашого нового рішення (тобто | | x - x n e w | | є великим), то ваша система, ймовірно, погана. ||xxnew||||xxnew||

Можливо, вам знадобиться вирішити декілька лінійних систем з різними векторами правого боку, щоб краще зрозуміти, чи є система поганою умовою. Звичайно, цей процес є дещо дорогим ( операцій для першого рішення та Θ ( n 2 ) операцій для кожного наступного рішення, якщо припустити, що ваш прямий вирішувач зберігає його фактори). Якщо ваша матриця A досить мала, це не проблема. Якщо вона велика, ви, можливо, не захочете цього робити. Натомість вам може бути краще обчислити номер умови | | А | | | | А - 1 |Θ(n3)Θ(n2)в зручній нормі.||A||||A1||


2
Θ(kn3)AAO(n3)O(n2)

@JackPoulson: Ти абсолютно правий ... Напевно, я повністю розказав про це. Не хвилюйтесь :) Я оновлю свою відповідь
Пол

Чи можна також оцінити залишок отриманого рішення? З тих пір
||Ах-б||
ваги як
||А||||х||
майже однина Аможе дати значущий залишок, навіть якщо його рішення дуже погано.
Рейд.Атчесон

@ Reid.Atcheson: Не дуже. Орієнтовне рішення погано кондиціонованої системи все ще може дати невеликий залишок. Це насправді не дає жодних ознак щодо того, наскільки це далеко від справжнього рішення.
Павло

1
Можливо, розумніше чітко заявити εдуже маленький щодо б. У цій галузі все відносно ... Більшість читачів знають, але когось можна ввести в оману в небезпечних водах.
Стефано М
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.