Bonjour,

J'ai programmé la méthode de la fausse position sous Octave, mais parfois, il me sort des NaN.
Je ne comprend absolument pas pourquoi.

Pourriez-vous m'éclairer sur ce point ?

Voici le code en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
n=300;
a=8;
b=10; 
Y=[];
 
while (e>10e-16)
%Calcul de f(a) 
for i=1:n 
fa(i)=(((-1).^(i))./(factorial(i).^(2))).*(a./2).^(2.*i); 
endfor 
foa=(((-1).^(0))./(factorial(0).^(2))).*(a./2).^(2.*0); 
sa=foa+sum(fa);
%Calcul de f(b)
for i=1:n 
fb(i)=(((-1).^(i))./(factorial(i).^(2))).*(b./2).^(2.*i);
endfor 
fob=(((-1).^(0))./(factorial(0).^(2))).*(b./2).^(2.*0); 
sb=fob+sum(fb);
%Calcul de f(xm)
xm=(a.*sb -b.*sa)./(sb-sa);
for i=1:n 
fm(i)=(((-1).^(i))./(factorial(i).^(2))).*(xm./2).^(2.*i); 
endfor 
fom=(((-1).^(0))./(factorial(0).^(2))).*(xm./2).^(2.*0); 
sm=fom+sum(fm);
%Recherche de la condition de remplacement. 
if (sm!=0)
  if ((sa.*sm)<0)
    b=xm;
  endif
  if ((sm.*sb)<0)
    a=xm;
  endif
endif
e=abs(sm-0);
endwhile
display("Le zéro correspondant à cette intervalle est:")
xm
display("Pour cette valeur, la série vaut:")
sm
display("L'erreur absolue est:")
e
Cordialement.