Metodo elementi finiti diffusione-reazione (reazione dominante)

akecwo
Buongiorno a tutti!
Vorrei scrivere un programma in matlab per il seguente problema (reazione dominante $\sigma >> 1$):

$ { ( -u''(x)+\sigmau(x) =0 \quad\quad 0
In particolare devo fare un'approssimazione ad elementi finiti standard, con il metodo di Galerkin.
Ovvero, devo trovare $u_h \in V_h$ (dipendende dal passo della mesh $h$)
tale che la formulazione debole $a(u_h,v_h)=F(v_h)$ $ (1)$
valga per ogni $v_h \in V_h$ (spazi localmente di polinomi).

Ho letto che se:
$K_(ij)= \int _(0)^(1) varphi'_j varphi'_i dx $,
$M_(ij)= \int _(0)^(1) varphi_j varphi_i dx $,
$f_i=F(varphi_i)$
$i,j=1,2,..N$

allora $(1)$ è equivalente alla forma algebrica
$(K+ \sigma M)U=F$. $(2)$

Per cui risolvere il sistema lineare in funzione di $U$ mi darebbe i coefficienti della mia approssimante.
Però osservo che qualcosa di concettuale mi manca:
ho trovato questo approccio fatto anche nel mio caso quando la funzione $f(x)$(forzante) non c'è, perché ho un'omogenea.
Non dovrei avere a destra di $(2)$ il vettore nullo?

Risposte
Raptorista1
Stai dimenticando di imporre le condizioni al bordo.

akecwo
Si è vero così non ne sto tenendo conto delle informazioni al bordo.
Ma per inserirle, devo per esempio risolvere il sistema lineare, togliendo la prima e l'ultima riga/colonna e inserire i dati al bordo alla soluzione? Nel caso specifico $u_h=[0;u_h;1];$
Altrimenti da qualche parte ho sentito parlare di una cosiddetta funzione di rilevamento $G$, esempio $G(x)=x$ e risolvere con $ hat(u)(x) = u(x)- G(x) $, in modo da avere $hat(u)$ nulla al bordo. Non mi è molto chiaro..

Raptorista1
No, devi modificare il sistema lineare, prima di risolverlo, in modo che la soluzione rispetti le condizioni al bordo.

Il rilevamento è un altro modo: se fai quella sostituzione nell'equazione ti salta fuori un termine noto aggiuntivo in cambio delle condizioni al bordo omogenee, ma per problemi concreti non ne vale la pena, meglio modificare il sistema lineare.
Il rilevamento è essenziale nell'analisi dell'equazione, perché ti permette di usare il teorema di Lax-Milgram.

akecwo
forse l'ultima equazione del sistema deve essere $1$
$(int_(x_N)^(x_(N+1)) (\varphi'_(N+1))^2 + \sigma int_(x_N)^(x_(N+1)) (\varphi_(N+1))^2)u_(N+1)=1 $
Avendo così il vettore $F$ tutti gli elementi nulli, tranne l'ultimo, uguale ad $1$.
Sbaglio?

Raptorista1
Sbagli: l'ultima equazione del sistema dev'essere \(u_{N+1} = 1\), che è la condizione al bordo, così il vettore F è, sì, quello che hai scritto tu, ma anche la corrispondente riga della matrice dev'essere modificata.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.