Panduan apa yang harus saya ikuti ketika memilih pemecah sistem linier yang jarang?


Sistem linear yang jarang muncul dengan meningkatnya frekuensi dalam aplikasi. Seseorang memiliki banyak rutinitas untuk dipilih untuk menyelesaikan sistem ini. Pada level tertinggi, ada batas antara metode langsung (mis. Eliminasi Gaussian yang jarang atau dekomposisi Cholesky, dengan algoritma pemesanan khusus, dan metode multirontal) dan iteratif (misalnya metode GMRES, (bi-) konjugat gradien).

Bagaimana cara menentukan apakah akan menggunakan metode langsung atau berulang? Setelah membuat pilihan itu, bagaimana cara memilih algoritma tertentu? Saya sudah tahu tentang eksploitasi simetri (misalnya menggunakan gradien konjugat untuk sistem definitif positif simetris jarang), tetapi apakah ada pertimbangan lain seperti ini yang harus dipertimbangkan dalam memilih metode?

Jawaban:


Yang penting ketika memilih pemecah iteratif adalah spektrum operator, lihat makalah ini . Namun, ada begitu banyak hasil negatif, lihat makalah ini di mana tidak ada pemecah iteratif menang untuk semua masalah dan makalah ini di mana mereka membuktikan mereka bisa mendapatkan kurva konvergensi untuk GMRES untuk spektrum apa pun. Dengan demikian, tampaknya tidak mungkin untuk memprediksi perilaku pemecah iteratif kecuali dalam beberapa kasus yang terisolasi, Oleh karena itu, pilihan terbaik Anda adalah mencoba semuanya, menggunakan sistem seperti PETSc , yang juga memiliki pemecah langsung.


2
"Lempar semua yang kau bisa untuk itu" adalah nasihat yang sudah biasa kukerjakan. :) Makalah ketiga yang Anda tautkan adalah sesuatu yang belum pernah saya lihat sebelumnya; Terima kasih untuk itu!
JM

2
Matt memiliki jawaban yang bagus, tetapi Anda harus menerimanya dalam konteks komunitas tempat ia berasal (komputasi ilmiah skala besar). Anda akan menemukan bahwa untuk masalah kecil (katakanlah, kurang dari seratus ribu yang tidak diketahui), pemecah langsung sangat mengungguli metode iteratif jika masalahnya tidak sangat elips. Saya belum melihat makalah umum yang bagus dalam literatur yang akan mengarahkan Anda ke arah strategi awal awal, yang agak memalukan bagi saya.
Aron Ahmadia

5
Perkiraan Aron baik tetapi sangat tergantung pada pengisian karena metode langsung jarang biasanya menghabiskan memori sebelum mereka menghabiskan kesabaran.
Matt Knepley

Pilihan antara metode langsung dan berulang tergantung pada tujuan dan masalah yang dihadapi.

Untuk metode langsung, kami dapat mencatat:

  • The matriks koefisien dari sistem linear perubahan selama perhitungan dan mungkin untuk sistem jarang persyaratan pembuangan memori dan usaha peningkatan kerja karena mengisi-in
  • Harus lengkap untuk memberikan hasil yang bermanfaat
  • Factorisasi dapat digunakan kembali dalam langkah-langkah selanjutnya jika terdapat banyak sisi kanan
  • Dapat digunakan untuk menyelesaikan sistem linier saja.
  • Jarang gagal.

Untuk metode berulang, kita dapat mencatat:

  • Tujuannya adalah untuk memberikan hasil parsial hanya setelah sejumlah kecil iterasi.
  • Upaya penyelesaian harus kurang dari metode langsung untuk masalah yang sama.
  • Ekonomis berkenaan dengan penyimpanan (tanpa isi)
  • Seringkali mudah diprogram.
  • Solusi perkiraan yang diketahui dapat dieksploitasi.
  • Terkadang mereka cepat dan terkadang tidak (kadang-kadang bahkan berbeda).
  • Untuk masalah yang kompleks, metode berulang jauh kurang kuat dibandingkan dengan metode langsung.

