Saya mencoba mencari beberapa sumber untuk membantu menjelaskan bagaimana memilih kondisi batas saat menggunakan metode beda hingga untuk menyelesaikan PDE.
Buku-buku dan catatan yang saat ini saya memiliki akses untuk semua mengatakan hal serupa:
Aturan umum yang mengatur stabilitas di hadapan batas terlalu rumit untuk teks pengantar; mereka membutuhkan mesin matematika yang canggih
(A. Iserles Kursus Pertama dalam Analisis Numerik dari Persamaan Diferensial)
Misalnya, ketika mencoba menerapkan metode 2 langkah leapfrog untuk persamaan advection:
menggunakan MATLAB
M = 100; N = 100;
mu = 0.5;
c = [mu 0 -mu];
f = @(x)(exp(-100*(x-0.5).^2));
u = zeros (M, N);
x = 1/(M+1) * (1:M);
u(:,1) = f(x);
u(:,2) = f(x + mu/(M+1));
for i = 3:N
hold off;
u(:,i) = conv(u(:,i-1),c,'same') + u(:,i-2);
plot(x, u(:,i));
axis( [ 0 1 0 2] )
drawnow;
end
Solusinya berperilaku baik sampai mencapai batas, ketika itu tiba-tiba mulai berperilaku buruk.
Di mana saya bisa belajar bagaimana menangani kondisi batas seperti ini?
sumber
Jawaban umum
Masalah Anda adalah Anda tidak menyetel (atau bahkan menentukan) kondisi batas sama sekali - masalah numerik Anda tidak jelas.
Secara umum, ada dua cara yang mungkin untuk menentukan kondisi batas:
Ke mana Anda pergi sangat tergantung pada fisika masalah Anda. Untuk masalah tipe persamaan gelombang, orang biasanya menentukan nilai eigen dari fluks Jacobian untuk memutuskan apakah kondisi batas eksternal diperlukan, atau apakah solusi interior akan digunakan (metode ini biasa disebut 'upwinding').
Anda dapat menemukan versi modifikasi dari kode sumber Anda di bawah ini:
sumber
N = 1000
dan menjalankan kode sedikit lebih lama, Anda mendapati bahwa kode itu tidak berjalan sesuai harapan.Jadi saya telah melihat ini secara lebih rinci, dan tampaknya ini (setidaknya dalam kasus dasar yang saya tangani) tergantung pada kecepatan grup metode ini.
Metode leapfrog (misalnya) adalah:
Mencoba solusi formulirkamunk= esaya ( ζk Δ x + ω ( ζ) n Δ t ) kami menemukan:
Sekarang kita perlu mengetahui kecepatan kelompok kondisi batas:
Metode saya :kamun + 21= un1+ Μ un + 12
Kita dapat menghitung kecepatan grup batas sebagai berikut:
jadi untuk menemukan beberapa kecepatan grup yang batasnya memungkinkan kita perlu menemukan:
Solusi yang saya temukan dalam literatur adalah mengambilkamun + 10= un1 karena ini memiliki nomor gelombang batas yang terletak di luar [ - 1 , 1 ] .
Saya masih sedikit lebih banyak untuk membaca tentang ini sebelum saya memahaminya sepenuhnya. Saya pikir kata-kata kunci yang saya cari adalah teori GKS.
Sumber untuk semua catatan A Iserles Part III ini
Perhitungan yang lebih jelas tentang apa yang telah saya lakukan dapat ditemukan di sini: http://people.maths.ox.ac.uk/trefethen/publication/PDF/1983_7.pdf
sumber
Kawan, saya sangat baru di situs ini. Mungkin ini bukan tempat untuk bertanya, tapi tolong maafkan saya karena saya sangat baru di sini :) Saya memiliki masalah yang sangat mirip, satu-satunya perbedaan adalah fungsi awal yang, dalam kasus saya, adalah gelombang kosinus. Kode saya adalah ini: hapus semua; clc; tutup semua;
M = 1000; N = 2100;
mu = 0,5;
c = [mu 0 -mu]; f = @ (x) 1- cos (20 * pi * x-0,025). ^ 2; u = nol (M, N); x = 0: (1 / M): 0,05; u (1: panjang (x), 1) = f (x); u (1: panjang (x), 2) = f (x - mu / (M)); x = linspace (0,1, M);
untuk i = 3: N tahan;
plot (x, u (:, i)); sumbu ([0 1,5 -0,5 2]) digambar; % jeda akhir
Sudah ada kode ini di sini, tetapi untuk beberapa alasan, mungkin terkait dengan gelombang kosinus, kode saya gagal: / bantuan apa pun akan dihargai :) terima kasih!
sumber