tpe anal num

Upload: mohamadou-ndjidda

Post on 07-Jul-2018

233 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/19/2019 Tpe Anal Num

    1/30

     

    UNIVERSITE DEDOUALA

    FACULTE DE GENIEINDUSTRIEL

    www.fgi-ud.com 

    U E : ANALYSE NUMÉRIQUE

    Licence III Semestre 5

    Travail Personnelle de l’Étudiant I

    Membre du Groupe 17

    om et prénom matricule

    TAPUMEU SIMO CYRILLE LANDRY (chef)  1 G 746NGONDI KOME ÉLISÉE CONSTANT

      1 G 688

    MOHAMADOU NDJIDDA 1 G 66

    REPUBLIQUE DU CAMEROUN

    Paix  – Travail  – Patrie

    MINISTERE E L’ENSEIGNEMENT 

    SUPERIEUR

    REPUBLIC OF CAMEROON

    Peace  – Work  – Fatherland

    MINISTRY OF HIGHER

    EDUC TION

    Enseignant :  Mr Gervais DEME IMANO Année académique  : 2012-2013 

  • 8/19/2019 Tpe Anal Num

    2/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    2

    TPE N°1

    I.  Calcul numérique de la limite et du nombre dérivé 

    1.  Calcul de la limite d’une suite numérique (U n  )  définie par :

         Diagramme de flux de la limite d’une suite (U n )

    Programme en langage MATLAB

    a) 

    sous programme de calcul des termes de la suite

    function t=u(n) if n==0 

    t=3; else 

    t=sqrt(u(n-1)+3);

    end 

     Nit←Nit+1 

    Début

    Lire ɛ 

    Lire n, Nitmax

     Nit←1 

    |Un+1−Un|< ɛ 

    l ←Un

    Afficher l Nit>Nitmax

    Afficher (‘pas de convergence’ )

    Fin

     Non

    Oui

    Oui

    n←n+1 

     Non

  • 8/19/2019 Tpe Anal Num

    3/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    3

     b) 

     programme centrale de calcul de la limite de la suite (U n ) 

    fprintf('programme de calcul de la limite de la suite:\n'); e=input('donner la valeur de la precision: '); NITmax=input('donner le nombre d''iteration maximal: ');

    n=1; 

    while(abs(u(n)-u(n-1))>=e && n=NITmax) 

    fprintf('pas de convergence apres %d iterations ',NITmax); else 

    l=u(n); fprintf('la suite converge vers %f à %fprès apres %d iterations\n',l,e,n) 

    end 

    2.  Calcul de la limite de deux suites numériques (U n  ) et (V n ) définies par :

         

     

    Diagramme de flux de la limite de deux suites adjacentes (U n ) et (V n ) 

    Programme en langage MATLAB

     Nit←Nit+1 

    Début

    Lire ɛ 

    Lire n, Nitmax

     Nit←1 

    |Un−Vn|< ɛ 

    l ←Un

    Afficher l Nit>Nitmax

    Afficher (‘pas de convergence’ )

    Fin

     Non

    Oui

    Oui

    n←n+1 

     Non

  • 8/19/2019 Tpe Anal Num

    4/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    4

    a. 

    sous programme de calcul des termes de la suite  pour (U n ) 

    function y=u(n) if n==0 y=1; else 

    y=(u(n-1)+2*v(n-1))/3; end 

      pour (V  n ) 

    function y=v(n) if n==0 

    y=12; else 

    y=(v(n-1)+3*v(n-1))/4; end 

     b. 

     programme centrale de calcul de la limite des suites adjacentes (U n ) et (V n)

    fprintf('programme de calcul de la limite d''une suite adjacente:\n'); e=input('donner la valeur de la precision: '); n=1; while(abs(u(n)-v(n))>=e) 

    n=n+1; end fprintf('la limite apres %d iterations est l=%f à %fprès',n,u(n),e) 

    3.  Calcul des sommes des séries suivantes :

    ∑ ∑

    ∑ ∑

     

     

     

     

     

  • 8/19/2019 Tpe Anal Num

    5/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    5

    Diagramme de flux de la Somme de terme générale la suite (U n )

    Programme en langage MATLAB

    a. 

    sous-programme de calcul des termes de la suite

     

     pour (U 1(n))n 

    function t=u1(n) t=(-1)^n/(2*n+1); 

      pour (U 2(n))n 

    function t=u2(n) 

    t=1/n*n;

      pour (U 3(n))n 

    function t=u3(n) t=((-1)^(n-1))/n^2;

    Debut

    Fin

    Lire ɛ Nitmax 

    n←1 

    s←0 

    n←n+1 

    Convergence

    exact vers l  

    |Un|

  • 8/19/2019 Tpe Anal Num

    6/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    6

      pour (U 4(n))n 

    function t=u4(n) t=1/n^4;

      pour (U 5(n))n 

    function t=u(n) t=(2*n+1)/(n^2*(n+1)^2);

     b. 

     programme centrale de calcul de la limite de la suite (U n ) 

     pour (U 1(n))n 

    fprintf('programme de calcul de la somme d''une serie:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''iteration maximale: '); n=0; s=u1(0); 

    while (n=e) n=n+1; s=s+u1(n) ; 

    end if abs(u1(n))>=e 

    fprintf('pas de convergence apres %d iterations\n',NITmax); else 

    l=abs(s-pi/4); if l>=e 

    fprintf('la somme de la serie est s=%f à %f pres. De plus abs(s-

    pi/4)=%f>e',s,e,l) else 

    fprintf('la somme de la serie est s=%f et abs(s-pi/4)=%fe',s,e,l) else 

    fprintf('la somme de la serie est s=%f et abs(s-pi^2/6)=%f

  • 8/19/2019 Tpe Anal Num

    7/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    7

    end 

     pour (U 3(n))n 

    fprintf('programme de calcul de la somme d''une serie:\n'); 

    e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''iteration maximale: '); n=1; s=u3(1); while (n=e) n=n+1; s=s+u3(n) ; 

    end s=-abs(s); if abs(u3(n))>=e 

    fprintf('pas de convergence apres %d iterations\n',NITmax); else 

    l=abs(s+pi^2/12); 

    if l>=e fprintf('la somme de la serie est s=%f à %f pres.\n',s,e) fprintf('De plus abs(s-(-pi^2/12))=%f>e\n',l) 

    else 

    fprintf('la somme de la serie est s=%f et abs(s-(-pi/12))=%fe\n',l) 

    else 

    fprintf('la somme de la serie est s=%f et abs(s-pi^4/90)=%f

  • 8/19/2019 Tpe Anal Num

    8/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    8

    n=1; s=u5(1); while (n=e) n=n+1; s=s+u5(n) ; 

    end 

    if abs(u5(n))>=e fprintf('pas de convergence apres %d iterations\n',NITmax); else 

    l=abs(s-1); if l>=e 

    fprintf('la somme de la serie est s=%f à %f pres.\n',s,e) fprintf('De plus abs(s-1)=%f>e\n',l) 

    else 

    fprintf('la somme de la serie est s=%f et abs(s-1)=%f

  • 8/19/2019 Tpe Anal Num

    9/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    9

    g=g+p; while g>=x; 

    disp('soit reduire le pas et réessayer,soit il ya pas de limite à

    gauche'); break 

    end 

    else Lg=g; end 

    if abs(Lg-Ld)>e; fprintf('%f est un point de discontinuité',x); 

    else l=(Lg+Ld)/2; fprintf('la limite de cette fonction en x=%f est l=%f',x,l); 

    end 

       pour g(x) functionlimh

    e=input('donner la valeur de la précision e:');p=input('donner la valeur du pas p:');x=input('donner la valeur du point x:');d=input('donner la valeur d''un point à droite de la derniere d:');g=input('donner la valeur d''un point à gauche de x g:');while de;

    d=d-p;while d=x;disp('g doit etre inférieur à x');

    g=input('entrez à nouveau g:');end

    end

    if abs(h(g)-h(g+p))>e;g=g+p;

    while g>=x;disp('soit reduire le pas et réessayer,soit il ya pas de limite à gauche');break

    endelse Lg=g;end

    if abs(Lg-Ld)>e;fprintf('%f est un point de discontinuité',x);else 

    l=(Lg+Ld)/2;fprintf('la limite de cette fonction en x=%f est l=%f',x,l);

    end 

    II. 

    Calcul numérique des intégrales définies par : 

  • 8/19/2019 Tpe Anal Num

    10/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    10

     a.

     

    sous-programme de déclaration des fonctions

      f(x) pour le calcul de I

    function y=f(x)y=(sin(x))/x;

      g(x) pour le calcul de J

    functiont=g(x) t=1/sqrt(1-x*x);

    b.  programme centrale de calcul d’intégrale 

    i.  Méthode de Simpson  calcul de I

    fprintf('\n Programme de de calcul des integrales par la methode de Simpson:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=1:n

    x=a+i*h; s=s+f(x-h)+4*f(x-h/2)+f(x); 

    end s=h*s/6; fprintf('la valeur de l''integrale est I=%f',s) 

      calcul de Jfprintf('\n Programme de de calcul des integrales par la methode de simpson:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=2:n-1

    x=a+i*h; s=s+g(x-h)+4*g(x-h/2)+g(x); 

    end s=h*s/6; fprintf('la valeur de l''integrale dans les conditions choisies est I=%f\n',s) i=input('donner la valeur reel de cette integrale:'); fprintf('l''erreur commise est erreur=%f\n',abs(i-s)); 

    ii.  Méthode des Trapèses  calcul de I

    fprintf('\n Programme de de calcul des integrales par la methode des trapezes:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); 

    n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; 

  • 8/19/2019 Tpe Anal Num

    11/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    11

    s=(f(a)+f(b))/2; x=a; for i=1:n-1

    x=a+i*h; s=s+f(x); 

    end 

    s=h*s; fprintf('la valeur de l''integrale est I=%f',s) 

      calcul de Jfprintf('\n Programme de de calcul des integrales par la methode des trapezes:\n') a=input('donner la borne inferieur de l''intervalle:'); b=input('donner la borne superieur de l''intervalle:'); n=input('donner le nombre de subdivision l''intervalle:'); h=(b-a)/n; s=0; x=a; for i=1:n-1

    x=a+i*h; 

    s=s+g(x); end s=h*s; fprintf('la valeur de l''integrale dans les conditions choisies est I=%f\n',s) i=input('donner la valeur reel de cette integrale:'); fprintf('l''erreur commise est erreur=%f\n',abs(i-s)); 

    i.  la valeur approchée de π 

    Sa valeur approchée est   ∫ √ 

     à un nombre de subdivision important Il est à remarquer que dans le calcul numérique de ces intégrales pour des valeurs importantes du nombrede division, elles se rapprochent de leur valeur exacte analytique. Mais si on entre aussi une valeur trop

    exorbitante, le programme MATLAB mettra beaucoup de temps pour calculer ces intégrales

    III.  Résolution numérique des équations non linéaires

    1. 

    Résolution de l’équation f(x)=0 Par la méthode de Newton et dichotomie 

    a. 

    Déclaration des fonctions

    i. 

      []   Sous-programme de déclaration de la fonction

    function t=f(x)t=log(x)+(1+x*x)/(1-3*x*x);

    ii.  ][ Sous-programme de déclaration de la fonction

    functiont=g(x)t=(2*x+7)*asin(x)-pi;

    iii.   

  • 8/19/2019 Tpe Anal Num

    12/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    12

    Sous-programme de déclaration de la fonction

    function t=h(x)t=x/2+(log(x))/x;

    Diagramme de flux de la Résolution numérique des équations non linéaires f(x)=0

     

    par Dichotomie

    a←c

    Début

    Lire ɛ a b 

    f(a)=0  ?

    f(b)=0  ?

    c←

     

    α←a 

    α←b 

    f(c)=0  ?

    f(a).f(c)

  • 8/19/2019 Tpe Anal Num

    13/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    13

      par Newton 

     b.  Programme principale de Résolution par la méthode dichotomie

      Pour la fonction f(x)fprintf('programme de resolution d''une equation par la methode dichotomie:\n'); e=input('donner la valeur de la precision e: '); a=input('donner la valeur de la borne inferieur de l''intervalle a: '); b=input('donner la valeur de la borne superieur de l''intervalle b: '); if f(a)==0

    fprintf('s=%f est la solution',a); elseif  f(b)==0 fprintf('s=%f est la solution',b); 

    Début

    Lire ɛ, Nitmax, x 

    n←0 

     f(x)=0 ? 

     f ’(x)=0 ? 

    α←x  Afficher α 

    Afficher (‘pas

    de solution’ )

     

       

    α←x 

    Afficher α à ɛ rès n←n+1 

    n≤ Nitmax Afficher (‘pas de

    convergence’ )

        Fin

    oui

    non

    oui

    oui

    non

    non

    non

    oui

  • 8/19/2019 Tpe Anal Num

    14/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    14

    else c=(a+b)/2; 

    if f(c)==0 fprintf('s=%f est la solution',c); elseif f(a)*f(c)=e && f(c)~=0) 

    c=(a+b)/2; if f(c)==0 fprintf('s=%f est la solution',c); elseif f(a)*f(c)

  • 8/19/2019 Tpe Anal Num

    15/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    15

    b=input('donner la valeur de la borne superieur de l''intervalle b: '); if h(a)==0

    fprintf('s=%f est la solution',a); elseif  h(b)==0 fprintf('s=%f est la solution',b); else 

    c=(a+b)/2; if h(c)==0 fprintf('s=%f est la solution',c); elseif h(a)*h(c)=e && h(c)~=0) 

    c=(a+b)/2; if h(c)==0 fprintf('s=%f est la solution',c); elseif h(a)*h(c)=e && n=NITmax) fprintf(' pas de solution apresNITmaxiterations')

    elseifdif(x)==0; fprintf('l''equation n''pas de solution'); elseif f(x)==0

    fprintf('s=%f est la solution',x); else fprintf('la solution est s=%f à %f pres\n',x,e); end end 

    2.  Resolution de l’équation ax3+bx²+cx+d=0 par la methode de Neuton

    pour x0=0  Declaration du polynome

  • 8/19/2019 Tpe Anal Num

    16/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    16

    function t=p(x,a,b,c,d) t=a*x^3+b*x^2+c*x+d;

      Programme principale

    fprintf('programme de resolution d''une equation du type ax^3+bx^2+cx+d=0 par la

    methode de Newton:\n'); a=input('donner le coefficient de x^3, a: '); b=input('donner le coefficient de x^2, b: '); c=input('donner le coefficient de x, c: '); d=input('donner le terme constant, d: '); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: '); x=0; n=1; while(abs(p(x,a,b,c,d)/dif(x,a,b,c,d))>=e && n=NITmax) fprintf(' pas de solution apres NITmax iterations\n')

    elseif dif(x,a,b,c,d)==0; fprintf('l''equation n''pas de solution\n'); elseif p(x,a,b,c,d)==0

    fprintf('s=%f est la solution apres %d iterations\n',x,n); else 

    fprintf('la solution est s=%f à %f pres apres %d iterations\n',x,e,n); end 

    3.  Résolution par la méthode de Newton dans les cas :

    a) 

      pour x0≠0 quelconque 

      Declaration de la fonction

    function t=f(x) t=x^(1\3);

      Programme principale fprintf('programme de resolution d''une equation f(x)=0 par la methode de

    newton:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: '); x=input('donner le point initial x0 : '); while x==0 

    x=input('donner le point initial x0 tel qu''il soit non nul : '); 

    end n=0; if f(x)==0; 

    fprintf('s=%f est la solution\n',x); elseif dif(x)==0; 

    fprintf('l''equation n''pas de solution\n'); else while(abs(f(x)/dif(x))>=e && n=NITmax) 

    fprintf(' pas de solution apres %d iterations\n',NITmax)

    elseif dif(x)==0; fprintf('l''equation n''pas de solution\n'); elseif f(x)==0

  • 8/19/2019 Tpe Anal Num

    17/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    17

    fprintf('s=%f est la solution\n',x); else 

    fprintf('la solution est s=%f à %f pres\n',x,e); end 

    end 

    b   ,x0=0  Declaration de la fonctionfunction t=g(x) t=(x+1)*exp(-x)+1; 

     

    Programme principale

    fprintf('programme de resolution d''une equation f(x)=0 par la methode de

    newton:\n'); e=input('donner la valeur de la precision e: '); NITmax=input('donner le nombre d''itration maximale NITmax: '); 

    x=0; n=1; if g(x)==0; 

    fprintf('s=%f est la solution\n',x); elseif dig(x)==0; 

    fprintf('l''equation n''pas de solution car g''=0 après %d iteration\n',n); else while(abs(g(x)/dig(x))>=e && n=NITmax) 

    fprintf(' pas de solution apres %d iterations\n',NITmax)

    elseif dig(x)==0; fprintf('l''equation n''pas de solution\n'); elseif g(x)==0

    fprintf('s=%f est la solution\n',x); else 

    fprintf('la solution est s=%f à %f pres apres %d iterations\n',x,e,n); end 

    end 

    IV.  Intégration numérique d'une équation différentielle

    a. 

     avec y(0)=1

    Déclaration de la fonctionfunction t=f(x,y)t=x/y+y/2;

    Programme principale pour Eulerfprintf('\nAlgorithme de calcul d''une equation differentielle par la methoded''Euler:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1

    y=y+h*f(x,y);x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)

  • 8/19/2019 Tpe Anal Num

    18/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    18

    end 

    Programme principale pour Runge-Kuttafprintf('\nAlgorithme de calcul d''une equation differentielle par la methode deRunge Kutta:\n');n=input('entrer le nombre de point à calculer: ');

    h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1

    p1=f(x,y);p2=f(x+h/2,y+h*p1/2);p3=f(x+h/2,y+h*p2/2);p4=f(x+h,y+h*p3);y=y+h*(p1+2*p2+2*p3+p4)/6;x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)

    end 

    b.   avec y(0)=1 Déclaration de la fonction

    function t=g(x,y)t=(y-x)/(y+x);

    Programme principale pour Eulerfprintf('\nAlgorithme de calcul d''une equation differentielle par la methoded''Euler:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');

    y=input('entrer la valeur de y0: ');for k=0:n-1

    y=y+h*g(x,y);x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)

    end 

    Programme principale pour Runge-Kuttafprintf('\nAlgorithme de calcul d''une equation differentielle par la methode deRunge Kutta:\n');n=input('entrer le nombre de point à calculer: ');h=input('entrer le pas :');x=input('entrer la valeur de x0: ');y=input('entrer la valeur de y0: ');for k=0:n-1

    p1=g(x,y);p2=g(x+h/2,y+h*p1/2);p3=g(x+h/2,y+h*p2/2);p4=g(x+h,y+h*p3);y=y+h*(p1+2*p2+2*p3+p4)/6;x=x+h;fprintf('x%d=%f et y%d=%f\n',k+1,x,k+1,y)

    end 

    V.  résolution numérique d'un système d’équations non linéaires

    Diagramme des flux d’un système de deux équations non linéaires 

  • 8/19/2019 Tpe Anal Num

    19/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    19

    Ayant un système du genre

    {     et en ayant définie les fonctionsVal (f,x,y)  calculant la valeur de f  pour le couple ( x,y) donné.

    Dérivée (f,1,x,x,y ) calculant la valeur de la dérivée première par rapport à x pour lecouple ( x,y) donné.Det (A,n) calculant le déterminant de la matrice carrée A d’ordre n 

    Début

    Lire (x 0 ,y 0 ), Nitmax

    (x,y )← (x 0 ,y 0 )

    Val (f 1 ,x,y )=0 &Val f 2 ,x,y )=0 ?

    ( x,y) est solutiondu système 

       

    a11← Dérivée (f 1 ,1,x,x,y ) 

    a12← Dérivée (f 1 ,1,y,x,y ) a21← Dérivée (f 2 ,1,x,x,y ) a22← Dérivée (f 2 ,1,y,x,y ) 

    Fin

    n←0 

    Det (A,2)=0 ?

    Afficher(‘Pas desolution’  

    (  ) (  )  b1← − Val ( f 1 ,x,y) 

     b2← − Val ( f 2 ,x,y)

    n←n+1 

    varx← Det (B,2)/ Det (A,2) var ← Det (C,2)/ Det (A,2)

    (x,y )← (x+varx,y+vary )

    oui

    non

    oui

    non

  • 8/19/2019 Tpe Anal Num

    20/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    20

    Programme en langage MATLAB

    a)  {  fprintf('programme de résolution d''un système d''equation non linéaire:\nx^2-3x-

    4=0\nx^3-3x^2-2xy+4x-2=0\n');Nitmax=input('entrer le nombre itérations max: Nitmax= ');fprintf('entrer les coordonnées du point initial\n');x=input('x0= '); y=input('y0= ');n=0;if (f1(x,y)==0 && f2(x,y)==0)

    fprintf('le point de coordonnées x=%f et y=%f est solution du système\n',x,y);else 

    while (f1(x,y)~=0 || f2(x,y)~=0 && nNitmaxfprintf('pas de solution après Nitmax=%d itérations\n',Nitmax);

    else 

    fprintf('pas de solution après %d itérations\n',n);end 

    end 

    b) {  fprintf('programme de résolution d''un système d''equation non linéaire:\nx^2-2x-y+4=0\nx^3-2x^2-x-2xy+2y+2=0\n' );Nitmax=input('entrer le nombre itérations max: Nitmax= ');fprintf('entrer les coordonnées du point initial\n');x=input('x0= '); y=input('y0= ');n=0;if (f1(x,y)==0 && f2(x,y)==0)

    fprintf('le point de coordonnées x=%f et y=%f est solution du système\n',x,y);else 

    while (f1(x,y)~=0 || f2(x,y)~=0 && n

  • 8/19/2019 Tpe Anal Num

    21/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    21

    if (f1(x,y)==0 && f2(x,y)==0)fprintf('le point de coordonnées x=%f et y=%f est solution du système après %d

    itération(s)\n',x,y,n);elseif n>Nitmax

    fprintf('pas de solution après Nitmax=%d itérations\n',Nitmax);else 

    fprintf('pas de solution après %d itérations\n',n);end end 

  • 8/19/2019 Tpe Anal Num

    22/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    22

    TPE N°2 

    I.  Résolution d’un système d’équations linéaire AX=B  pour matrice

    SDP1.

     

    Sous-programme CHOLESKY permettant de déterminer la matrice L  de la factorisation deCHOLESKY de la matrice A 

    Diagramme de flux 

    Début

    Lire n

    Lire A 

    l11←s rt a11  

    i←1 

    i←i +1 

    li1← a11/ l11 

    i = n ?

    ←1 

    ← +1 

    S=0

    k=0

    k←k+1 

    S ← S +l *l

    k= -1 ?

    non

    oui

    21

    non

    oui

  • 8/19/2019 Tpe Anal Num

    23/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    23

    Sous Programmen=input('donner la dimension de la matrice A:'); a=input('entrer la matrice Symétrique Définie Positive A:'); l(1,1)=sqrt(a(1,1)); for i=2:n 

    l(i,1)=a(i,1)/l(1,1); end for j=2:n 

    s=0; for k=1:j-1 

    s=s+l(j,k)*l(j,k); end l(j,j)=sqrt(a(j,j)-s); for i=j+1:n 

    s1=0; 

    non

    2 1

    l ← s rt a -S

    i←  

    i←i+1 

    S←0 

    k←k+1 

    S ← S +l k *l k  

    k= -1 ?

    oui

    li  ←  ai -S /l

    i= n ?non

    i= n ?

    oui

    oui

    Afficher L

    non

    Fin

  • 8/19/2019 Tpe Anal Num

    24/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    24

    for k=1:j-1 s1=s1+l(i,k)*l(j,k); 

    end l(i,j)=(a(i,j)-s1)/l(j,j); 

    end end 

    for i=1:n for j=1:n fprintf('l(%d,%d)=%f\n',i,j,l(i,j)) 

    end 

    end 

    2. Sous-programme CROUT permettant de déterminer les matrice L  et D  de la factorisation deCROUT de la matrice A 

    Diagramme de flux

    Sous Programme

    II.  Résolution d’un système d’équations linéaire AX=B  pour matrice

    pleine quelconque1. Transformation de A en matrice triangulaire

  • 8/19/2019 Tpe Anal Num

    25/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    25

    Diagramme de flux 

    Début

    Lire n

    Lire A,B

    k←0 

    k←k+1 

    i←k  

    i←i+1 

    p←aik /akk  

     j←k -1

     j←j+1 

    aij←aij ─p*akj

     j=n ?

    bi←aij ─p*bk

    i=n ?

    k=n ?

    oui

    non

    non

    non

    oui

    oui

    1

  • 8/19/2019 Tpe Anal Num

    26/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    26

    Programmefprintf('Programme de systeme d''equation lineaires AX=B\n pour une matricequelconque:\n ') n=input('donner la dimension de la matrice A:'); a=input('entrer la matrice A:'); b=input('entrer la matrice B:'); for k=1:n 

    for i=k+1:n p=a(i,k)/a(k,k); for j=k:n 

    a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p* b(k,1); 

    end 

    end x(n,1)=b(n,1)/a(n,n); fprintf('x%d=%f\n',n,x(n,1))

    1

    i←i−1 

    S←0 

     j←i 

     j←j+1 

    S←S+aij*x j

    xn←bn/ann 

     j=n ?

    xi←(bi−S)/aii 

    i=1 ?

    Afficher x1,x2,…,xn

    Fin

    oui

    non

    non

    oui

  • 8/19/2019 Tpe Anal Num

    27/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    27

    for i=n-1:-1:1 s=0; for j=n:-1:i+1 

    s=s+a(i,j)*x(j,1); end x(i,1)=(b(i,1)-s)/a(i,i); 

    fprintf('x%d=%f\n',i,x(i,1)) end 

    2. Transformation de A en matrice diagonaleDiagramme de flux 

  • 8/19/2019 Tpe Anal Num

    28/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    28

    Début

    Lire n

    Lire A,B

    k←0 

    k←k+1 

    i←k  

    i←i+1 

    p←aik /akk  

     j←k -1

     j←j+1 

    aij←aij ─p*akj

     j=n ?

    bi←aij ─p*bk

    i=n ?

    k=n ?

    oui

    non

    non

    non

    oui

    oui

    1

  • 8/19/2019 Tpe Anal Num

    29/30

    . Numérisation des problèmes sur MATLAB  

    TPE Analyse numérique

    29

    k←n 

    k←k -1

    i←k -1

    i←i-1

    p←aik /akk  

    ←k -1

    ← +1 

    ai ←ai ─p*ak

     j=n ?

    b ←a ─ *b  

    i=1 ?

    k=1 ?

    oui

    non

    non

    non

    oui

    oui

    1

    i←0 

    i←i+1 

    i=n ?

    xi←bi/aii

    Afficher x1 x2 … xn

    Fin

    oui

    non

  • 8/19/2019 Tpe Anal Num

    30/30

    . Numérisation des problèmes sur MATLAB  

    Programmefprintf('Programme de systeme d''equation lineaires AX=B\n pour une matrice

    quelconque:\n ') n=input('donner la dimension de la matrice A:'); a=input('entrer la matrice A:'); b=input('entrer la matrice B:'); for k=1:n 

    for i=k+1:n p=a(i,k)/a(k,k); for j=k:n 

    a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p* b(k,1); 

    end end for k=n:-1:1 

    for i=k-1:-1:1 p=a(i,k)/a(k,k); for j=k:n 

    a(i,j)=a(i,j)-p*a(k,j); end b(i,1)= b(i,1)-p*b(k,1); 

    end end for i=n:-1:1 

    x(i,1)=b(i,1)/a(i,i); fprintf('x%d=%f\n',i,x(i,1)) 

    end