1 pièce(s) jointe(s)
Vérifier graphiquement un ordre de consistance
Bonjour,
Je suis étudiant en Math Info et je bloque pour le tracé de l'erreur en échelle log log dans mon TP. Je n'utilise pas Matlab mais Julia 0.4.6 . Je ne savais pas où poster ce message et j'ai donc choisi Matlab car ça ne me dérangeais pas d'avoir de l'aide sur ce logiciel vu que le langage est assez proche de Julia. Entrons maintenant dans le sujet:
Mon TP porte sur l'étude de l'équation de transport par le schéma de Lax Wendroff. Je ne vais pas rentrer dans les détails car ça serait lourd dans un forum dédié à l'informatique.
On considère ici une dimension en temps et en espace. J'ai prouvé que ce schéma à pour ordre de consistance 2. J'aimerai vérifier cela en échelle log log.
Dans mon code, M correspond au pas en espace et N au pas en temps. Je fixe le rapport N/M=1/3 pour que le schéma reste bien stable. La fonction Lax renvoie une approximation par le schéma et la fonction Exact la solution exacte de l'équation de transport.
Code:
1 2 3 4 5 6 7 8 9 10
|
en=rand(6)
h=rand(6)
for k=2:7
M=2^(-k)
N=M/3
h[k-1]=2*pi/(2*pi/M+1)
en[k-1]=maximum(abs(Lax(M,N)-Exact(M,N)))
end
loglog(en,h) |
Voici ce que j'obtiens :
Pièce jointe 223312
Cependant je suis un peu perdu car ici il y a deux dimensions et donc je ne sais pas comment interpréter ma courbe.
Merci d'avance pour tout aide et n'hésiter pas si vous avez des questions.
1 pièce(s) jointe(s)
Vérifier graphiquement un ordre de consistance
Bonjour, :D
Il est difficile de répondre avec précision, faute d'indications concernant les coordonnées utilisées.
Citation:
Envoyé par
eddy01
... On considère ici une dimension en temps et en espace. J'ai prouvé que ce schéma à pour ordre de consistance 2. J'aimerai vérifier cela en échelle log log.
Dans mon code, M correspond au pas en espace et N au pas en temps. Je fixe le rapport N/M=1/3 pour que le schéma reste bien stable. La fonction Lax renvoie une approximation par le schéma et la fonction Exact la solution exacte de l'équation de transport.
Code:
1 2 3 4 5 6 7 8 9 10
|
en=rand(6)
h=rand(6)
for k=2:7
M=2^(-k)
N=M/3
h[k-1]=2*pi/(2*pi/M+1)
en[k-1]=maximum(abs(Lax(M,N)-Exact(M,N)))
end
loglog(en,h) |
Cependant je suis un peu perdu car ici il y a deux dimensions et donc je ne sais pas comment interpréter ma courbe.
Tu dois apparemment tester une technique de résolution approchée d'une équation différentielle, utilisant la méthode des différences finies, en comparant les grandeurs exactes et calculées (x) et (y); celles-ci devant à la limite se confondre (x = y), le graphe doit être proche de la 1re bissectrice du repère ( log(x) = log(y) ) - ce que l'on constate effectivement.
Pièce jointe 223372
Le premier terme varie de 6E-3 à 2E-1, soit relativement dans un rapport de 1 à 33 ~ 25 ~ 101.5, donc sur un domaine suffisamment large pour conduire à une vérification satisfaisante.
De plus, le graphe se rapproche sur sa partie gauche de la droite idéale, ce qui pourrait correspondre à l'amélioration du procédé d'approximation pour des incréments (M, N) de plus en plus petits.
Cette proximité ne doit cependant pas faire illusion, du fait de l'intervention de coordonnées logarithmiques: un écart absolu de 0.1 correspond ici à un écart relatif égal à 100.1 - 1 = 26% !
À ce stade, il faut reprendre les expressions de (x) et (y) pour aller plus loin - probablement un traitement statistique impliquant le graphe approché log(y) = F[log(x)] et la droite théorique.