Memecahkan sistem persamaan yang sulit secara numerik

10

Saya memiliki sistem persamaan -linear yang ingin saya pecahkan secara numerik:n

f = ( f 1 , , f n )

f(x)=a
f=(f1,,fn)x=(x1,,xn)

Sistem ini memiliki sejumlah karakteristik yang membuatnya sangat sulit untuk ditangani. Saya mencari ide tentang cara menangani sistem dengan lebih efektif.

Mengapa sistemnya sulit?

  • Fungsinya mirip dengan yang ini (tapi tentu saja dalam beberapa dimensi):

    Grafik Mathematica

    Mereka memiliki dataran tinggi yang datar yang dipisahkan oleh daerah perubahan yang mulus. Dalam 2D, Anda dapat membayangkan sesuatu seperti ini untuk satu :fi

    Grafik Mathematica

    Secara umum, setiap memiliki dua dataran tinggi yang dipisahkan oleh perubahan halus di sekitar hyperplane dimensi. n - 1fin1

    Fungsi seperti ini sulit ditangani dengan metode seperti Newton karena turunannya secara efektif nol pada dataran tinggi. Dalam banyak dimensi saya tidak dapat dengan mudah menemukan wilayah di mana tidak adafi memiliki dataran tinggi — jika saya bisa, itu akan menyelesaikan masalah. Metode pembagian dua berfungsi dengan baik untuk , tetapi tidak menggeneralisasi dengan baik ke beberapa dimensi.n=1

  • Fungsinya sangat lambat untuk dikomputasi. Saya mencari metode yang bisa mendapatkan perkiraan yang wajar dari root dalam iterasi sesedikit mungkin.

  • Fungsi dihitung dengan metode Monte Carlo. Ini berarti bahwa setiap kali mereka dihitung, saya mendapatkan nilai acak yang sedikit berbeda. Derivatif sulit diperkirakan. Setelah kita cukup dekat dengan root, suara akan mulai mendominasi, dan perlu menggunakan rata-rata untuk meningkatkan presisi. Idealnya mungkin untuk menggeneralisasi metode ke versi perkiraan stokastik yang setara (misalnya, Newton → Robbins-Monro).

  • Sistem ini berdimensi tinggi. bisa sebesar 10-20. Ketika , metode yang efektif mungkin adalah yang berikut: cobalah untuk mengikuti kontur yang didefinisikan oleh dan dan lihat di mana mereka berpotongan. Tidak jelas bagaimana ini akan digeneralisasi ke dimensi tinggi.n = 2 f 1 ( x 1 , x 2 ) = 0 f 2 ( x 1 , x 2 ) = 0nn=2f1(x1,x2)=0f2(x1,x2)=0

Apa lagi yang saya ketahui tentang sistem?

  • Tepatnya ada satu root (dari hasil teoritis).

  • Saya tahu nilai di dataran tinggi (katakanlah 0 dan 1 untuk ). ifii

  • x i f i ( ... , x i , ... ) x i - x j ifi memiliki hubungan khusus dengan :  berubah secara monoton dari 1 menjadi 0 saat beralih dari ke . Ini berlaku untuk setiap nilai tetap dari .xifi(,xi,)xixji

Szabolcs
sumber
Apakah Anda tahu batas bawah dan atas pada semua variabel, di mana solusinya harus terletak? Semakin ketat batas-batas itu, semakin baik. Dapatkah Anda memberikan contoh deterministik, dalam dimensi setinggi yang Anda inginkan, yang menggambarkan dataran tinggi dan kesulitan Anda, tetapi tidak memerlukan simulasi Monte Carlo dan tidak memiliki kesalahan acak dalam fungsi (poin bonus jika turunan dapat dihitung)? Tujuan dari contoh deterministik semacam itu adalah untuk memahami kesulitan masalah, bukan untuk mengatakan bahwa evaluasi Monte Carlo tidak akan digunakan dalam solusi akhir dari masalah Anda yang sebenarnya.
Mark L. Stone
@ MarkL.Stone Bounds: Saya tidak kenal mereka. Tapi saya bisa menebak. Dugaan harus cukup luas untuk yakin bahwa itu benar. Contoh: Saya akan memberikan contoh dan akan mengedit pertanyaan besok. Saya tidak memiliki gambaran yang lebih jelas tentang bentuk sebenarnya dari daripada apa yang saya jelaskan di sini, jadi contoh pertama saya mungkin tidak benar-benar mewakili masalah sebenarnya. Tapi saya akan mengumpulkan sesuatu yang terbuat dari fungsi Fermi (sigmoids), dan saya akan mencoba membuatnya memiliki banyak kesulitan dari masalah nyata yang saya bisa. f
Szabolcs
Saya tak sabar untuk melihatnya,
Mark L. Stone

Jawaban:

1

Karena ada satu root dan tidak ada kendala, Anda mungkin beruntung menempatkannya sebagai masalah optimisasi: meminimalkan jumlah (sepanjang setiap dimensi) dari kotak fungsi asli Anda.

Metode Optimasi Klasik kemungkinan akan gagal, tetapi metode heuristik seperti algoritma genetika atau CME-ES (adaptasi matriks kovarian dll - strategi evolusi) mungkin berhasil.

MattKelly
sumber
Itu memang pendekatan yang harus dilakukan. Saya terutama akan melihat algoritma SPSA yang dikembangkan khusus untuk tujuan Anda dan cukup kuat.
Wolfgang Bangerth
2
OP menyebutkan bahwa fungsi sangat mahal untuk dievaluasi (menerapkan simulasi Monte Carlo untuk evaluasi fungsi). Bukankah itu menimbulkan masalah yang sangat besar untuk algoritma genetika dan algoritma evolusi lainnya? Mereka "paralel paralel" (dan apakah MC biasanya juga) sehingga komputasi paralel masif dapat dimungkinkan tetapi apakah mereka cara terbaik untuk pergi ke sini?
GertVdE
@ WolfgangBangerth Terima kasih, seperti yang Anda katakan itu terdengar seperti solusi yang tepat. Saya akan melihat SPSA.
Szabolcs
1
Mengenai evaluasi fungsi yang mahal: Memang benar bahwa algoritma genetika dan metode heuristik terkait cenderung membutuhkan sejumlah besar evaluasi fungsi daripada metode tradisional. Manfaatnya adalah bahwa metode heuristik sering dapat memecahkan masalah yang 1) jika tidak akan memerlukan metode khusus masalah atau 2) akan gagal karena masalah numerik. Untuk contoh ini, ada kemungkinan bahwa metode tradisional akan mengalami masalah karena sifat stokastik dari fungsi tujuan dan gradien kecil di sepanjang beberapa dimensi. SPSA terlihat seperti metode kandidat yang bagus untuk masalah ini.
MattKelly