Menurut jawaban di sini , angka kondisi besar (untuk penyelesaian sistem linier) mengurangi jumlah digit yang benar dalam solusi floating point. Matriks diferensiasi orde tinggi dalam metode pseudospectral biasanya sangat dikondisikan. Mengapa saat itu mereka masih merupakan metode yang sangat akurat?
Saya memahami bahwa presisi rendah yang berasal dari matriks yang dikondisikan buruk hanya merupakan nilai yang dijamin , tetapi tetap saja membuat saya bertanya-tanya mengapa matriks yang dikondisikan secara akurat diselesaikan dengan metode langsung dalam praktiknya - misalnya, LCOL
kolom Tabel 3.1 pada halaman 11 dari Wang et al., METODE KOLOKASI YANG BAIK DENGAN KONDISI MENGGUNAKAN MATRIX INTEGRASI PSEUDOSPECTRAL , SIAM J. Sci. Komputasi, 36 (3) .
sumber
Jawaban:
Ditambahkan setelah jawaban awal saya:
Tampak bagi saya sekarang bahwa penulis makalah yang direferensikan memberikan angka kondisi (angka kondisi 2-norma tetapi angka kondisi norma tak terhingga) dalam tabel sambil memberikan kesalahan absolut maksimum daripada kesalahan relatif normal atau kesalahan relatif elemenwise maksimum ( ini semua adalah ukuran yang berbeda.) Perhatikan bahwa kesalahan relatif elemen-elemen maksimum tidak sama dengan kesalahan relatif norma-tak terhingga. Selain itu, kesalahan dalam tabel relatif terhadap solusi yang tepat untuk masalah nilai batas persamaan diferensial asli daripada sistem linear persamaan diskritisasi. Dengan demikian informasi yang disediakan dalam makalah benar-benar tidak sesuai untuk digunakan dengan batas kesalahan berdasarkan nomor kondisi.
Namun, dalam replikasi perhitungan saya, saya memang melihat situasi di mana kesalahan norma tak terhingga relatif (atau kesalahan relatif dua norma) secara substansial lebih kecil daripada terikat yang ditetapkan oleh nomor kondisi tak terhingga-norma (masing-masing nomor kondisi 2-norma.) Terkadang Anda beruntung.
Saya menggunakan paket DMSUITE MATLAB dan memecahkan contoh masalah dari makalah ini menggunakan metode pseudospectral dengan polinomial Chebyshev. Nomor kondisi saya dan kesalahan absolut maksimum mirip dengan yang dilaporkan di koran.
Saya juga melihat kesalahan relatif norma yang agak lebih baik dari yang diperkirakan berdasarkan nomor kondisi. Sebagai contoh, pada contoh masalah dengan , menggunakan N = 1024 , saya dapatkanϵ = 0,01 N= 1024
cond (A, 2) = 7.9e + 8
cond (A, inf) = 7.8e + 8
norm (u-uexact, 2) / norm (uexact, 2) = 3.1e-12
norm (u-uexact, inf) / norm (uexact, inf) = 2.7e-12
Tampaknya solusinya bagus untuk sekitar 11-12 digit, sedangkan nomor kondisinya ada di urutan 1e8.
Namun, situasi dengan kesalahan elemen-elemen lebih menarik.
maks (abs (u-uexact)) = 2.7e-12
Itu masih terlihat bagus.
maks (abs ((u-uexact) ./ uexact) = 6.1e + 9
Wow- ada kesalahan relatif yang sangat besar dalam setidaknya satu komponen solusi.
Apa yang terjadi? Solusi yang tepat dari persamaan ini memiliki komponen yang kecil (mis. 1.9e-22) sedangkan solusi perkiraan keluar pada nilai yang jauh lebih besar dari 9e-14. Ini disembunyikan oleh pengukuran kesalahan relatif norma (apakah itu 2-norma atau tak terhingga-norma) dan hanya menjadi terlihat ketika Anda melihat kesalahan relatif elemen-elemen dan mengambil maksimum.
Jawaban asli saya di bawah ini menjelaskan mengapa Anda bisa mendapatkan kesalahan relatif normal dalam solusi yang kurang dari batas yang diberikan oleh nomor kondisi.
Seperti yang telah Anda catat dalam pertanyaan, nomor kondisi, , dari matriks non-singular memberikan kesalahan relatif kasus terburuk yang terikat untuk solusi untuk sistem persamaan yang terganggu. Yaitu, jika kita menyelesaikan A ( x + Δ x ) = b + Δ b dengan tepat dan menyelesaikan A x = b dengan tepat, makaκ ( A ) A ( x + Δ x ) = b + Δ b A x = b
Nomor kondisi dapat dihitung sehubungan dengan berbagai norma, tetapi nomor kondisi dua norma sering digunakan, dan itulah nomor kondisi yang digunakan dalam kertas yang Anda rujuk.
Kesalahan kasus terburuk terjadi ketika adalah vektor singular kiri A yang sesuai dengan nilai singular terkecil dari A . Kasus terbaik terjadi ketika Δ b adalah vektor singular kiri A yang sesuai dengan nilai singular A terbesar . Ketika Δ b adalah acak, maka Anda harus melihat proyeksi Δ b pada semua vektor singular kiri A dan nilai singular yang sesuai. Bergantung pada spektrum A , segalanya mungkin berjalan sangat buruk atau sangat baik.Δb A A Δb A A Δb Δb A A
Pertimbangkan dua matriks , keduanya dengan nomor kondisi 2-norma 1,0 × 10 10 . Matriks pertama memiliki nilai singular 1 , 1 × 10 - 10 , … , 1 × 10 - 10 . Matriks kedua memiliki nilai singular 1 , 1 , … , 1 , 1 × 10 - 10 .A 1.0×1010 1 1×10−10 … 1×10−10 1 1 … 1 1×10−10
Dalam kasus pertama, gangguan acak tidak mungkin berada dalam arah vektor singular kiri pertama, dan lebih cenderung dekat dengan salah satu vektor singular dengan nilai singular . Dengan demikian perubahan relatif dalam solusi cenderung sangat besar. Dalam kasus kedua, hampir semua gangguan akan dekat ke arah vektor singular dengan nilai singular 1 , dan perubahan relatif dalam solusi akan kecil.1×10−10 1
PS (ditambahkan kemudian setelah saya kembali dari kelas yoga ...)
Rumus untuk solusi untuk adalahAΔx=Δb
Oleh teorema Pythagoras,
Jika kita tetap , maka jumlah ini dimaksimalkan ketika Δ b = U n dan diminimalkan ketika Δ b = U 1 .∥ Δ b ∥2= 1 Δ b = Un Δ b = U1
Dalam situasi yang dipertimbangkan di sini, adalah hasil dari kesalahan pembulatan acak, sehingga nilai U T i Δ b semuanya harus besarnya kira-kira sama. Istilah dengan nilai yang lebih kecil dari σ i akan berkontribusi banyak pada kesalahan, sementara istilah dengan nilai yang lebih besar dari σ saya tidak akan berkontribusi banyak. Bergantung pada spektrumnya, ini bisa dengan mudah jauh lebih kecil dari batas kasus terburuk.Δ b UTsayaΔ b σsaya σsaya
sumber
?getrs
tl; dr Mereka melaporkan sebuah nomor kondisi, belum tentu tepat jumlah kondisi matriks, karena ada perbedaan.
Ini khusus untuk matriks dan vektor sisi kanan. Jika Anda melihat dokumentasi untuk
*getrs
, dikatakan batas kesalahan maju adalah Di sinicond(A,x)tidak cukup seperti bilangan kondisiκ∞(A), melainkan cond(A,x)=‖| A - 1Sebagai contoh Anda, saya mengambil operator diferensial pseudospectral untuk masalah yang sama dengan , dan sebenarnya ada perbedaan besar antara ‖ | A - 1 | | A | ‖ Dan κ ∞ ( A ) , saya menghitung 7 × 10 3 dan 2,6 × 10 7n=128 ∥|A−1||A|∥ κ∞(A) 7×103 2.6×107 , yang cukup untuk menjelaskan pengamatan bahwa ini terjadi untuk semua sisi kanan, karena urutan besarnya kira-kira sesuai dengan yang terlihat pada Tabel 3.1 (3-4 urutan kesalahan yang lebih baik). Ini tidak bekerja ketika saya mencoba sama untuk hanya random matrix sakit-AC, sehingga harus menjadi milik .A
Contoh eksplisit di mana kedua nomor kondisi tidak cocok, yang saya ambil dari Higham (7.17, hal.124), karena Kahan adalah Contoh lain yang saya temukan hanyalah matriks Vandermonde polosdenganbacak. Saya melewatidan beberapa matriks berkondisi buruk lainnya juga menghasilkan jenis hasil ini, sepertidan.
[1:10]
MatrixDepot.jl
triw
moler
Pada dasarnya, apa yang terjadi adalah ketika Anda menganalisis stabilitas penyelesaian sistem linier sehubungan dengan gangguan, Anda harus terlebih dahulu menentukan gangguan mana yang Anda pertimbangkan. Saat memecahkan sistem linier dengan LAPACK, batas kesalahan ini mempertimbangkan gangguan komponen-bijaksana dalam , tetapi tidak ada gangguan di b . Jadi ini berbeda dari yang biasa κ ( A ) = ‖ A - 1 ‖ ‖ A ‖ , yang menganggap gangguan normwise di kedua A dan b .A b κ(A)=∥A−1∥∥A∥ A b
Pertimbangkan (sebagai contoh tandingan) juga apa yang akan terjadi jika Anda tidak membuat perbedaan. Kita tahu bahwa menggunakan perbaikan berulang dengan presisi ganda (lihat tautan di atas) kita bisa mendapatkan kesalahan relatif ke depan yang paling baik dari untuk matriks dengan κ ( A ) ≪ 1 / u . Jadi jika kita mempertimbangkan gagasan bahwa sistem linier tidak dapat diselesaikan dengan akurasi lebih baik daripada κ ( A ) u , bagaimana mungkin solusi pemurnian bekerja?O(u) κ(A)≪1/u κ(A)u
PS Itu penting yangE A b b
?getrs
mengatakan solusi dihitung adalah solusi yang benar(A + E)x = b
dengan perturbasi di A , tetapi tidak ada gangguan di b . Keadaan akan berbeda jika gangguan diizinkan di b .Mengedit Untuk menunjukkan ini bekerja lebih langsung, dalam kode, bahwa ini bukan kebetulan atau masalah keberuntungan, melainkan (biasa) konsekuensi dari dua angka kondisi yang sangat berbeda untuk beberapa matriks tertentu, yaitu,
Sunting 2 Berikut adalah contoh lain dari fenomena yang sama di mana kondisi yang berbeda jumlahnya berbeda-beda. Kali ini, Di sini A adalah matriks Vandermonde 10 × 10 pada 1 : 10 , dan ketika x dipilih secara acak, c o n d ( A , x ) secara nyata lebih kecil dari κ
Kasus rata-rata (hampir 9 urutan kesalahan lebih besar lebih baik):
Kasus terburuk ( ):a=1,…,12
sumber