Pedoman kapan harus menggunakan metode langsung atau berulang?

  • Metode berulang ketika matriks koefisien jarang dan metode langsung tidak dapat mengeksploitasi sparsity secara efisien (hindari membuat fill-in).
  • Metode langsung untuk banyak sisi kanan.
  • Metode berulang dapat lebih efisien jika akurasi kurang diperhatikan
  • Metode berulang untuk sistem persamaan nonlinier.

8
O(n)O(n)O(n2)O(1)

Saya sepenuhnya setuju dengan jawaban yang sudah diberikan. Saya ingin menambahkan bahwa semua metode berulang membutuhkan semacam tebakan awal. Kualitas tebakan awal ini seringkali dapat memengaruhi laju konvergensi metode yang Anda pilih. Metode seperti Jacobi, Gauss Seidel, dan Successive Over Relaxation semuanya bekerja untuk "menghaluskan" sebanyak mungkin kesalahan di setiap langkah ( lihat makalah ini untuk detailnya)). Beberapa langkah pertama mengurangi kesalahan frekuensi tinggi agak cepat, tetapi kesalahan frekuensi rendah membutuhkan lebih banyak iterasi untuk menghaluskan. Inilah yang membuat konvergensi lambat untuk metode ini. Dalam kasus seperti ini, kita dapat mempercepat konvergensi dengan menyelesaikan kesalahan frekuensi rendah (misalnya menyelesaikan masalah yang sama pada mesh kasar) terlebih dahulu, kemudian memecahkan kesalahan frekuensi yang lebih tinggi (misalnya pada mesh yang lebih halus). Jika kita menerapkan konsep ini secara rekursif dengan membagi dan menaklukkan, kita mendapatkan apa yang disebut metode Multi-grid. Bahkan jika sistem linear tidak simetris, ada implementasi alternatif metode multi-grid untuk sistem matriks jarang nonsingular (misalnya metode multi-grid aljabar) yang dapat mempercepat konvergensi solver. Skalabilitas mereka pada sistem paralel, bagaimanapun, adalah subjek dari banyak penelitian.


5
Jawaban ini tampaknya memberi kesan bahwa efektivitas multigrid berasal dari menemukan tebakan awal yang baik. Pada kenyataannya, tebakan awal adalah masalah kecil untuk masalah linier dan benar-benar hanya masalah untuk Multigrid Penuh. Multigrid berfungsi karena pemisahan spektral. Perhatikan bahwa membuat multigrid berkinerja baik untuk masalah-masalah sulit adalah tantangan yang signifikan. Multigrid bekerja cukup baik secara paralel, telah menjadi bahan utama dalam beberapa hadiah Gordon Bell dan beberapa paket open source berjalan dengan efisiensi tinggi pada mesin terbesar saat ini. Untuk implementasi GPU, lihat perpustakaan CUSP.
Jed Brown

Sering kali tebakan awal acak cukup baik. Dalam mengekstraksi nilai eigen menggunakan algoritme Lanczos, vektor awal / mulai ulang secara acak memang membantu. Memulai ulang kadang terjadi di Algoritma Lanczos.
AnilJ

Ada bagian penting dari informasi yang hilang dalam pertanyaan Anda: dari mana asalnya. Struktur masalah yang Anda coba selesaikan memiliki potensi besar untuk menyarankan metode solusi.

Jika matriks Anda berasal dari persamaan diferensial parsial dengan koefisien halus, metode multigrid geometris akan sulit dikalahkan, khususnya dalam tiga dimensi. Jika masalah Anda kurang teratur, multigrid aljabar adalah metode yang baik. Keduanya biasanya dikombinasikan dengan metode ruang-Krylov. Pemecah yang efisien lainnya dapat diturunkan dari metode multipole cepat atau transformasi Fourier cepat.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.