2010-12-02 25 views
0

On m'a demandé d'écrire un programme pour résoudre cette équation (x^3 + x -1 = 0) en utilisant une itération à point fixe.algorithme d'itération à point fixe

Quel est l'algorithme pour l'itération à point fixe? Existe-t-il un exemple de code d'itération à point fixe en Python? (Pas une fonction de tous les modules, mais le code avec des algorithmes)

Merci

+4

Qu'avez-vous jusqu'à présent? – SingleNegationElimination

+1

Lisez ceci pour commencer: http://en.wikipedia.org/wiki/Fixed_point_%28mathematics%29 Bien qu'il soit difficile à comprendre, il est assez simple à mettre en œuvre. – ruslik

Répondre

1

D'abord, lisez ceci: Fixed point iteration:Applications

J'ai choisi la méthode de Newton.

Maintenant, si vous souhaitez en savoir plus sur les fonctions de générateur, vous pouvez définir une fonction de générateur, et par exemple un objet générateur comme suit

def newtons_method(n): 
    n = float(n) #Force float arithmetic 
    nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1) 
    while 1: 
     yield nPlusOne 
     n = nPlusOne 
     nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1) 

approxAnswer = newtons_method(1.0) #1.0 can be any initial guess... 

Ensuite, vous pouvez gagner successivement de meilleures approximations en appelant:

approxAnswer.next() 

voir: PEP 255 ou Classes (Generators) - Python v2.7 pour plus d'informations sur les générateurs

par exemple

approx1 = approxAnswer.next() 
approx2 = approxAnswer.next() 

Ou mieux encore utiliser une boucle! Comme pour décider quand votre approximation est assez bon ...;)

0

est pseudocode here, vous devriez être en mesure de le comprendre à partir de là.