Integration Numérique Avec Matlab

13
7/21/2019 Integration Numérique Avec Matlab http://slidepdf.com/reader/full/integration-numerique-avec-matlab 1/13          

description

Les précédentes séances de TP nous ont permis de nous familiariser avec le langage \bsc{Matlab} et ainsi acquérir les outils de base de son utilisation, ces derniers nous permettront d'écrire les algorithmes correspondant aux méthodes vu en cours/TD en langage Matlab.Ce TP nous permettra de comparer les méthodes d'intégration numérique à savoir les méthodes des trapèzes, Simpson, Romberg, Gauss-Legendre et Gauss-Tchebychev.

Transcript of Integration Numérique Avec Matlab

Page 1: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 1/13

 

 

 

 

 

Page 2: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 2/13

       

 

   

 

     

 

   

   ba

f (x)dx

 

 

 

 

   

   

       

   

 

Page 3: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 3/13

         

 

 

  

 

 

I  = h

2 · (f (a) + 2 ·

n−11

f i + f (b))

 

     

  function   [E] = trpz( a,b,n )

  g=input('Donnez f : ')

  f=inline (g);

  h=(b−a)/n;

  S=(h/2)*(f(a)+f(b));

  for(i=1:n−1)

  S=S+h*f(a+i*h);

  end 

  I=S;

  disp('I v aut : ')

  I

  h=int(sym(g),a,b);

  E=abs(h−I)

  end 

 

 

I  =n−1i=0

h

3(f 2i + 4 · f 2i+1 + f 2i+2)

 

     

 

function   [ E ] = simpson( a,b,m )

  g=input('Donnez f : ')

  f=inline (g);

  n=m/2;

 

Page 4: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 4/13

  h=(b−a)/(2*n);

  S=0;

  for(i=0:n−1)

 

  S=S+(h/3)*(f(a+2*i*h)+4*f(a+(2*i+1)*h)+f(a+(2*i+2)*h))

  end 

  I=S;

 

  disp('I vaut : ')

 

I   h=int(sym(g),a,b);

  E=abs(h−I);

  end 

 

 

 

 

T 1,j  =

 b

−a

2 j   [f (a) + 2 ·2j−1−1

i=1

f (xij) + f (b)]

  xij  = a + i  b−a2j−1

 

T k,j  = 4k−1 × T k−1,j+1 − T k−1,j

4k−1 − 1

     

 

function   [ E ] = rmbrg( a,b,n )

  g=input('Donnez f : ')  f=inline (g);

  T=zeros(n);

  T(1,1)=((b−a)/2)*(f(a)+f(b));

 

  for(j=2:n)

  S=0;

 

for(i=1:(2^(j−1)−1))

  x=a+i*(b−a)/(2^(j−1));

  S=S+2*f(x);

  end 

  T(1,j)=(b−a)/(2^j)*(f(a)+f(b)+S);

  end 

 

  for(k=2:n)

 

for(l=1:n

−k+1)

  T(k,l)=(4^(k−1)*T(k−1,l+1)−T(k−1,l))/(4^(k−1)−1);   end 

  end 

  T

  disp('I v aut : ')

  I=T(n,1)

 

  h=int(sym(g),a,b);

  E=abs(h−I)

  end 

 

Page 5: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 5/13

 

 

   

  xi  

P n(x) =  1

n! · 2n ·  dn

dxn[(x2

−1)n]

   

ni=1

