Apakah penskalaan variabel penting ketika menyelesaikan beberapa masalah PDE secara numerik?

14

Dalam simulasi semikonduktor, adalah umum bahwa persamaan diskalakan sehingga memiliki nilai yang dinormalisasi. Sebagai contoh, dalam kasus ekstrim kerapatan elektron dalam semikonduktor dapat bervariasi di atas 18 orde magnitudo, dan medan listrik dapat berubah bentuk, lebih dari 6 (atau lebih) orde magnitudo.

Namun, surat kabar tidak pernah benar-benar memberikan alasan untuk melakukan ini. Secara pribadi saya senang berurusan dengan persamaan dalam satuan nyata, apakah ada keuntungan numerik untuk melakukan ini, apakah itu mustahil? Saya pikir dengan presisi ganda akan ada angka yang cukup untuk mengatasi fluktuasi ini.


Kedua jawaban itu sangat bermanfaat, terima kasih banyak!

Boyfarrell
sumber
1
"dapat bervariasi lebih dari 18 urutan besarnya" - dan jika Anda mempertimbangkan berapa banyak digit yang dipertahankan dalam presisi ganda, Anda akan melihat apakah "dengan presisi ganda akan ada cukup digit untuk mengatasi fluktuasi ini" memang benar ...
JM
1
Dan masalah sebenarnya dimulai ketika Anda memberi makan angka-angka ini ke dalam algoritma numerik: Ambil kotak, dan tiba-tiba Anda memiliki 36 urutan perbedaan besarnya ...
Christian Clason

Jawaban:

9

Memecahkan (linear) PDE terdiri dalam diskritisasi persamaan untuk menghasilkan sistem linier, yang kemudian dipecahkan oleh pemecah linier yang konvergensi (laju) tergantung pada jumlah kondisi matriks. Penskalaan variabel sering mengurangi angka kondisi ini, sehingga meningkatkan konvergensi. (Ini pada dasarnya sama dengan menerapkan preconditioner diagonal, lihat Akurasi dan Stabilitas Nicholas Higham dari Algoritma Numerik .)

Selain itu, pemecahan PDE nonlinier membutuhkan metode untuk menyelesaikan persamaan nonlinier seperti metode Newton, di mana penskalaan juga dapat memengaruhi konvergensi.

Karena normalisasi segala sesuatu biasanya membutuhkan sedikit usaha, itu hampir selalu merupakan ide yang baik.

Christian Clason
sumber
Saya yakin @ArnoldNeumaier banyak bicara tentang topik ini.
Christian Clason
Jumlah kondisi dari matriks yang saya gunakan (variabel yang tidak dihitung) adalah ~ 1,25 . Apakah ini masuk akal? Ini dihitung dengan menggunakan metode 2-norma ( docs.scipy.org/doc/numpy/reference/generated/… ).
boyfarrell
@ kawan, jika tidak ada yang lain mengalikan 1,25, maka itu adalah angka kondisi yang oke, terutama jika Anda ingat bahwa matriks kesatuan memiliki . κ2=1
JM
1
@boyfarrell: Saya secara rutin bekerja dengan angka kondisi sebesar 10 ^ 7, dengan hasil yang dapat diterima. Namun, saya tidak akan menerima angka kondisi yang jauh lebih tinggi dari 10 ^ 9.
jvriesem
9

-εΔkamu+kamu=0 di Ω,kamu=1 di Ω.

Yang mengatakan, tidak ada penskalaan variabel atau domain yang menghilangkan kesulitan ini.

kamuα

-α2Δkamu=fα di αΩ
αkamu1
-Δkamu=f di Ω.
kamuα(x): =kamu1(x/α)αα
Nico Schlömer
sumber
4
Dan parameter yang tersisa harus menjadi penting untuk menentukan perilaku kualitatif dari solusi - inilah mengapa angka Reynolds sangat penting dalam dinamika fluida. Proses ini disebut Nondimensionalization .
Christian Clason
tentu saja, menemukan persamaan parameter seperti itu pada dasarnya adalah masalah menemukan kelompok simetri PDE, masalah yang secara umum sulit
lurscher
2

Berurusan dengan angka floating point bisa menjadi trik sehubungan dengan pengurangan angka kecil dari angka yang lebih besar, serta dengan banyak aspek lainnya. Saya akan merekomendasikan membaca posting blog John D. Cooks pada mereka, seperti

Anatomi Nomor Poin Mengambang

serta Oracle

Apa Yang Harus Diketahui Setiap Ilmuwan Komputer Tentang Aritematik Floating-Point

Juga algoritma numerik tertentu untuk minimalisasi, atau maksimalisasi memerlukan normalisasi untuk stabilitas numerik.

Phillip Nordwall
sumber