Saya memiliki sistem linear yang tidak homogen
di mana adalah nyata matriks dengan . Nullspace dari dijamin dari dimensi nol sehingga persamaan memiliki invers yang unik . Karena hasilnya masuk ke sisi kanan dari ODE, yang ingin saya pecahkan dengan menggunakan metode adaptif, penting agar solusinya halus sehubungan dengan variasi kecil elemen dan . Karena persyaratan ini dan dimensi kecil, saya berpikir untuk mengimplementasikan formula eksplisit untuk . Elemen-elemennya bisa nol atau mengambil nilai yang sangat berbeda. Pertanyaan saya adalah apakah ini masuk akal bagi Anda dan jika ada ekspresi stabil yang diketahui untuk ini. Saya mengkode dalam C untuk sistem x86.
sumber
Jawaban:
Sebelum menerapkan formula eksplisit, saya akan bertanya pada diri sendiri pertanyaan: "apakah itu layak?":
Saran saya: gunakan kombinasi BLAS / LAPACK terlebih dahulu, lihat apakah itu berfungsi, profil seluruh program, minta siswa untuk mengimplementasikan formula eksplisit (maaf, menjadi sarkastik di sini) dan membuat perbandingan pada kecepatan dan kekokohan.
sumber
Satu-satunya hasil terbalik eksplisit yang saya ketahui adalah Aturan Cramer , yang baru-baru ini terbukti dapat dihitung dalam waktu (seperti eliminasi Gaussian; meskipun tidak yakin dengan konstanta di depan faktor utama).O ( n3)
Agar aman, mungkin yang terbaik adalah memastikan bahwa juga tidak kekurangan peringkat secara numerik (yaitu, tidak memiliki nilai singular yang kecil).SEBUAH
Masalah dengan Aturan Cramer's adalah bahwa sifat stabilitasnya tidak diketahui kecuali untuk (yang maju stabil, tetapi tidak mundur stabil). (Lihat Akurasi dan Stabilitas Algoritma Numerik , edisi ke-2, oleh N. Higham.) Itu tidak dianggap sebagai algoritma yang dapat diandalkan; Eliminasi Gaussian dengan Partial Pivoting (GEPP) lebih disukai.n = 2
Saya akan mengharapkan masalah dengan menggunakan BLAS + LAPACK untuk melakukan GEPP dalam penyelesaian ODE akan ada perbedaan hingga digunakan dalam metode ODE implisit. Saya tahu bahwa orang telah menyelesaikan program linier sebagai bagian dari evaluasi sisi kanan, dan karena mereka melakukannya dengan naif (hanya menyambungkan program linear ke sisi kanan, memanggil algoritma simpleks), mereka sangat mengurangi keakuratan program mereka. solusi yang dihitung dan secara substansial meningkatkan waktu yang dibutuhkan untuk menyelesaikan masalah. Teman sekerja saya menemukan cara untuk menyelesaikan masalah seperti itu dengan cara yang jauh lebih efisien, akurat; Saya harus melihat apakah publikasi ini sudah dirilis. Anda mungkin memiliki masalah serupa terlepas dari apakah Anda memilih untuk menggunakan GEPP atau Aturan Cramer's.
Jika ada cara Anda dapat menghitung matriks Jacobian analitik untuk masalah Anda, Anda mungkin ingin melakukan itu untuk menyelamatkan diri Anda dari sakit kepala numerik. Akan lebih murah untuk mengevaluasi, dan mungkin lebih akurat, daripada perkiraan perbedaan yang terbatas. Ekspresi untuk turunan dari matriks invers dapat ditemukan di sini jika Anda membutuhkannya. Mengevaluasi turunan dari matriks invers sepertinya akan membutuhkan setidaknya dua atau tiga penyelesaian sistem linier, tetapi semuanya akan dengan matriks yang sama dan sisi kanan yang berbeda, sehingga tidak akan jauh lebih mahal daripada sistem linear tunggal. memecahkan.
Dan jika ada cara Anda dapat membandingkan solusi yang dihitung dengan solusi dengan nilai parameter yang diketahui, saya akan melakukan itu, sehingga Anda dapat mendiagnosis apakah Anda telah menemukan salah satu dari jebakan numerik ini.
sumber
Tidak yakin itu bisa membantu tetapi saya hanya berpikir ketika Anda berbicara tentang solusi stabil, Anda berbicara tentang metode perkiraan. Ketika Anda menghitung hal-hal secara eksplisit, stabilitas tidak memiliki akal. Itu mengatakan Anda harus menerima solusi perkiraan jika Anda ingin mendapatkan stabilitas.
sumber