Apakah ada algoritma yang efisien untuk fraksi lanjutan bernilai matriks?

18

Misalkan saya memiliki persamaan matriks yang didefinisikan secara rekursif sebagai

A[n] = inverse([1 - b[n]A[n+1]]) * a[n]

Kemudian persamaan untuk A [1] terlihat mirip dengan fraksi lanjutan, di mana ada beberapa metode yang sangat efisien yang menghindari perhitungan ulang yang membosankan (Lihat "Resep Numerik" untuk beberapa contoh).

Namun, saya bertanya-tanya apakah ada metode analog yang memungkinkan koefisien b [n] dan [n] menjadi matriks, dengan satu-satunya kendala bahwa b [n] A [n + 1] menjadi matriks persegi sehingga matriks

1 - b[n]A[n+1]

sebenarnya tidak bisa dibalik.

Lagerbaer
sumber
Ini adalah pertanyaan yang Anda ajukan dalam matematika. SEBELUM beberapa bulan sebelumnya, bukan? Apakah A persegi atau persegi panjang?
JM
Saya ingat bahwa seseorang dalam komentar di math.SE menyarankan agar saya bertanya di sini setelah beta online :) Dalam kasus khusus saya, A adalah persegi panjang. Persamaan rekursif sesuai dengan seperangkat persamaan hirarkis, dan jumlah kuantitas tumbuh dengan n . Dalam kasus saya, dimensi A [n] adalah nx (n-1)
Lagerbaer
Hanya ingin tahu, untuk apa aplikasi yang ingin Anda gunakan ini?
Hjulle
1
Secara singkat, menggunakan identitas Dyson untuk Hamiltonian tertentu menghasilkan fungsi Green yang dapat saya label dengan indeks tertentu N. Mengumpulkan semua fungsi dengan indeks yang sama ke dalam vektor VN memungkinkan saya untuk menulis VN=αNVN1+βNVN+1 menggunakan identitas Dyson dan perkiraan yang sesuai. Menggunakan cut-off sehingga VN=0 untuk semua nN memungkinkan saya untuk menemukan matriks An sehingga Vn=AnVn1 dan matriks ini diberikan oleh persamaan gaya lanjutan fraksi saya. Teknik ini dapat, misalnya, menghitung fungsi lattice Green untuk model yang terikat erat.
Lagerbaer
1
Itu bukan bidang saya, tetapi saya beberapa waktu lalu di sebuah seminar di mana sesuatu yang berkaitan dengan masalah ini disajikan. [Sini] [1] adalah satu-satunya jejak yang dapat saya temukan secara online. Saya benar-benar tidak tahu apakah itu membantu. [1]: mh2009.ulb.ac.be/ResActiv.pdf
user189035

Jawaban:

9

Dua metode berikut diberikan dalam Fungsi Matriks: Teori dan Perhitungan oleh Nicholas Higham, di halaman 81. Rumus-rumus ini mengevaluasi

di manaXadalah matriks persegi.

r(X)=b0+a1Xb1+a2Xb2++a2m1Xb2m1+a2mXb2m
X

Metode top-down:

P1=I,Q1=0,P0=b0I,Q0=I

untuk j = 1: 2m

Pj=bjPj1+ajXPj2

Qj=bjQj1+ajXQj2

akhir

rm=P2mQ2m1


Metode bottom-up:

Y2m=(a2m/b2m)X

untuk j = 2m − 1: −1: 1

Memecahkan untuk Y j .(bjI+Yj+1)Yj=ajXYj

akhir

rm=b0I+Y1


Pertanyaannya meminta evaluasi bentuk yang lebih umum

b0+a1X1b1+a2X2b2++a2m1X2m1b2m1+a2mX2mb2m

Ini dapat dievaluasi dengan generalisasi sederhana dari rumus di atas; misalnya metode bottom-up menjadi

Y2m=(a2m/b2m)X2m

untuk j = 2m − 1: −1: 1

Memecahkan untuk Y j .(bjI+Yj+1)Yj=ajXjYj

akhir

.rm=b0I+Y1

David Ketcheson
sumber
Ini terlihat sangat menarik. Saya akan melihat apakah saya dapat menerapkannya pada masalah spesifik saya tetapi menjawab pertanyaan karena b [n] * A [n + 1] saya adalah matriks persegi
Lagerbaer
Ah, tapi saya baru saja memperhatikan bahwa matriks adalah sama di mana-mana dalam solusi Anda, tetapi saya belum tentu. X
Lagerbaer
Oke, saya sudah menggeneralisirnya.
David Ketcheson
6

Saya tahu bahwa jawaban ini menghasilkan banyak asumsi, tetapi setidaknya menggeneralisasikan algoritme Anda:

Misalkan , { B n } , dan matriks pembenihan, V N , semua membentuk keluarga komuter dari matriks normal, di mana nilai eigen dekomposisi dari {{An}{Bn}VN dan { B n } dikenal sebagai apriori, katakanlah U V N U = Λ N , U A n U = Ω n , dan U B n U = Δ n{An}{Bn}UVNU=ΛNUAnU=ΩnUBnU=Δn, di mana adalah kesatuan dan Λ N , { Ω n } , dan { Δ n } adalah matriks diagonal bernilai kompleks.UΛN{Ωn}{Δn}

Setelah kita mengatakan dekomposisi, dengan induksi,

Vn=(IBnVn+1)1An=(IUΔnUUΛn+1U)1UΩnU,

yang dapat diatur ulang ke dalam formulir

Vn=U(IΔnΛn+1)1ΩnUUΛnU,

Λn{Vn}ΛnVN

AnαnIBnβnIVN

Jack Poulson
sumber