Bonjour à tous,

J'essaye actuellement de programmer les éléments finis pour une équation d'avection diffusion réaction. Le code semble en place et donne de bon résultats. (Je n'utilise pas pdetool car j'ai une équation un peu particulière)

Néanmoins, lorsque je travaille sur des maillages très fins (> 10 000 Noeuds), je me heurte à un problème de mémoire (out of memory) lorsque j'utilise la fonction fsolve(). En regardant l'aide, il est fortement suggéré dans ce cas de travailler avec les système de matrices stockées sous forme sparse (matrice creuse dont Matlab enlève les 0) et de fournir le modèle du Jacobien sous forme sparse.

C'est là ou je ne sais pas comment faire.
Pour vous donner un exemple de ma fonction :

H = @(x)K*x -H où K est une matrice n*n de grande taille (10 000*10 000 par ex) et H un vecteur de taille n. Le but est de trouver x(x1....xn) tq, H=0

Comment obtenir le modèle du jacobien et le mettre en forme sparse ?

Mon système est ici linéaire mais j'anticipe pour la suite où mon système ne le sera pas.

Je ne sais pas si ma demande est claire mais je peux vous fournir tout renseignement susceptible de m'aider.

Merci à vous,

Lorbinou.

MAJ : J'ai réussi à résoudre mon problème. Je mets la réponse si ça peut servir. Il faut trouver un moyen d'exprimer le jacobien de sa fonction, ce qui était facile dans mon cas après réflexion. Puis il faut alors faire un modèle de jacobien, à savoir une matrice contenant des 1 pour les dérivées partielles non nulles et des 0 lorsque les dérivées partielles sont nulles (pour tout xi). Cette matrice est une matrice elle même stockée sous forme sparse. Puis dans les options de fsolve, rentrer la matrice modèle.