Memecahkan tanpa membalikkan

22

Saya memiliki matriks dan . jarang dan dengan sangat besar (bisa dalam urutan beberapa juta.) adalah matriks tinggi dengan agak kecil ( ) dan setiap kolom dapat hanya memiliki satu entri dengan sisanya menjadi 's, sehingga . sangat besar, jadi sangat sulit untuk membalikkan, dan saya bisa menyelesaikan sistem linear seperti secara iteratif menggunakan metode ruang bagian Krylov seperti , tapi saya tidak punyaG A n × n n G n × m m 1 < m < 1000 1 0 G T G = I A A x = b B i C G S t a b ( l ) A - 1AGAn×nnGn×mm1<m<100010GTG=IAAx=bBiCGStab(l)A1 secara eksplisit.

Saya ingin menyelesaikan sistem formulir: , di mana dan adalah vektor panjang . Salah satu cara untuk melakukannya adalah dengan menggunakan algoritma iteratif dalam algoritma iteratif untuk menyelesaikan untuk untuk setiap iterasi dari algoritma iteratif luar. Ini akan menjadi sangat mahal secara komputasi. Saya bertanya-tanya apakah ada cara komputasi yang lebih mudah untuk menyelesaikan masalah ini.x b m A - 1(GTA1G)x=bxbmA1

Costis
sumber
Saya baru saja menambahkan jawaban saya pada komentar tentang mengeksploitasi struktur 0-1.
Arnold Neumaier

Jawaban:

19

Perkenalkan vektor dan selesaikan sistem berpasangan besar , untuk secara bersamaan, menggunakan metode iteratif. Jika adalah simetris (seperti tampaknya meskipun Anda tidak menyatakannya secara eksplisit) maka sistemnya adalah simetris (tetapi tidak terbatas, meskipun quasidefinite jika adalah pasti positif), yang mungkin membantu Anda memilih metode yang tepat. (kata kunci yang relevan: matriks KKT, matriks quasidefinite).A y + G x = 0 G T y = - b ( y , x ) A Ay:=A1GxAy+Gx=0GTy=b(y,x)AA

Sunting: Karena adalah simetris yang kompleks, demikian pula matriks yang ditambah, tetapi tidak ada quasidefiniteness. Namun Anda dapat menggunakan rutin untuk menghitung ; karena itu Anda dapat mengadaptasi metode seperti QMR ftp://ftp.math.ucla.edu/pub/camreport/cam92-19.pdf (dirancang untuk sistem nyata, tetapi Anda dapat dengan mudah menulis ulang untuk sistem yang kompleks, menggunakan adjoin di tempat transpos) untuk menyelesaikan masalah Anda.A x A x = ¯ A ¯ xAAxAx=Ax¯¯

Sunting2: Sebenarnya, (0,1) -struktur berarti Anda dapat menghilangkan dan komponen secara simbolis, sehingga berakhir dengan sistem yang lebih kecil untuk dipecahkan. Ini berarti mengacaukan struktur , dan membayar hanya ketika diberikan secara eksplisit dalam format jarang daripada sebagai operator linier.x G T y A AGxGTyAA

Arnold Neumaier
sumber
Terima kasih! A adalah simetris yang kompleks. Apakah ada alasan untuk mengharapkan kondisi matriks yang diperbesar menjadi lebih buruk daripada kondisi matriks asli ? Jika m kecil, matriks augmented hanya sedikit lebih besar dalam ukuran dari A, jadi saya menduga bahwa memecahkan sistem augmented ini secara iteratif seharusnya tidak lebih sulit daripada menyelesaikan sistem dengan A? A
Costis
Jumlah kondisi kedua sistem tersebut pada umumnya cukup tidak terkait; itu sangat tergantung pada apa adalah. - Saya menambahkan ke informasi jawaban saya tentang cara mengeksploitasi simetri kompleks. G
Arnold Neumaier
Halo kawan-kawan! Terima kasih atas semua balasannya; tempat ini hebat! Perpanjangan dari pertanyaan awal: Asumsikan sekarang saya punya , di mana G dan A memiliki makna yang sama seperti dalam pertanyaan asli tetapi B adalah peringkat kekurangan nxn matriks (ukuran yang sama dengan A) dan seluruh adalah peringkat penuh. Bagaimana Anda pergi tentang memecahkan sistem baru, karena sekarang kebalikan dari B tidak ada jadi Anda tidak dapat memiliki . Saya tidak berpikir itu akan berhasil hanya dengan pseudoinverse dari B juga. G T A - H B A - 1 G A B - 1 A H(GTAHBA1G)x=bGTAHBA1GAB1AH
Costis
1
Perkenalkan dan , dan lanjutkan secara analogi dengan kasus yang berhasil. (Mungkin Anda juga perlu memasukkan faktor ke dalam matriks peringkat penuh dan memperkenalkan vektor perantara tambahan.)z : = A - H B y By:=A1Gxz:=AHByB
Arnold Neumaier
Hai Arnold. Terima kasih, ini memang berhasil! Saya mengujinya dengan beberapa contoh uji yang sangat kecil, dan itu bekerja dengan baik. Namun, pemecah iteratif saya mengalami masalah besar pembalik matriks augmented. Meskipun hanya membutuhkan sekitar 80 iterasi (beberapa detik) untuk menyelesaikan sistem bentuk dengan matriks A asli, sistem dengan matriks yang diperbesar (yaitu 2n + mx 2n + m atau 2n-mx 2n-m menggunakan pendekatan @ wolfgang-bangerth) membutuhkan lebih dari puluhan ribu iterasi (beberapa jam) untuk menyelesaikan satu RHS. Apakah ada strategi untuk mempercepat konvergensi? mungkin seorang prasyarat? Ax=b
Costis
7

