Saya membuat pengamatan aneh sambil menghitung solusi untuk persamaan difusi reaksi 1D sederhana:
Nilai awal adalah konstan ( ), dan aku hanya tertarik terpisahkan atas dari ke ( ). Tujuan dari dan persamaan hanya untuk mengevaluasi integral ini.b ( 0 , x ) = b 0 a 0 1 ∫ 1 0 a ( t , x ) d t c ∂
Saya menggunakan skema pemisahan Strang untuk penggandaan antara difusi dan reaksi (reaksi setengah langkah, kemudian difusi langkah penuh, dan kemudian lagi setengah langkah reaksi), skema Crank Nicholson untuk difusi, dan solusi analitis untuk reaksi ( termasuk persamaan ).
Karena satu langkah dari solusi analitis lebih dari faktor 3 lebih lambat dari satu langkah skema Crank Nicholson, saya mencoba membuat lebih dari satu langkah Crank Nicholson untuk setiap langkah reaksi. Saya berharap untuk bertahan dengan langkah yang lebih sedikit dari skema pemisahan Strang, sehingga saya akan lebih cepat secara keseluruhan.
Namun, efek sebaliknya dapat diamati, yaitu bahwa lebih banyak langkah untuk skema pemisahan Strang diperlukan jika lebih dari satu langkah Crank Nicholson digunakan. (Saya hanya peduli dengan akurasi integral atas , yang tampaknya konvergen lebih cepat dari itu sendiri.) Setelah bertanya-tanya untuk beberapa waktu, saya melihat bahwa efek yang sama juga terjadi untuk , dan saya bahkan mengerti mengapa untuk kasus ini. Intinya adalah bahwa jika saya membuat tepat satu langkah Crank Nicholson, maka skema keseluruhan berubah menjadi aturan trapesium (jika ).a b ( t , x ) = b 0 = 0 b ( t ) = 0
Jadi jika saya akan memperlakukan sebagai bagian dari langkah difusi, meningkatkan jumlah langkah Crank Nicholson (mungkin) tidak akan menyebabkan berkurangnya akurasi keseluruhan (seperti yang diamati). Tapi itu tampaknya mengalahkan tujuan menggunakan solusi analitis untuk bagian reaksi (non-linear dan berpotensi sangat kaku) dari sistem.
Jadi inilah pertanyaan saya: Apakah ada cara yang lebih baik untuk memperlakukan dalam konteks pemisahan Strang, daripada memperlakukannya sebagai bagian dari langkah reaksi, atau untuk memperlakukan itu sebagai bagian dari langkah difusi. Saya ingin menghindari "dipaksa" untuk menggunakan tepat satu langkah Crank Nicholson untuk difusi. (Misalnya dalam 3D, saya lebih suka menyelesaikan difusi secara analitik dengan FFT daripada menggunakan Crank Nicholson. Tentu saja saya juga bisa menggabungkan FFT dengan Crank Nicholson, jadi ini bukan masalah besar.)
sumber
Jawaban:
Saya akan menulis ini sebagai jawaban walaupun tidak langsung menjawab pertanyaan.
Memasukkan persamaan kedua dan persamaan ketiga ke yang pertama, dan memasukkan yang ketiga ke yang kedua, bersama-sama memberikan: Menyusun ulang keduanya memberi: Sekarang, kita dapat mengintegrasikan keduanya sekaligus dalam , pergi ke persamaan pertama:
Mengganti dengan , atau menggunakan kondisi awal , persamaan ini menyederhanakan menjadi Sekarang, Anda harus dapat menemukan literatur yang cukup tentang cara terbaik untuk menyelesaikan persamaan ini. Saya tidak tahu apakah Crank-Nicholson adalah pilihan yang baik untuk istilah eksponensial, tetapi tampaknya masuk akal. Beberapa perawatan mungkin harus diambil untuk menjamin bahwa mana-mana atau solusi dapat meledak dengan cepat.c - c 0 c 0 ( x ) = 0 ∂ cc c−c0 c0(x)=0 c>c0
Saya hanya berjalan melalui derivasi ini dua kali, jadi mungkin ada satu atau dua kesalahan di dalamnya, tetapi itu terasa tepat bagi saya. Jika mana-mana, maka ini jelas merupakan solusi yang tepat, dan memiliki aroma masuk akal sebaliknya.b0=0
Memecahkan ini sampai dan mengevaluasi akan memberi Anda jawaban yang Anda cari.c ( x , 1 )t=1 c(x,1)
sumber