Aixki   = {

2k+1

,k− pair0,k−impair

   

x = 1

2(b + a + (b− a)t)

   

I  =  b− a

2

ni=1

Aif (b + a

2  +

 b − a

2  ti)

     

  function   [ E ] = gaussl( a,b,g )

  n=input('donnez le nombre de points pour la methode : ');

  x=[1 0  −1];% le polynome intervenant dans la formule ( x 2̂−1)

  if   (n==0)

  P =[0 0 1 ];

 

else

 

  E=conv(x,x) ;%eleve le polynome au carre.  if   (n>1)

  q=E;

 

  for   (i=2 :n−1)

  q=conv(q,x) ;%eleve le polynome jusqu au degre n.

 

end 

  end 

 

  if   (n==1)

  D=x;

  else

  if   (n>1)

 

  D=polyder(q);% derive une premiere fois.

  for   j=1:n−1

 

D=polyder(D);% derive (n−1) autre fois.   end 

 

end 

  end 

 

  P= (1/(factorial(n)*(2^n)))*D;% polynome de degre n.

 

end 

 

  y=roots(P);%racines du polynome de degre n.

 

 

% calcul des coefficients

  C=zeros(n,n);

  for(r=1:n)

  for(s=1:n)

 

Page 6: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 6/13

  C(r,s)=y(s)^(r−1) ;%calcule les valeurs de f(xi) et les mets dans une matrice

 

  end 

 

end 

 

  Z=zeros(n,1);

 

 

for( k =1 : (n))

  if   (mod((k−1),2)==0)

 

Z(k,1)=(2/(k));   else

  Z(k,1)=0;

  end 

  end 

 

  A=zeros(n,1);

 

  A= inv(C)*Z ;%solutions de notre systeme d equation (Ai).

 

 

 

  f=inline (g);

  I=0;

  for(v=1:n)

  I=(I+ ( (b−a)/2)*(f( ((b+a)/2)+((b−a)/2)*y(v)) )*A(v));

  end 

 

 

  I

  format long

 

  h=int(sym(g),a,b);

 

  E=abs(h−I);

 

 

  end 

 

 

   1

−1

f (x)√ 1 − x2

≈  π

n

ni=1

f (cos(2i− 1

2n  ))

 

function   [ E ] = gausst(a,b,g)

  n=input('Donnez le nombre de points : ')

 

 

  f=inline (g);

  if(a==0)

 

S=0;  for(i=1:n)

  S=(S+(pi/n)*f(cos((2*i−1)*pi /(2*n) ) ));

  end 

  I=S/2;

  else

 

  S=0;

  for(i=1:n)

  S=S+(pi/n)   *f(cos((2*i−1)*pi/(2*n) ));

 

end 

  end 

 

  disp('I v aut : ')

 

Page 7: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 7/13

  I

  h=int(sym(g),a,b);

  E=abs(h−I);

 

end 

 

 

 

 

 

 

  function   [ ] = integration(methode)

  a=input('Entrez la borne inferieure : ');

  b=input('Entrez la borne superieur : ');

 

  switch   (methode)

  case   'trapeze'

  n=input('Entrez le nombre de sub : ');

  trpz(a,b,n);

  case'simpson'

  n=input('Entrez le nombre de sub : ');

  simpson(a,b,n);

 

case   'romberg'

  n=input('Entrez le nombre de sub : ');

  rmbrg(a,b,n)

  case'gausslegendre'

  g=input(' donn ez f : ');

  k=zeros(5,1);

  for(i=1:5)

  k(i)=gaussl(a,b,g);

  end 

  v=[2;4;8;12;16];

  plot(v,k,'b')

  title('Erreur en fonction du nombre de points')

 

case'gausstchebychev'

  g=input('Donnez la fonction f(x) qui est au nominateur ponderee par racine de (1−x^2) ') ;

  k=zeros(3,1);

  for(i=1:3)

  k(i)=gaussl(a,b,g);

  end 

  v=[2;3;4];

  plot(v,k,'b')

  title('Erreur en fonction du nombre de points')

  end 

  end 

 

 

 

f (x) = sin(x)    x ∈ [0;π/2]  

 

Page 8: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 8/13

 

  >> integration('gausslegendre')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : pi/2

  donnez f :   'sin(x)'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  0.998472613404115

 

  donnez le nombre de points pour la methode : 4

 

  I =

 

  0.999999977197114

 

  donnez le nombre de points pour la methode : 8

 

  I =

 

  1

 

  donnez le nombre de points pour la methode : 12

 

  I =

 

  1.000000000000398

 

  donnez le nombre de points pour la methode : 16

 

  I =

 

  0.999999999996684

   

 

Page 9: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 9/13

h(x) = x3   x ∈ [0;2]  

 

  >> integration('gausslegendre')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : 2

  donnez f :   'x^3'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  3.999999999999999

 

  donnez le nombre de points pour la methode : 4

 

  I =

 

  3.999999999999996

 

  donnez le nombre de points pour la methode : 8

 

  I =

 

  4.000000000000002

 

  donnez le nombre de points pour la methode : 12

 

  I =

 

  4.000000000000729

 

  donnez le nombre de points pour la methode : 16

 

  I =

 

  3.999999999968925

g(x) = 1/x2   x ∈ [1;2]  

 

  >> integration('gausslegendre')

  Entrez la borne inferieure : 1

  Entrez la borne superieur : 2

  donnez f :   '1/(x^2)'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  0.497041420118343  

  donnez le nombre de points pour la methode : 4

 

  I =

 

  0.499995147562620

 

  donnez le nombre de points pour la methode : 8

 

  I =

 

  0.499999999992918

 

Page 10: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 10/13

 

  donnez le nombre de points pour la methode : 12

 

  I =

 

  0.500000000000201

 

  donnez le nombre de points pour la methode : 16

 

 

I =  

  0.499999999997659

   

S (x) = 1/(1 + x2

)  

  x ∈ [0; 1] 

 

  >> integration('gausslegendre')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : 1

  donnez f :   '1/(1+x^2)'

  donnez le nombre de points pour la methode : 2

 

  I =

 

 

0.786885245901639  

  donnez le nombre de points pour la methode : 4

 

  I =

 

  0.785402976311451

 

  donnez le nombre de points pour la methode : 8

 

  I =

 

  0.785398163379778

 

 

Page 11: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 11/13

  donnez le nombre de points pour la methode : 12

 

  I =

 

  0.785398163397791

 

  donnez le nombre de points pour la methode : 16

 

  I =

 

  0.785398163394261

 

f (x) =   1√ 1−x2

 

 

  >> integration('gausstchebychev')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : 1

  Donnez la fonction f(x) qui est au nominateur ponderee par racine de (1−x^2)   '1'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  1

 

  donnez le nombre de points pour la methode : 3

 

  I =

 

  1.000000000000000

 

  donnez le nombre de points pour la methode : 4  

  I =

 

  0.999999999999999

f (x) =   x2√ 1−x2

 

 

  >> integration('gausstchebychev')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : 1

  Donnez la fonction f(x) qui est au nominateur ponderee par racine de (1−x^2)   'x^2'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  0.333333333333333

 

  donnez le nombre de points pour la methode : 3

 

  I =

 

  0.333333333333333

 

Page 12: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 12/13

 

  donnez le nombre de points pour la methode : 4

 

  I =

 

  0.333333333333333

   

f (x) =   x4√ 1−x2

 

 

  >> integration('gausstchebychev')

  Entrez la borne inferieure : 0

  Entrez la borne superieur : 1

  Donnez la fonction f(x) qui est au nominateur ponderee par racine de (1−x^2)   'x^4'

  donnez le nombre de points pour la methode : 2

 

  I =

 

  0.194444444444444

 

  donnez le nombre de points pour la methode : 3

 

  I =

 

 

0.200000000000000  

  donnez le nombre de points pour la methode : 4

 

  I =

 

  0.200000000000000

 

Page 13: Integration Numérique Avec Matlab

7/21/2019 Integration Numérique Avec Matlab

http://slidepdf.com/reader/full/integration-numerique-avec-matlab 13/13