begin process at 2008 07 25 21:41:45
1 216 525 membres
476 nouveaux aujourd'hui
14 182 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FONCTION DICHOTOMIE CALCUL NUMÉRIQUE


Information sur la source

Description

un simple programme ecrit en pascal définit la méthode dichotomie

Source

  • program dicotomie;
  • var y:integer;
  • function f(var x:real):real;
  • begin
  • if y=1 then f:=sin(x)-1/2
  • else begin if y=2 then f:=exp(x)-2
  • else begin if y=3 then f:=sqr(x)-2 end; end;
  • end;
  • procedure verif;
  • var a,b,m,ep,va:real;
  • i,n:integer;
  • r,c:char;
  • begin repeat
  • writeln('choisir une fonction parmis les trois');
  • writeln('f[x]=sin(x)-1/2.....[1]');
  • writeln('f[x]=exp(x)-2.......[2] ');
  • writeln('f[x]=x(puiss)2-2....[3] ');
  • write('entrer le nombre [i] de 1..3 i=');
  • readln(y);
  • writeln('pour calculer la racine de la fonction f[x] donne l’intervalle [a,b]’) ;
  • write(' donner a=');
  • readln(a);
  • write(' donner b=');
  • readln(b);begin
  • if a>b then
  • repeat writeln('*****************REMARQUE**************');
  • writeln(' *** il faut que a<b *** ');
  • write('S.V.P entrer un autre intervalle ou invercer les valeurs a=');
  • readln(a);
  • write(' b=');
  • readln(b);
  • until a<b;
  • begin
  • if f(a)*f(b)>0 then
  • repeat
  • writeln('*******************REMARQUE************************');
  • writeln(' *** la fonction ne admet aucun zero dans se intervalle *** ');
  • writeln(' ');
  • write('S.V.P entrer un autre intervalle a=');
  • readln(a);
  • write(' b=');
  • readln(b);
  • until f(a)*f(b)<=0;
  • writeln('la fonctin f admet au moins un zero dans [',a,';',b,']');
  • write(' ');
  • write('entrer le nombre d"iteration n=');
  • readln(n);
  • m:=(a+b)/2; if f(m)=0 then ep:=m
  • else
  • begin for i:=1 to n-1 do
  • begin if f(m)*f(a)>0 then begin a:=m; m:=(b+m)/2; end
  • else m:=(a+m)/2; b:=2*m-a;
  • end;
  • end; i:=i+1;
  • ep:=m;
  • writeln(' la RACINE pour l"iteration ',n,' est epsilon=',ep);
  • write('voulez vous calculerf[',ep,'] O/N?');
  • readln(c); if c='O' then writeln('f[',ep,']=',f(ep));
  • write('voulez vous continuer O/N? ');
  • readln(r); end; end;
  • until r='N';
  • end;
  • begin
  • writeln(' DICOTOMIE ');
  • writeln(' ');
  • writeln(' ');
  • verif;
  • end.
program dicotomie;
var y:integer;
function f(var x:real):real;

begin
if y=1 then f:=sin(x)-1/2
       else begin if y=2 then f:=exp(x)-2
                         else begin if y=3 then f:=sqr(x)-2 end; end;
end;
procedure verif;
var a,b,m,ep,va:real;
    i,n:integer;
    r,c:char;
begin  repeat
   writeln('choisir une fonction parmis les trois');
   writeln('f[x]=sin(x)-1/2.....[1]');
   writeln('f[x]=exp(x)-2.......[2] ');
   writeln('f[x]=x(puiss)2-2....[3] ');
   write('entrer le nombre [i] de 1..3 i=');
   readln(y);
   writeln('pour calculer la racine de la fonction f[x] donne  l’intervalle [a,b]’) ; 
   write('                      donner a=');
   readln(a);
   write('                      donner b=');
   readln(b);begin
             if a>b then
               repeat writeln('*****************REMARQUE**************');
 writeln('                       *** il faut que a<b ***     ');
 write('S.V.P entrer un autre intervalle ou invercer les valeurs a=');
                      readln(a);
                      write('                                                         b=');
                      readln(b);
               until a<b;
   begin
     if f(a)*f(b)>0  then
       repeat
         writeln('*******************REMARQUE************************');
writeln('  *** la fonction ne admet aucun zero dans se intervalle *** ');
writeln('     ');
         write('S.V.P entrer un autre intervalle a=');
         readln(a);
         write('                                 b=');
         readln(b);
       until f(a)*f(b)<=0;
         writeln('la fonctin f admet au moins un zero dans [',a,';',b,']');
         write('                ');
         write('entrer le nombre d"iteration n=');
         readln(n);
           m:=(a+b)/2; if f(m)=0  then  ep:=m
                             else
                              begin  for i:=1 to n-1 do
                               begin   if f(m)*f(a)>0 then begin a:=m; m:=(b+m)/2;   end
                                                            else  m:=(a+m)/2; b:=2*m-a;
                                                                 end;
                                     end; i:=i+1;
                                          ep:=m;
                    writeln('   la RACINE pour l"iteration ',n,' est epsilon=',ep);
                    write('voulez vous calculerf[',ep,'] O/N?');
                    readln(c); if c='O' then writeln('f[',ep,']=',f(ep));
       write('voulez vous continuer O/N? ');
       readln(r);    end;      end;
  until r='N';


end;

begin
   writeln('                           DICOTOMIE                                ');
   writeln('       ');

   writeln('              ');
     verif;

end.
    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

Serveur et client mess...
Budget : 2 000€
Animation Flash alimen...
Budget : 6 000€
Intranet client pour t...
Budget : 5 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS