Problème Approximation : Cosinus (4SI)

cos

1ère méthode:

program cosinus;
uses wincrt;
const
eps=10E-4;
var
x:real;
procedure saisie(var x:real);
begin
repeat
write(‘x = ‘);
readln(x);
until((x>=-1) and (x<=1));
end;

function fact(n:byte):longint;
begin
if (n=0) or (n=1) then
fact:=1
else
fact:=n * fact(n-1);
end;

function puiss(x:real;p:byte):real;
begin
if(p=0) then
puiss:=1
else if (p=1) then
puiss:=x
else
puiss:= x * puiss(x,p-1);
end;

function calcul(x,eps:real):real;
var
co,cop:real;
i,sig:integer;
begin
i:=0;
sig:=-1;
co:=1;
repeat
i:=i+2;
cop:=co;
co:=co+(puiss(x,i)/fact(i)*sig);
sig:=-1*sig;
until( ABS(co-cop)<eps );
calcul:=co;
end;

begin
saisie(x);
writeln(‘cos(‘,x:5:3,’)=’,calcul(x,eps):13:12);
end.

2ème méthode:

program cosinus;
uses wincrt;
const
eps=10E-4;
var
x:real;

procedure saisie(var x:real);
begin
repeat
write(‘x = ‘);
readln(x);
until((x>=-1) and (x<=1));
end;

function fact(n:byte):word;
var
i,f:word;
begin
f:=1;
for i:=1 to n do
f:=f*i;
fact:=f;
end;

function puiss(x:real;p:byte):real;
var
i:integer;
r:real;
begin
r:=1;
for i:=1 to p do
r:=r*x;
puiss:=r;
end;

function calcul(x,eps:real):real;
var
co,cop,num:real;
i,denum:integer;
begin
i:=0;
num:=1;
denum:=1;
co:=num/denum;
repeat
i:=i+2;
cop:=co;
num:=-num*sqr(x);
denum:=denum*(i-1)*i;
co:=co+(num/denum);
until( ABS(co-cop)<eps );
calcul:=co;
end;

begin
saisie(x);
writeln(‘cos(‘,x:5:3,’)=’,calcul(x,eps):13:12);
end.

3ème méthode:

Leave a Reply

Your email address will not be published. Required fields are marked *