Mengikuti jawaban Arnold, ada sesuatu yang dapat Anda lakukan untuk menyederhanakan masalah. Secara khusus, tulis ulang sistem sebagai . Kemudian perhatikan bahwa dari pernyataan bahwa adalah tinggi dan sempit dan setiap baris hanya memiliki satu 1 dan nol sebaliknya, maka pernyataan berarti bahwa himpunan bagian dari elemen memiliki nilai tetap, yaitu unsur-unsur dari .G G T y = - b y - bAy+Gx=0,GTy=bGGTy=byb

Mari kita katakan bahwa untuk kesederhanaan bahwa memiliki kolom dan baris dan bahwa persis baris pertama memiliki yang di dalamnya dan yang menyusun kembali unsur-unsur saya dapat membuatnya sehingga memiliki matriks identitas di atas dan nol matriks di bagian bawah. Kemudian saya dapat mempartisi ke dalam "constrained" dan "free" sehingga . Saya juga dapat mempartisi sehingga . Dari persamaanm n m x G m × m n - m × m y = ( y c , y f ) m n - m y c = - b A A = ( A c c A c f A f c A f f ) A y + G x = 0 A c c y cGmnmxGm×mnm×my=(yc,yf)mnmyc=bAA=(AccAcfAfcAff)Ay+Gx=0 Saya kemudian mendapatkan yang berikut: dan menggunakan apa yang kita ketahui tentang kita miliki dari persamaan kedua ini dan akibatnya Dengan kata lain, satu-satunya matriks yang harus Anda invert adalah subset dari yang baris dan kolomnya tidak disebutkan dalam (ruang nol dari ). Ini dapat Anda lakukan dengan mudah: (i) menghitung ; (ii) gunakan pemecah apa pun yang Anda miliki untuk menyelesaikan ; (iii) menghitung .y c A f f y f = A f c b x = A c c b - A c f A - 1 f f A f c b . A G G z = A f c b A f f h = z x

Accyc+Acfyf+x=0,Afcyc+Affyf=0
yc
Affyf=Afcb
x=AccbAcfAff1Afcb.
AGGz=AfcbAffh=zx=AccbAcfh

Dengan kata lain, mengingat struktur , memecahkan sistem linear yang Anda miliki adalah benar-benar tidak lebih sulit daripada memecahkan sistem linear tunggal dengan .AGA

Wolfgang Bangerth
sumber
0

Tapi kita tahu , dan , jadiG T AGGTA

GTA1Gx=b

GGTA1Gx=Gb

Karena , maka , jadi :G T = G - 1 G G T = IGTG=IGT=G1GGT=I

A1Gx=Gb

AA1Gx=AGb

Gx=AGb

GTGx=GTAGb

x=GTAGb

Kecuali jika saya melewatkan sesuatu, Anda tidak perlu iterasi, atau pemecah apa pun untuk menghitung x yang diberikan , dan .GAb

Phil H
sumber
3
GT menjadi kebalikan dari tidak berarti bahwa itu juga kebalikan dari kanan. Pertimbangkan , di mana adalah invers kiri, tapi . GG=e1GT=e1TGGT=e1e1TI
Jack Poulson
1
G T G = I m × m G G TI n × nGCnCm , karenanya , tetapi . Melainkan itu adalah proyektor pada subruang. GTG=Im×mGGTIn×n
Deathbreath