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 :
Voici mon travail :
En le lançant, je dois obtenir les valeurs suivantes, en fonction du x et du n donné :
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
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.
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
Partager