résoudre un problème de méthode numérique sur Matlabmatlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

résoudre un problème de méthode numérique sur Matlabmatlab



  1. #1
    achraff

    Exclamation résoudre un problème de méthode numérique sur Matlabmatlab


    ------

    bonjour, j'ai entrain de résoudre un problème de méthode numérique sur Matlab(la place) mais j'ai trouvé un problème dans les condition initial. comment changer de T(x,0)=0, T(0,y)=0,T(x,l)=0,T(L,y)=100'e n T(x,0)=0, T(0,y)=100y,T(x,l)=200+(100*x^ 2/3),T(L,y)=250y'). merci

    Code:
    function[k,T]=Laplace1(N,M)
    disp('T(x,0)=0, T(0,y)=0,T(x,l)=0,T(L,y)=100')
    L=20; l=10; % les dimensions du rectangles
    N = 30; M = 20;
    h1=L/(N+1);h2=l/(M+1); % h1 et h2 pas de la discrétisation
    b=1/h1^2; d=1/h2^2; a=2*(b+d);
    % Déclarations des matrices et des vecteurs
    C=zeros(N*M,N*M);A=zeros(N,N); D=zeros(N,N);B1=zeros(N,1);B=zeros(N*M,1);
    T=zeros(N*M,1);T1=zeros(N*M,1);X=zeros(N+2,1);Y=zeros(M+2,1);
    % calcul des matrices A, D, C
    for i=1:N
        A(i,i)=a;
        D(i,i)=-d;
    end
    for i=1:N-1
        A(i,i+1)=-b; A(i+1,i)=-b;
    end
    for j=1:M
        C(N*(j-1)+1:N*j,N*(j-1)+1:N*j)=A;
    end
    for j=1:M-1
        C(N*(j-1)+1:N*j, N*j+1:N*(j+1))=D;
        C(N*j+1:N*(j+1), N*(j-1)+1:N*j)=D;
    end
    % calcul du vecteur de droite B
    B1(N,1)=100;
    for j=1:M
        B(N*(j-1)+1:N*j,1)=B1;
    end
    C=h1^2*C;
    kmax=1000;k=0; % kmax nombre d’itération maximale
    % Résolution du système linéaire CT=B par la méthode de Jacobi
    while (k<kmax)
        for i=1:N*M
            S1=0; S2=0;
            for j=1:i-1
                S1=S1+C(i,j)*T1(j);
            end
            for j=i+1:N*M
                S2=S2+C(i,j)*T(j);
            end
            T(i)=1/C(i,i)*(B(i)-S1-S2);
        end
        %TEST DE CONVERGENCE
        erreur=abs(T-T1);
        if erreur<1e-06
            break
        else
            k=k+1;
            T1=T;
        end
    end
    % Surface de la solution numérique T(x,y)
    [X,Y] = meshgrid(0:h1:L, 0:h2:l);
    T=reshape(T,N,M);
    T=[zeros(N,1),T,zeros(N,1)];
    T=[zeros(M+2,1)';T;100*ones(M+2,1)'];
    T=T';
    figure(1), surfl(X,Y,T)
    xlabel('axes des X'); ylabel('axes des Y'); zlabel('axes des z')
    title('Surface de la solution numérique T(x,y)')'

    -----
    Dernière modification par Antoane ; 16/02/2021 à 21h00. Motif: restauration indentation

  2. #2
    umfred

    Re : résoudre un problème de méthode numérique sur Matlabmatlab

    ça doit se passer au niveau des dernières lignes
    Code:
    T=reshape(T,N,M);
    T=[zeros(N,1),T,zeros(N,1)];
    T=[zeros(M+2,1)';T;100*ones(M+2,1)'];
    même si ça me semble bizarre que ce soit fait à la fin du programme, c'est à cet endroit que l'on retrouve tes expressions des conditions initiales

  3. #3
    achraff

    Re : résoudre un problème de méthode numérique sur Matlabmatlab

    merci pour votre temps , oui j'ai rencontrer des difficulté a changer ces conditions , si vous avez une suggestion je serait content merci .

  4. #4
    Paraboloide_Hyperbolique

    Re : résoudre un problème de méthode numérique sur Matlabmatlab

    Bonjour,

    Ce code mériterait d'être "aéré" (c-à-d quelques retours à la ligne ne feraient pas de mal), mais soit.

    Sinon, ce code me fait penser à une fonction qui a été "bidouillée". En effet: la ligne 1 déclare une fonction (à laquelle il manque la borne de fin*), tandis que les dernières sont typiques d'un script d'affichage de résultats (qui n'a rien à faire dans une fonction donc).

    *Je parie que vous avez supprimé le mot-clef "end" à la fin de la fonction pour pouvoir exécuter le code que vous avez ajouté vous-même, petit coquin.

    Donc, tel quel, la fonction s’exécute depuis le début. En particulier, elle utilise les conditions frontières définies à la ligne 9 du code:

    Code:
    T=zeros(N*M,1);T1=zeros(N*M,1);X=zeros(N+2,1);Y=zeros(M+2,1);
    Tandis que vos conditions frontières, ajoutées plus tard, n'auront aucun effet, car exécutées après les calculs résolvant le problème.


    Ce que je recommande donc:

    1. Repartir de la fonction "propre" (sans les bidouilles ajoutées).
    2. Ecrire le script permettant l'affichage de la solution dans un fichier à part qui fera appel à la fonction "Laplace1".
    3. Modifier la ligne 9 du code de la fonction "Laplace1" pour mettre à jour les conditions frontière (idéalement, il faudrait les faire passer en paramètre).

  5. A voir en vidéo sur Futura

Discussions similaires

  1. aider mois svp !!! methode numérique pour résoudre des equations diff a deux variables
    Par invited9bda057 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 21/05/2019, 02h59
  2. problème physique à résoudre par Calcul numérique.
    Par invite06c66a72 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 13/03/2014, 20h23
  3. Qu'elle est la méthode, pour résoudre ce problème?
    Par raster63 dans le forum Mathématiques du collège et du lycée
    Réponses: 9
    Dernier message: 14/10/2013, 22h43
  4. méthode numérique pour résoudre f(i+1) avec Newton
    Par invite6e4fd45c dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 12/05/2011, 08h32
  5. Méthode pour résoudre une équation .
    Par invite38e68b65 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 28/11/2005, 21h43