Menulis persamaan beda hingga hingga persamaan Poisson dengan syarat batas Neumann

15

Saya tertarik untuk menyelesaikan persamaan Poisson menggunakan pendekatan finite-difference. Saya ingin lebih memahami bagaimana menulis persamaan matriks dengan kondisi batas Neumann. Akankah seseorang meninjau yang berikut, apakah itu benar?

Matriks beda hingga

Persamaan Poisson,

2u(x)x2=d(x)

dapat didekati dengan persamaan matriks hingga-perbedaan,

1(Δx)2Mu^=d^

di mana adalah n × n matriks dan u dan d adalah 1 × n (kolom) vektor,Mn×nu^d^1×n

Matriks beda hingga dari persamaan Poisson

Menambahkan kondisi batas Neumann

Kondisi batas Neumann memberlakukan fluks pengetahuan pada batas (di sini kami menerapkannya di sisi kiri di mana batas berada pada ),x=0

menulis kondisi batas ini sebagai perbedaan-tengah terpusat,

kamu(x=0)x=σ

Kesalahan dalam persamaan. NB. Saya awalnya membuat kesalahan di sini, menandatangani kesalahan dan tidak membagi dengan 2. Berikut ini telah diperbaiki.

u2u02Δx=σ

Perhatikan pengenalan titik jala di luar domain asli ( ). Istilah ini dapat dihilangkan dengan memperkenalkan persamaan kedua, u 0 - 2 u 1 + u 2u0

u02u1+u2(Δx)2=d1

Persamaan muncul dari memiliki lebih banyak informasi karena pengenalan titik jala baru. Hal ini memungkinkan kita untuk menulis turunan ganda dari u1 sebagai batas dalam hal u0 menggunakan berpusat terbatas-perbedaan.

Bagian yang aku tidak yakin

Menggabungkan kedua persamaan ini dapat dihilangkan. Untuk menunjukkan kerja, mari kita mengatur ulang untuk yang tidak dikenal,u0

u0=2σΔx+u2u0=(Δx)2d1+2u1u2

Selanjutnya mereka disetel sama dan disusun kembali ke dalam formulir,

u2u1(Δx)2=d12+σΔx

u(Δx)2

Akhirnya, menggunakan persamaan ini sebagai baris pertama dari matriks,

Persamaan Poisson dengan kondisi batas Neumann di sisi kiri (dikoreksi)

Beberapa pemikiran terakhir,

  1. Apakah matriks terakhir ini benar?
  2. Bisakah saya menggunakan pendekatan yang lebih baik?
  3. Apakah ada cara standar untuk menulis matriks ini?
Boyfarrell
sumber
2
2Δxu0=σΔx+u2
3
Ini dikerjakan dengan sangat baik dalam teks perbedaan terbatas LeVeque , bab 2.
David Ketcheson
1
Masalah-masalah ini juga dijelaskan dengan baik di scientificpython.net/1/post/2013/01/...
Evgeni Sergeev
dapatkah Anda melihat scicomp.stackexchange.com/questions/14306/…
usumdelphini

Jawaban:

7

Saya pikir Anda berada di jalan yang benar. Jika Anda memperbaiki kesalahan Anda, itu akan terlihat sangat mirip dengan http://www.math.toronto.edu/mpugh/Teaching/Mat1062/notes2.pdf .

vanCompute
sumber
1
Terima kasih atas komentar dan koreksi. Saya telah memperbarui pertanyaan saya dengan koreksi. Saya percaya itu benar sekarang.
boyfarrell
1

kamu0 dapat dihilangkan.

Mundur dan pikirkan masalahnya sebentar. Menentukan persamaan Laplace secara fundamental menyatakan bahwa setiap titik adalah rata-rata tetangganya. Ini umumnya divisualisasikan sebagai lembaran karet, dan membantu saya untuk memikirkan hal-hal ini. (Poisson adalah serupa dengan poin melar lebih atau kurang)

Ketika Anda menentukan nilai permukaan solusi di tepi terluar Anda "menyematkan" lembar di ruang di titik-titik tersebut. Saat Anda menentukan lembar dengan turunannya di tepinya, ada sejumlah solusi yang memenuhi persamaan yang menerjemahkan lembar dalam ruang sambil mempertahankan bentuk aktual yang sama dan dengan demikian turunannya.

kamu0=0

meawoppl
sumber
1
Jadi umumnya persamaan Poisson diselesaikan dengan setidaknya satu syarat batas Dirichlet, sehingga solusi unik dapat ditemukan? Saya kira masuk akal bahwa kondisi batas Neumann hanya masuk akal ketika sumber dan tenggelam dimasukkan, jika tidak ada sejumlah solusi yang tak terbatas. Namun, jika saya mengambil persamaan difusi sebagai gantinya, kadang-kadang kondisi batas Neumann diperlukan untuk fisika yang benar (misalnya tidak ada fluks kuantitas melalui batas ketika du / dx = 0). Inilah yang saya benar-benar tertarik. Apakah metode di atas pendekatan yang benar untuk menerapkan Neumann BCs?
boyfarrell
1
Anda tidak dapat menerapkan Neumann BCs di semua sisi kertas Anda. Jika ya, Anda tidak akan memiliki solusi yang unik. Itu harus disematkan setidaknya di satu sisi.
vanCompute
@meawoppl: Bagaimana cara menentukan titik tetap sambil juga menyelesaikan matriks langsung?
jvriesem
Biasanya hanya menetapkan titik ke konstanta, dengan cara menetapkan hanya satu istilah dalam satu baris ke 1, nol sisanya, dan nilai pada RHS yang sesuai dengan bidang solusi yang ingin Anda lihat.
meawoppl