Scrittura della matrice della differenza finita dell'equazione di Poisson con condizioni al contorno di Neumann


15

Sono interessato a risolvere l'equazione di Poisson usando l'approccio delle differenze finite. Vorrei capire meglio come scrivere l'equazione della matrice con le condizioni al contorno di Neumann. Qualcuno potrebbe rivedere quanto segue, è corretto?

La matrice delle differenze finite

L'equazione di Poisson,

2u(x)x2=d(x)

può essere approssimato da un'equazione di matrice a differenza finita,

1(ΔX)2Mu^=d^

dove M è una matrice n×n e u^ e d^ sono vettori 1×n (colonna),

Matrice delle differenze finite dell'equazione di Poisson

Aggiunta di una condizione al contorno di Neumann

Una condizione al contorno di Neumann impone un flusso noto al confine (qui lo applichiamo sul lato sinistro dove il confine è a ),X=0

u(X=0)X=σ
scrivendo questa condizione al contorno come una differenza finita centrata,

Errore nell'equazione. NB. Inizialmente ho fatto un errore qui, segno errore e non ho diviso per 2. Il seguente è stato corretto.

u2-u02ΔX=σ

Nota l'introduzione di un punto mesh al di fuori del dominio originale ( ). Questo termine può essere eliminato introducendo la seconda equazione, u 0 - 2 u 1 + u 2u0

u0-2u1+u2(ΔX)2=d1

L'equazione non ha più informazioni a causa dell'introduzione del nuovo punto mesh. Ci permette di scrivere la doppia derivata di come limite in termini di usando una differenza finita centrata.u 0u1u0

La parte di cui non sono sicuro

La combinazione di queste due equazioni può essere eliminata. Per mostrare il funzionamento, prima riorganizziamo l'ignoto,u0

u0=-2σΔX+u2u0=(ΔX)2d1+2u1-u2

Successivamente vengono impostati uguali e riorganizzati nel modulo,

u2-u1(ΔX)2=d12+σΔX

Ho scelto questa forma perché è la stessa forma dell'equazione matrice sopra. Si noti che i termini sono divisi per sia qui che nell'equazione originale. È questo l'approccio corretto?( Δ x ) 2u(ΔX)2

Infine, usando questa equazione come prima riga della matrice,

Equazione di Poisson con una condizione al contorno di Neumann sul lato sinistro (corretta)

Alcuni pensieri finali,

  1. Questa matrice finale è corretta?
  2. Avrei potuto usare un approccio migliore?
  3. Esiste un modo standard di scrivere questa matrice?

2
Vi sono due errori nel calcolo: una differenza finita centrata deve essere divisa per . Secondo, anche è sbagliato, perché il segno meno deve essere un valore positivo. u 0 = - σ Δ x + u 22ΔXu0=-σΔX+u2
vanCompute il

3
Questo è abbastanza ben risolto nel testo della differenza finita di LeVeque , capitolo 2.
David Ketcheson,

1
Questi problemi sono anche ben spiegati in scientificpython.net/1/post/2013/01/…
Evgeni Sergeev

Risposte:



1

Ottima osservazione per vedere che può essere eliminato. u0

Fai un passo indietro e pensa al problema per un secondo. Specificando un'equazione di Laplace si afferma fondamentalmente che ogni punto è la media dei suoi vicini. Questo è comunemente visualizzato come un foglio di gomma e mi aiuta a pensare a queste cose. (Poisson è simile con punti più o meno elastici)

Quando si specifica il valore della superficie della soluzione ai bordi più esterni, si "blocca" il foglio nello spazio in quei punti. Quando si specifica il foglio in base alla sua derivata ai bordi, esiste un numero qualsiasi di soluzioni che soddisfano l'equazione che traduce il foglio nello spazio mantenendo la stessa forma effettiva e quindi le derivate.

In senso pratico, tuttavia, ciò può essere problematico. Le matrici sono mal condizionate e i risolutori agiscono in modo imprevedibile. La cosa più comune che ho visto è semplicemente "bloccare" la soluzione su un punto fisso specificando o su una costante rilevante per lo spazio della soluzione. u0=0


1
Quindi in genere l'equazione di Poisson è risolta con almeno una condizione al contorno di Dirichlet, in modo da poter trovare una soluzione unica? Immagino abbia senso che le condizioni al contorno di Neumann abbiano senso solo quando sono inclusi sorgente e pozzi, altrimenti ci sono un numero infinito di soluzioni. Tuttavia, se prendo invece l'equazione di diffusione, a volte sono necessarie le condizioni al contorno di Neumann per la fisica corretta (ad es. Nessun flusso della quantità attraverso un limite quando du / dx = 0). Questo è ciò che mi interessa davvero. Il metodo sopra è l'approccio corretto per applicare i BC Neumann?
boyfarrell,

1
Non puoi applicare Neumann BC su tutti i lati del tuo foglio. Se lo fai, non avrai una soluzione unica. Deve essere bloccato almeno da un lato.
vanCompute il

@meawoppl: Come si specifica il punto fisso mentre si risolve anche una matrice diretta?
jvriesem,

In genere, è sufficiente assegnare un punto a una costante, impostando solo un termine di seguito su 1, lo zero rimanente e un valore sull'RHS che corrisponda al piano della soluzione che si desidera vedere.
meawoppl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.