Fonction Cosinus avec les sommes partielles
Bonjour à vous,
Je suis étudiant en L1, j'ai une matière nommée "Algorithmique" où je dois programmer une fonction qui calcule le Cosinus pour une certaine valeur de x donnée et un certain n donné (n est l'indice de développement en série au voisinage de 0).
La formule est la suivante : http://img34.imageshack.us/img34/7747/capturer2og.jpg
Voici mon travail :
Code:
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 44 45 46 47 48 49 50 51 52 53 54 55 56
| function Cos (x: real; n:integer): real;
{ AE: n>=0, n entier, x reel}
var
S: real;
p: integer;
begin
S:= 1;
p:= 0;
{ IB: 0<=p<=n ET S=somme(((-1)^k)*((x^(2k))/((2k)!))) }
{ QC: p }
{ S=somme(((-1)^k)*((x^(2k))/((2k)!))) }
if (x<>0) and (n<>0) then
begin
while p<n do
{ S=somme(((-1)^k)*((x^(2k))/((2k)!))) ET p<n ET x<>0 ET n<>0 }
begin
p:= p+1;
{ S=somme(((-1)^(k-1))*((x^(2(k-1)))/((2(k-1))!))) ET p<=n ET x<>0 ET n<>0 }
S:= S + S * ((-1)*x*x) / ( (2*p) * ((2*p)-1) );
{ S=somme(((-1)^k)*((x^(2k))/((2k)!))) ET p<=n ET x<>0 ET n<>0 }
end;
{ S=somme(((-1)^k)*((x^(2k))/((2k)!))) ET p=n }
Cos:= S;
end;
{ AS: S=somme(((-1)^k)*((x^(2k))/((2k)!))) }
if (x=0) or (n=0) then Cos:= 1;
{ Si x=0, Cos(x)=Cos(0)=1 OU si n=0, S=1*1/1=1 }
end;
{-----------------------------------------------}
var
x: real;
n: integer;
begin
writeln('Donnez un x : ');
read(x);
writeln('Donnez un n : ');
read(n);
writeln('Cos(', x:0:2, ')=', Cos(x,n):0:8);
end. |
En le lançant, je dois obtenir les valeurs suivantes, en fonction du x et du n donné :
http://img703.imageshack.us/img703/331/capturerbh.jpg
Mais quand je rentre par exemple, x=0.50 et n=2, je n'ai pas le bon résultat, le programme me sort le bon résultat seulement quand n=0 ou n=1.
Pourriez-vous m'aider s'il vous plait ?
Merci d'avoir pris le temps de lire mon sujet =)
Bonne soirée