code Matlab pour une EDP
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

code Matlab pour une EDP



  1. #1
    invite956dbe1a

    code Matlab pour une EDP


    ------

    bonsoir,
    j'ai un problème de trouver la solution numérique de l'EDP suivante:
    -.d²u(x)/dx²+0.25.u(x)=f(x) sur [0.3]
    avec les conditions :
    u(0)=0.5, du(3)/dx=0.5*ln(4)
    j'ai considérer u(x) =u0(x)+0.5

    tout en se basant sur la méthode de ritz ,j'ai aboutit :
    la formulation faible a(u0,v)=l(v) qlq soit v de V={H1(0.L),v(0)=0}
    en prenant ensuite les fonctions de base d'approximation phi=xî i=1,2,3...20
    et j'ai choisi f(x)=x²
    j'ai arriver à ce code
    x=0:3/20:3;
    d=0.5*log(4)
    A=zeros(21,21);
    for i=1:21
    for j=1:21
    A(i,j)=i*j*L^(i+j-1)/(i+j-1) + 0.25*L^(i+j+1)/(i+j+1);
    end
    end
    b=zeros(21,1);
    for j=1:21
    b(j)=L^(j+3)/(j+3)-0.25*0.5*(L^(j+1)/(j+1))-d*L^j;
    end
    Zc=A\b;
    Ua=zeros(size(x));
    for i=1:n+1
    Ua=Ua+Zc(i)*x.^i;
    end
    Ue=((d+0.25)*exp(0.5*x)+(d+0.2 5-0.5)*exp(-0.5*x))+(2/0.25^2)+x.^2/0.25;
    figure(1)
    plot(x,Ue,'-.',x,Ua,'-*')


    mais dans le plot ila ya une grande différence entre la solution exacte et celle approchée
    merci de m'aider

    -----

  2. #2
    VirGuke

    Re : code Matlab pour une EDP

    j'ai pas utilisé la MEF mais celle e ritz,en faite c-à-d que l'espace d’approximation est engendré par des fonctions définies sur toute [0,3] ;phi(x)=xî, ainsi la solution approchée sera ua(x)=sigma(lambdai*xî) et v(x)=x^j ; j=1.2...n+1 on les insèrent dans la formulation faible.
    finalement on aura Au=b avec A n'est plus creuse du fait que les intégrales sont définies sur [0,3] (jusqu'au là j'avais pas de problèmes)
    après il ne reste qu'implanté l'algorithme sous Matlab,
    mais les résultats étaient imprévisibles ,
    donc beaucoup de questions se provoquent : le problème est-il bien posé? une lacune dans la convergence ?.....?
    alors je serai trés reconnaissant de votre aide
    Est-ce que tu relis tes messages au moins? xî ça se lit ou n'importe quoi d'autre mais pas x^i, surtout si tu le mets plusieurs fois dans ton message.

    Le problème est bien posé, tu fais juste une projection de ta solution sur l'espace des polynômes de degré 21. Le mot convergence n'a rien à faire ici, pas de méthode itérative...

    - Es tu sûr de ta solution analytique ?
    Déjà il y a une faute de frappe ici :
    Ue=((d+0.25)*exp(0.5*x)+(d+0.2 5-0.5)*exp(-0.5*x))+(2/0.25^2)+x.^2/0.25;
    que j'ai traduit par :
    Ue=((d+0.25)*exp(0.5*x)+(d+0.25-0.5)*exp(-0.5*x))+(2/0.25^2)+x.^2/0.25;
    J'ai la flemme de vérifier ta solution mais elle ne vérifie pas ta condition limite en 0.

    - Tu devrais normer tes fonctions, numériquement matlab aime pas trop calculer 3^20 + 1. Ta matrice est mal conditionnée même si l'inversion a l'air de pas trop mal se passer.

    - Si ton choix d'une matrice de taille 21 était lié au nombre de points entre 0 et 3, d'une ce n'est pas nécessaire avec la méthode de Ritz, de deux si ça avait été important ça aurai été une erreur, ton point en 0 n'est pas un degré de liberté, tes fonctions de Ritz y sont toutes nulles.

    - Tu oublis d'ajouter 0.5 à ta solution numérique pour retrouver u.

    Pour résumer, ta formulation faible est bonne, ton problème est bien exprimé, Matlab s'en sort quand même pas trop mal sur l'inversion.
    A mon avis, tu devrais te limiter à 10 fonctions test, c'est largement suffisant pour approcher des exponentielles sur [0,3] et ça t'évitera les problèmes numériques.
    Ton problème vient de ta solution analytique.

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  2. code Matlab pour une EDP
    Par invite956dbe1a dans le forum Physique
    Réponses: 3
    Dernier message: 17/05/2014, 11h50
  3. problème pour traduire un code Matlab en Mathematica
    Par invitea41a00b4 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 30/10/2011, 15h28
  4. code matlab
    Par invite407a0da2 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 29/11/2010, 10h34
  5. est ce du code matlab?
    Par invitec35bc9ea dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/11/2008, 10h01