2016-10-16 1 views
1

Je suis donc censé écrire une fonction Matlab qui a une estimation initiale p et une tolérance e comme entrées et sorties le nombre d'itérations n et le point fixe final environ pn satisfaisant abs (pn-pn-1) < = e pour une fonction donnée g. Voici ce que j'ai actuellement:itération du point fixe dans matlab

function f = fixed(p,e) 
i=1; 
pn=g(p); 
while (abs(pn - p) <= e) 
    pn = g(p) 
    i=i+1; 
    p=pn 
end 
end 

Mais je ne sais pas où je vais mal. Dois-je inclure une autre instruction if dans le cas où la différence absolue est> e? Quoi d'autre pourrais-je inclure dans une telle déclaration?

+0

Je pense qu'il y a un bug subtil dans votre code. Vois ma réponse. – ja72

Répondre

1

Essayez ceci: après la déclaration p=pn

function f = fixed(p,e) 
i=1; 
pn=g(p); 
while (abs(pn - p) <= e) 
    p = pn 
    pn=g(p) 
    i=i+1; 
end 
f = pn 
end 

Je pense que vous compariez p et pn provoquant une sortie précoce.

+0

cela a résolu le problème, merci! – Andi