Exercice: Approximation de SINUS(X) + factoriel + suite
2 participants
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Exercice: Approximation de SINUS(X) + factoriel + suite
EXTRAIT DE BAC TUNISIEN
Sachant que sin(x)= x/1!-x^3/3!+x^5/5!-x^7/7!+x^9/9!-..........;
Pour x trés proche de zéro.
Écrire un programme Pascale intitulé SIN(X) qui permet de calculer sin(x) en utilisant la formule ci-dessus.
Le calcul s'arrête lorsque la différence entre deux termes consécutifs devient inférieure ou égale à 10^-4. La dernière somme calculer est une valeur approché de sin(x).
Vous pourrez utiliser la fonction FACT(a) suivante qui permet de calculer le factorielle a (a!).
NB:
La solution doit comporter au moins une fonction et une procédure.
Sachant que sin(x)= x/1!-x^3/3!+x^5/5!-x^7/7!+x^9/9!-..........;
Pour x trés proche de zéro.
Écrire un programme Pascale intitulé SIN(X) qui permet de calculer sin(x) en utilisant la formule ci-dessus.
Le calcul s'arrête lorsque la différence entre deux termes consécutifs devient inférieure ou égale à 10^-4. La dernière somme calculer est une valeur approché de sin(x).
Vous pourrez utiliser la fonction FACT(a) suivante qui permet de calculer le factorielle a (a!).
- Code:
1.DEFFN FACT(a :entier) : entier
2.F<--1
3.Si (a>0) alors Pour i de 1 à a répeter
F<--F*i
Fin pour
FinSi
4.Fact<--F
5.Fin FACT
NB:
La solution doit comporter au moins une fonction et une procédure.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Exercice: Approximation de SINUS(X) + factoriel + suite
Une solution possible :
- Code:
Program SIN(X);
uses wincrt;
var
i,a:integer;
s,a;real;
procedure saisie(var x:real);
begin
repeat
writeln('Introduire x');
readln(x);
until (x>=-1) and (<=1);
end;
function factoriel(x:integer):integer;
var
i,f:integer;begin
f:=1;
for i:=1 to x do
f:=f*i;
factoriel:=f
end;
function puissance(x:real;n:integer):real;
var
i:integer;
p:real;
begin
p:=1;
for i:=1 to n do
p:=p*x;
puissance:=p;
end;
begin
saisie(x);
i:=1;
a:=1:
s:=0;
repeat
s:=s+a*puissance(x,i)/factoriel(i);
i:=i+2;
a:=-a;
until abs(puissance(x,i-2)/factoriel(i-2)-puissance(x,i)/factoriel(i))<=0.0001;
writeln('sin(',x,')=',s);
end.
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Re: Exercice: Approximation de SINUS(X) + factoriel + suite
Bonsoir,
Pour mon premier post sur le forum je me présente:
Moi c'est Amine étudiant en L1 mathématique-informatique.
J'ai cet exercice à faire pour demain, je pense que ma façon de l'avoir écrit est bonne, d'ailleurs elle se rapproche de celle de Napoléon, tout de même j'ai une erreur affichée au premier Read(x) de type : Runtime error 200 at 0001:0123.
& je ne comprend pas d'ou ça vient.
A noter que j'ai testé le code proposé par Napoléon, & y avait des erreurs, qui empechaient l'execution, que j'ai eu la flemme d'essayer de retrouvés une a une.
Bref, voila mon code :
Pour mon premier post sur le forum je me présente:
Moi c'est Amine étudiant en L1 mathématique-informatique.
J'ai cet exercice à faire pour demain, je pense que ma façon de l'avoir écrit est bonne, d'ailleurs elle se rapproche de celle de Napoléon, tout de même j'ai une erreur affichée au premier Read(x) de type : Runtime error 200 at 0001:0123.
& je ne comprend pas d'ou ça vient.
A noter que j'ai testé le code proposé par Napoléon, & y avait des erreurs, qui empechaient l'execution, que j'ai eu la flemme d'essayer de retrouvés une a une.
Bref, voila mon code :
- Code:
program exo5;
uses wincrt;
var sinx,x: real;
procedure saisie(var x:real);
begin
repeat
clrscr;
writeln('calcul de sinus(x) ');
write('donner une valeure à x : ');
readln(x);
until (x>=-1) and (x<=1);
end;
function factorielle(n: integer): integer;
var f: integer;
begin
f := 1;
while (n > 1) do
begin
f := f * n;
n := n - 1;
end;
factorielle := f;
end;
function puissance(x: real; n: integer): real;
var i: integer; p: real;
begin
p := 1;
for i := 1 to n do
p := p * x;
puissance := p;
end;
function somme(x: real):real;
var i,n: integer; som,s: real;
begin
somme := 0;
s := 0;
repeat
for i := 3 to 100 do
begin
som := som + s;
if ((i mod 2)<> 0) then n := i;
s := (puissance(x,n) / factorielle(n));
end;
until (s <= 0.0001);
somme := som;
end;
begin
writeln('Calcul de Sin(x) ');
saisie(x);
sinx := x - somme(x);
write(sinx);
end.
Dr X- Entier Naturel
-
Nombre de messages : 1
Localisation : Tizi Ouzou
Réputation : 0
Points : 4232
Date d'inscription : 23/04/2013
Re: Exercice: Approximation de SINUS(X) + factoriel + suite
Quelles étaient les erreurs que tu as trouvées dans la solution de Napoleon?
Napoléon- Admin
-
Nombre de messages : 2934
Localisation : Tunisie
Réputation : 122
Points : 7871
Date d'inscription : 19/03/2007
Feuille de personnage
Capacité linguistique:
(999/1000)
Sujets similaires
» Exercice:TP:Approximation numérique, Exp(x), Sin(x)...
» [résolu]Exercice: Approximation de Ln(1+x) en Pascal
» Exercice (bac pratique): Somme de factoriel des chiffres
» Exercice: Approximation de Pi/2, formule de Wallis
» Exercice: La suite de Lucas
» [résolu]Exercice: Approximation de Ln(1+x) en Pascal
» Exercice (bac pratique): Somme de factoriel des chiffres
» Exercice: Approximation de Pi/2, formule de Wallis
» Exercice: La suite de Lucas
Forum INFOMATH :: Enseignement de l'informatique :: Informatique - Collège & Lycée :: Exercices Pascal
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum