Persamaan matriks berikut dalam untuk matriks dan diberikan muncul dalam karya saya sebagai karakterisasi dari matriks kovarians. Saya telah belajar bahwa persamaan ini dikenal, khususnya dalam teori kontrol waktu kontinu, sebagai persamaan Lyapunov , dan bahwa ada berbagai algoritma terkenal untuk menyelesaikannya yang mengeksploitasi sifat khusus dari persamaan linear ini. Σ - B C -
Dari googling saya juga belajar bahwa ada implementasi Matlab dan Fortran. Saya telah menemukan SLICOT dan RECSY. Karena masalah perizinan, akses ke sumber SLICOT telah dihentikan.
Sebagian besar pekerjaan saya diimplementasikan dalam R, dan karena saya tidak dapat menemukan antarmuka R untuk solver, saya mempertimbangkan untuk menulis sendiri. Pertanyaan saya kemudian apakah SLICOT adalah perpustakaan Fortran (atau C) terbaik yang tersedia dengan implementasi pemecah persamaan Lyapunov? Saya juga tertarik pada implementasi yang dapat menangani matriks jarang besar .
Jawaban:
SLICOT adalah alat yang digunakan untuk masalah padat.
Untuk sistem yang besar tetapi jarang, ada kotak alat lyapack untuk MATLAB.
Algoritma dalam lyapack berbasis pada komputasi iteratif faktor peringkat rendah , sehingga mendekati , di mana adalah solusi pasti simetris (positif atau negatif) dari persamaan Lyapunov. Menghitung hanya faktor-faktor dalam kombinasi dengan sparsity dari koefisien membuat pendekatan ini layak untuk persamaan skala besar.Z H n Z n Σ ΣZn ZHnZn Σ Σ
Ada penelitian yang sedang berlangsung jelas di Institut Max-Planck di Magdeburg, Jerman, pada persamaan Lyapunov yang jarang. Namun, pengumuman tentang rilis yang akan datang dari penerus lyapack - MESS - sudah beberapa tahun. Namun demikian, perlu memeriksa halaman web MESS dan publikasi dari penulis yang berkontribusi dari waktu ke waktu.
Penafian: Supervisor tesis saya adalah kontributor utama bagi SLICOT dan lyapack dan saya secara teratur berhubungan dengan pengembang MESS.
sumber
Anda dapat terhubung ke MATLAB menggunakan ini .
Matriks Anda tidak terlalu besar: pengodean tangan algoritma tidak seharusnya menghasilkan terlalu banyak waktu yang hilang, mungkin akan berjalan selama 1 jam. Ini mungkin atau mungkin tidak terlalu lama tergantung pada berbagai faktor.
Padahal, mengkodekannya sendiri mungkin tidak mudah sama sekali. Saya pikir saya tidak bisa, dan saya sudah berurusan dengan ini selama beberapa bulan terakhir. Tetapi algoritma SLICOT sendiri ada di sini .
sumber
Algoritma SLICOT tidak terlalu rumit, ini merupakan pengurangan dari Schur form + beberapa substitusi balik. Anda dapat memeriksa kertas Bartels-Stewart http://dl.acm.org/citation.cfm?id=361582 yang dapat dibaca dan menjelaskan cara kerjanya. Makalah ini tentang kasus nonsimetrik, tetapi seharusnya tidak sulit untuk menyesuaikannya dengan yang simetris --- Anda hanya perlu satu bentuk Schur, bukan dua.
Anda mungkin juga bisa mengkodekannya sendiri dalam R jika sudah memiliki bentuk rutin untuk formulir Schur (saya akan memeriksa sendiri, tetapi selalu berantakan untuk mendapatkan hasil yang berarti tentang R dari Google karena pilihan penamaan yang disayangkan).
Ini bisa menyelesaikan kasus padat. Yang besar dan jarang lebih teknis.
sumber