Probleme en polynomes d'interpolation
Résolu
sciencetalker
Messages postés
6
Statut
Membre
-
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.
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
-
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,-
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.
- 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 !
-