Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda astrolabio95 » 22/06/2019, 08:43

Ti ringrazio, l'importante è sapere di aver ben appreso come si implementa la matrice!
astrolabio95
Junior Member
Junior Member
 
Messaggio: 115 di 296
Iscritto il: 27/11/2015, 19:39

Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda Raptorista » 25/06/2019, 11:15

Un commento: per metodi espliciti in tempo allocare una matrice è uno spreco di tempo e memoria, faresti meglio a fare un ciclo su tutti gli elementi del vettore e applicare direttamente la formula in questione, cioè \(u_i^{n+1} = u_i^n + dt\cdot(\dots\).
I nodi di bordo vanno trattati a parte, chiaramente, ma non è difficile.
Un matematico ha scritto:... come mia nonna che vuole da anni il sistema per vincere al lotto e crede che io, in quanto matematico, sia fallito perché non glielo trovo


Immagine
Avatar utente
Raptorista
Moderatore
Moderatore
 
Messaggio: 5263 di 9616
Iscritto il: 28/09/2008, 19:58

Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda anonymous_40e072 » 25/06/2019, 14:11

Da quel che ho letto ci sarebbero una barcata di commenti da fare.

Cominciamo con qualche piccolo accorgimento sul problema: è chiaro che se discretizzi con passo h in N intervalli il tuo dominio, avrai, una matrice di N+1xN+1 nodi, dove "la cornice esterna" di 2 righe e 2 colonne saranno i nodi di boundary, cioè dove sono definite le equazioni di condizioni al contorno; mentre nella matrice interna N-1xN-1 le equazioni alle differenze finite che hai ottenuto a partire dalla PDE.

Per quanto riguarda "dove saperne di più". Mi sembra di capire che il tuo sia il primo corso di calcolo scientifico. Mai capito il senso di proporre questi temi senza partire dalle basi. Mi viene da segnalarti due testi: "Iterative Methods for Sparse Linear Systems" di Y. Saad, è opne source e lo trovi facilmente digitando il titolo dle libro su Google. Il capitolo 2 ti spiega passo dopo passo come costruire diverse stencils, le differenze finite, come costruirti la matrice dei coefficienti del tuo dominio discretizzato e un sacco di altre cose. E' un po' avanzato in certi passaggi, ma è senz'altro una fonte di rilievo. "Calcolo Scientifico" di Quarteroni, Saleri e Gervasio è un libro di introduzione al Calcolo Scientifico; hai due capitoli dedicati alle Equazioni Differenziali (uno alle ODE e uno alle PDE), esempi ed esercizi, codici in Matlab riportati in modo completo.
anonymous_40e072
Average Member
Average Member
 
Messaggio: 409 di 920
Iscritto il: 07/05/2011, 14:22

Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda feddy » 25/06/2019, 14:50

Come motivazione a sostegno dell'ottimo libro citato di @anonymous_40e072 (altrimenti l'OP potrebbe non capire il senso dell'utilizzo di metodi iterativi per sistemi lineari sparsi), pensa a questo esempio:

Hai l'equazione di Poisson su un griglia bidimensionale (con condizioni omogenee) con 40 nodi su ogni lato, e la matrice di stiffness ( o rigidezza) del problema (di taglia 1600) ha circa 7840 elementi non nulli. Vista la sua simmetria, uno può pensare ad una fattorizzazione di Cholesky di $A$ in $A=R^{T}R$ per la risoluzione del sistema lineare corrispondente. Ma questo produce la matrice $R$ con 68135 elementi diversi da zero, e questo non si è approfittato della "sparsità" della matrice $A$. Da qui la necessità dell'utilizzo di metodi iterativi
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2529 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda anonymous_40e072 » 27/06/2019, 08:19

feddy ha scritto:Come motivazione a sostegno dell'ottimo libro citato di @anonymous_40e072 (altrimenti l'OP potrebbe non capire il senso dell'utilizzo di metodi iterativi per sistemi lineari sparsi), pensa a questo esempio:

Hai l'equazione di Poisson su un griglia bidimensionale (con condizioni omogenee) con 40 nodi su ogni lato, e la matrice di stiffness ( o rigidezza) del problema (di taglia 1600) ha circa 7840 elementi non nulli. Vista la sua simmetria, uno può pensare ad una fattorizzazione di Cholesky di $A$ in $A=R^{T}R$ per la risoluzione del sistema lineare corrispondente. Ma questo produce la matrice $R$ con 68135 elementi diversi da zero, e questo non si è approfittato della "sparsità" della matrice $A$. Da qui la necessità dell'utilizzo di metodi iterativi


Sì, confermo. Tendenzialmente i motivi a supporto dei metodi iterativi sono due: quello che hai spiegato tu, ossia quello che in gergo è chiamato fill-in, e la scalabilità dei metodi iterativi. In altri termini, la complessità computazionale dei metodi diretti (i.e. basati su fattorizzazioni varie, come di Cholesky o LU) aumenta più velocemente rispetto ai metodi iterativi. Quando i problemi si fanno grossi e tosti (e quasi sempre, anche sparsi) i metodi iterativi diventano l'unica scelta possibile.
Tutto senz'altro molto interessante, ma probabilmente un "po' troppo" per l'OP :D
anonymous_40e072
Average Member
Average Member
 
Messaggio: 410 di 920
Iscritto il: 07/05/2011, 14:22

Re: Implementazione delle condizioni al contorno per un'equazione non stazionaria

Messaggioda astrolabio95 » 27/06/2019, 08:47

Wow, vi ringrazio per i preziosi commenti e suggerimenti!

Purtroppo i metodi iterativi non sono presenti nel programma stilato dal prof, in effetti ho già letto di queste metodologie proprio sul Quaternoni che ho usato come "base", ma che si discosta molto dall'approccio del mio corso.

E' una tematica molto interessante quella del calcolo scientifico, sicuramente la approfondirò in un corso di laurea magistrale!

Grazie ancora a tutti
astrolabio95
Junior Member
Junior Member
 
Messaggio: 116 di 296
Iscritto il: 27/11/2015, 19:39

Precedente

Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite