Faire avec freefem les fichiers "circle.msh", "one.dta", "zero.dta" contenant la triangulation d'un cercle, la fonction valant 1 sur tous les sommets et la fonction valant zero sur tous les sommets. Exécuter le programme et visualiser la solution avec freefem. (Eventuelement rajouter le lien avec rgraph.h et faire une fonction P1::show() qui visualise le résultat "online").
Comparer avec la solution analytique et faire une fonction qui calcule l'erreur L2 et l'erreur H1. Faire un tableau des erreurs obtenues pour 3 triangulations ayant chacune 4 fois plus de points que la précedente. Rajouter les conditions de Neuman aux bords (Voir remarque ci-dessous).
Si on a des conditions de Neuman sur une partie du bord:
il suffit de rajouter une integrale de bord dans la fonctionnelle à minimiser et une autre intégrale de bord dans le calcul de la dérivée de la fonctionnelle. C'est à dire remplacer
ou r est prolongée par zero sur le reste du bord.
Mais le problème est alors de reconnaitre informatiquement le bord Dirichlet du bord Neuman. Une solution consiste a utiliser une fonction P1 sol0 contenant les conditions de Dirichlet avec la définition suivante:
Si sol0[i]=0 alors i n'est pas un point de Dirichlet. Si sol0[i]!=0 alors i est un point de Dirichlet.
Dans le cas d'une condition de Dirichlet nulle il faudra remplacer sol[i]=0 par sol[i]=eps en ce point, eps étant un tout petit nombre.
En plus des conditions de Neumann faire les modifications nécessaire pour pouvoir résoudre le problème
où sont des constantes positives.
Comme dans l'exercice ci-dessus il faudra modifier la fonctionelle et sa dérivée en conséquence en rajoutant le xcoefficient nu et les intégrales