Probleme en polynomes d'interpolation

Résolu
sciencetalker Messages postés 6 Statut Membre -  
sciencetalker Messages postés 6 Statut Membre -
Bonjour,
s'il vous plait que quelqu'un m'aide a faire un programme en c qui trouve le zero d'une fonction avec la methode de bissection (methode de newton).et merci d'avance.
Configuration: Windows XP
Internet Explorer 6.0

1 réponse

  1. Marco la baraque Messages postés 1030 Statut Contributeur 329
     
    Bonjour,
    Tu supposes que ta fonction ne possède qu'un seul zéro, et qu'elle est monotone sur ton intervalle?
    Tu veux le faire par dichotomie?

    Cordialement,
    0
    1. sciencetalker Messages postés 6 Statut Membre
       
      merci Marco.'cest vrai ce que tu dis mais le problème c'est que j'arrive pas a ecrire correctement un programme en langage c qui trouve le zero d'une fonction quelconque.
      0
      1. Marco la baraque Messages postés 1030 Statut Contributeur 329 > sciencetalker Messages postés 6 Statut Membre
         
        Bonsoir,
        Je t'ai juste posé des questions. Si ces hypothèses sont respectées, voici grossièrement l'algorithme à implémenter :
        hypothèses supplémentaires : a<b et f non constante sur [a ; b]
        
        fonction trouveZero(fonction f, réel a, réel b, réel positif précision) : réel
         réel milieu = (b-a)/2
         si | f(milieu) | < précision
          retourner milieu
         si (f(a)<f(b) et f(milieu) > précision) ou (f(a)>f(b) et f(milieu) < -précision)
          /*si fonction croissante et f(milieu) positif, 
           *ou si fonction décroissante et f(milieu négatif)
           */
          retourner trouveZero(f, a, f(milieu), précision)
         sinon
          retourner trouveZero(f, f(milieu), b, précision)
        


        Bon, ça c'est récursif, donc c'est joli mais en C, si tu as une précision trop fine, tu vas avoir un débordement de ta pile.

        En itératif, ce serait plutôt un algorithme qui ressemblerait à ça :
        hypothèses supplémentaires : a<b et f non constante sur [a ; b]
        
        fonction trouveZero(fonction f, réel a, réel b, réel précision) : réel
         réel début = a
         réel fin = b
         réel milieu
         booleen croissante
         si f(début)<f(fin) //f croissante
          croissante = vrai
         sinon //f décroissante
          croissante = faux
        
         tant que | f(milieu) | < précision faire
         milieu = fin-début
          si f(milieu) > 0
           si croissante
            fin=milieu
           sinon
            debut=milieu
          sinon
           si croissante
            debut=milieu
           sinon
            fin=milieu
         fin tant que
         retourner milieu
        


        Voilà. Tu peux diminuer le nombre de si-sinon en mettant des 'et' et 'ou' (tu fais ton tableau de Karnaugh pour optimiser tout ça), mais c'est moins parlant.
        Il y a peut-être des erreurs, mais ça doit ressembler à ça.
        Après, pour faire ça en C, c'est tout simple !
        0
      2. sciencetalker Messages postés 6 Statut Membre > Marco la baraque Messages postés 1030 Statut Contributeur
         
        arigato(merci en japonais) marco, ca m'a vraiment aidé.merci encore une fois!!
        0