<<CheminPackLocaux`

Collège du Sud, Bulle
2-ème année OS PAM

Applications des mathématiques

Approximation de longueurs d'arcs par la méthode d'Archimède

polygIns[n_]:=Line[Table[{Cos[((k π)/n)],Sin[((k π)/n)]},{k,0,n}]];
polygCirc[n_]:=Line[Table[(({Cos[((k π)/n)],Sin[((k π)/n)]})/(Cos[(π/(2 n))])),{k,0,n}]];
Show[Graphics[{Circle[{0,0},1,{0,π}],polygIns[6],polygCirc[6]}],AspectRatio->Automatic,ImageSize->{400,240}]

Version pour Mathematica
Marcel Délèze, Eugène Pasquier
Edition 2009/2010
www.collegedusud.ch/app/applmaths/

§ 1 Approximation de longueurs d'arcs

Préambule

Nous allons étudier une méthode pour calculer numériquement 
   * le nombre π;
   * le sinus d'un angle x;
   * l'arc sinus, c'est-à-dire la fonction réciproque de sinus.

La méthode que nous allons exposer n'est pas celle que l'on choisit habituellement pour programmer les calculatrices car il existe beaucoup d'autres plus performantes. Mais la méthode traitée ici est
   * ancienne,
   * géométrique,
   * élémentaire et
   * néanmoins pratiquement utilisable.

Un exemple d'algorithme

Dans ce chapitre, par un raisonnement géométrique, nous allons construire un algorithme pour calculer la longueur d'un arc de cercle par la méthode d'Archimède (p. 9, Rel. 1-2-8). Cet algorithme peut se traduire en un programme (p. 13, calcul de Arcsin). Il est à remarquer qu'il nous faudra 13 pages pour arriver à un programme de deux lignes !

Découpage en blocs pour la présentation

Le présent cours fait l'objet d'une présentation orale par les élèves. A cette fin, il est divisé en blocs; chaque bloc est numéroté et attribué à un élève. Les marques de début et de fin de blocs sont disposées sur la droite, comme suit.

§ 1.1 Méthode d'Archimède pour calculer π

Représentation géométrique du nombre π

Géométriquement, le nombre π peut être représenté par la longueur du demi-cercle de rayon 1

(1/2)c=(1/2)(2 π r)=π r=π·1=π

Exercice 1-1-1

Nous allons déterminer "expérimentalement" une valeur approximative du nombre π :
 * mesurer le diamètre du demi-cercle ci-après;
 * dérouler un fil sur le demi-cercle et mesurer sa longueur;
 * en déduire une valeur empirique du nombre π.

Show[Graphics[{Circle[{0,0},1,{0,π}],Line[{{-1,0},{1,0}}]}],ImageSize->{500,300},AspectRatio->Automatic]

Notre ambition est bien plus grande : nous voulons non seulement calculer π avec une grande précision mais, de plus, nous voulons connaître l'erreur maximale sur le résultat.

Méthode d'Archimède

Au VI-ème siècle avant J.- C., Archimède proposa la méthode suivante pour calculer π.
Considérons un demi-cercle de rayon 1.

polygIns[n_]:=Line[Table[{Cos[((k π)/n)],Sin[((k π)/n)]},{k,0,n}]];
polygCirc[n_]:=Line[Table[(({Cos[((k π)/n)],Sin[((k π)/n)]})/(Cos[(π/(2 n))])),{k,0,n}]];
Show[GraphicsRow[{Graphics[{Circle[{0,0},1,{0,π}],polygIns[3],polygIns[6],polygIns[12]}],Graphics[{Circle[{0,0},1,{0,π}],polygCirc[3],polygCirc[6],polygCirc[12]}]}],AspectRatio->Automatic,ImageSize->{500,200}]

Le demi-périmètre de  tout polygone inscrit est inférieur à π.
Le demi-périmètre de  tout polygone circonscrit est supérieur à π.
Notons

(Subscript[d, 0])= demi-périmètre de l'hexagone inscrit (valeur de π par défaut);

(Subscript[e, 0])= demi-périmètre de l'hexagone circonscrit (valeur de π par excès);

on a l'encadrement            (Subscript[d, 0]) < π < (Subscript[e, 0])

Pour obtenir un encadrement moins grossier, doublons le nombre de côtés des polygones

(Subscript[d, 1])= demi-périmètre du polygone régulier inscrit à 12 côtés;

(Subscript[e, 1])= demi-périmètre du polygone régulier circonscrit à 12 côtés;

on a l'encadrement            (Subscript[d, 1]) < π < (Subscript[e, 1])

Pour obtenir un encadrement plus fin, doublons encore le nombre de côtés des polygones

(Subscript[d, 2])= demi-périmètre du polygone régulier inscrit à 24 côtés;

(Subscript[e, 2])= demi-périmètre du polygone régulier circonscrit à 24 côtés;

on a l'encadrement            (Subscript[d, 2]) < π < (Subscript[e, 2])

On peut répéter le doublement du nombre des côtés jusqu'à ce que l'on atteigne la précision souhaitée.

Exercice 1-1-2

Pour calculer les nombres  (Subscript[d, 0]) et (Subscript[e, 0])
 a)	Dessinez, avec la règle et le compas, un demi-cercle 
 	avec ses demi-hexagones inscrit et circonscrit;
 b)	Calculez l'approximation initiale de π par la méthode d'Archimède,
 	c'est-à-dire les valeurs exactes des nombres (Subscript[d, 0]) et (Subscript[e, 0]).
 	Indication : les deux hexagones sont homothétiques.
 c)	Calculez la valeur numérique correspondante de π 
 	et écrivez-la sous la forme π = x ± Δx.

Dans les paragraphes suivants, nous déterminerons des approximations plus fines de π.

§ 1.2 Calcul de la longueur d'un arc de cercle

La méthode d'Archimède peut servir à calculer, non seulement la longueur du demi-cercle, mais aussi la longueur de n'importe quel arc de cercle. C'est ce problème plus général que nous voulons résoudre.

Le problème de la longueur d'arc

x=1;o={0,0};m={Cos[x],Sin[x]};i={1,0};p={Cos[x],0};
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,o,m,p}],Text["s",{Cos[x],0.4` Sin[x]},{1,0}],Text["x",{Cos[(x/2)],Sin[(x/2)]},{-1,0}],{Dashing[{0.02`,0.02`}],Circle[o,1,{x,π}]}}],BaseStyle->{FontSize->12},PlotRange->{-0.1`,1},AspectRatio->Automatic,PlotLabel->"Fig. 1-2-1",ImageSize->{200,150}]

Problème 	Dans un cercle de rayon r = 1, 
		on donne la longueur d'une demi-corde  s.
		On cherche la longueur du demi-arc correspondant x.

Dans le cas particulier où s = r , on obtient    x=(π/2). Ainsi, la résolution de ce problème nous permettra, entre autres, de calculer la valeur de π et de résoudre le problème du § 1.1

Notations et description de la méthode

Nous allons adapter la méthode d'Archimède au problème de la longueur d'arc.
L'arc de longueur x est approché par
	une ligne polygonale inscrite et
	une ligne polygonale circonscrite
dont on double le nombre de segments à chaque étape.

Approximation initiale ( numéro 0)

n=0;o={0,0};x=1;i={1,0};p={Cos[x],0};m=.;m={Cos[x],Sin[x]};
Show[Graphics[{Circle[o,1,{0,x}],Line[{p,m}],Line[{i,{1,Tan[x]}}],{Dashing[{0.02`}],Line[{i,o,{1,Tan[x]}}]},Text["x",{(1/2) (1+Cos[x]),0.8` Sin[x]},{-1,0}],Text["\!\(\*SubscriptBox[\(d\), \(0\)]\)=1·\!\(\*SubscriptBox[\(s\), \(0\)]\)",{Cos[x],0.4` Sin[x]},{1,0}],Text["\!\(\*SubscriptBox[\(e\), \(0\)]\)=1·\!\(\*SubscriptBox[\(t\), \(0\)]\)",{1,0.6` Tan[x]},{-1,0}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

Dans la figure ci-dessus, on a représenté l'approximation numéro 0 (approximation initiale)

x=longueur d'arc;

(Subscript[d, 0])= approximation de x par défaut ;

(Subscript[e, 0])=approximation de x par excès;

(Subscript[s, 0])= longueur d'un  demi-segment de la ligne polygonale inscrite;

(Subscript[t, 0]) = longueur d'un demi-segment de la ligne polygonale circonscrite;
On a les relations :

2 (Subscript[s, 0])< 2 x < 2 (Subscript[t, 0])   ⟺     (Subscript[s, 0])<x<(Subscript[t, 0]);

(Subscript[d, 0])<x<(Subscript[e, 0])        (approximation initiale).

Approximation numéro 1

n=1;o={0,0};x=1;i={1,0};p={Cos[x],0};m=.;
m={Cos[x],Sin[x]};
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,m}],Line[(({i,m})/(Cos[(x/2)]))],{Dashing[{0.02`}],Line[(({i,o,m})/(Cos[(x/2)]))]},Text["x",{(1/2) (1+Cos[x]),0.73` Sin[x]},{1,0}],Text["\!\(\*SubscriptBox[\(d\), \(1\)]\)=2·\!\(\*SubscriptBox[\(s\), \(1\)]\)",0.85` {Cos[(x/2)],Sin[(x/2)]},{1,0}],Text["\!\(\*SubscriptBox[\(e\), \(1\)]\)=2·\!\(\*SubscriptBox[\(t\), \(1\)]\)",{Cos[(x/2)],Sin[(x/2)]},{-1,0}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

Dans la figure ci-dessus, on a représenté l'approximation numéro 1

x =longueur d'arc;

(Subscript[s, 1]) = longueur d'un demi-segment de la ligne polygonale inscrite;

(Subscript[t, 1]) = longueur d'un demi-segment de la ligne polygonale circonscrite;
On a les relations :

2 (Subscript[s, 1])< x < 2 (Subscript[t, 1])         ⟺            (2^1) (Subscript[s, 1])<x<(2^1) (Subscript[t, 1])

(Subscript[d, 1])= (2^1) (Subscript[s, 1])= approximation de x par défaut;

(Subscript[e, 1])= (2^1)(Subscript[t, 1])= approximation de x par excès;

(Subscript[d, 1])<x<(Subscript[e, 1])        (approximation numéro 1).

Approximation numéro 2

n=2;o={0,0};x=1;i={1,0};p={Cos[x],0};m=.;
Do[m[j]={Cos[((j x)/n)],Sin[((j x)/n)]},{j,1,n}];
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,m[1],m[2]}],Line[(({i,m[1],m[2]})/(Cos[(x/4)]))],{Dashing[{0.02`}],Line[(({i,o,m[2]})/(Cos[(x/4)]))],Line[(({o,m[1]})/(Cos[(x/4)]))]},Text["\!\(\*SubscriptBox[\(d\), \(2\)]\)=4·\!\(\*SubscriptBox[\(s\), \(2\)]\)",0.95` {Cos[(x/4)],Sin[(x/4)]},{1,0}],Text["\!\(\*SubscriptBox[\(e\), \(2\)]\)=4·\!\(\*SubscriptBox[\(t\), \(2\)]\)",{Cos[((3 x)/4)],Sin[((3 x)/4)]},{-1,0}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

Dans la figure précédente, on a représenté l'approximation numéro 2

x=longueur d'arc;

(x/2)=longueur d'arc d'un triangle isocèle;

(Subscript[s, 2]) = longueur d'un demi-segment de la ligne polygonale inscrite;

(Subscript[t, 2]) = longueur d'un demi-segment de la ligne polygonale circonscrite;
On a les relations :

2 (Subscript[s, 2])< ((x )/2)< 2 (Subscript[t, 2])     ⟺   4 (Subscript[s, 2])<x<4 (Subscript[t, 2])    ⟺   (2^2) (Subscript[s, 2])<x<(2^2) (Subscript[t, 2])

(Subscript[d, 2])= (2^2) (Subscript[s, 2])= approximation de x par défaut ;

(Subscript[e, 2])= (2^2)(Subscript[t, 2])= approximation de x par excès;

(Subscript[d, 2])<x<(Subscript[e, 2])        (approximation numéro 2).

Approximation numéro 3

n=3;o={0,0};x=1;i={1,0};p={Cos[x],0};m=.;
Do[m[j]={Cos[((j x)/4)],Sin[((j x)/4)]},{j,1,4}];
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,m[1],m[2],m[3],m[4]}],Line[(({i,m[1],m[2],m[3],m[4]})/(Cos[(x/8)]))],{Dashing[{0.02`}],Line[(({i,o,m[1]})/(Cos[(x/8)]))],Line[(({o,m[2]})/(Cos[(x/8)]))],Line[(({o,m[3]})/(Cos[(x/8)]))],Line[(({o,m[4]})/(Cos[(x/8)]))]},Text["\!\(\*SubscriptBox[\(d\), \(3\)]\)=8·\!\(\*SubscriptBox[\(s\), \(3\)]\)",0.98` {Cos[(x/8)],Sin[(x/8)]},{1,0}],Text["\!\(\*SubscriptBox[\(e\), \(3\)]\)=8·\!\(\*SubscriptBox[\(t\), \(3\)]\)",{Cos[((5 x)/8)],Sin[((5 x)/8)]},{-1,0}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

Dans la figure précédente, on a représenté l'approximation numéro 3

x=longueur d'arc;

(x/4)=longueur d'arc d'un triangle isocèle;

(Subscript[s, 3]) = longueur d'un demi-segment de la ligne polygonale inscrite;

(Subscript[t, 3]) = longueur d'un demi-segment de la ligne polygonale circonscrite;
On a les relations :

2 (Subscript[s, 3])< ((x )/4)< 2 (Subscript[t, 3])     ⟺  8 (Subscript[s, 3])<x<8 (Subscript[t, 3])    ⟺   (2^3) (Subscript[s, 3])<x<(2^3) (Subscript[t, 3])

(Subscript[d, 3])= (2^3) (Subscript[s, 3])= approximation de x par défaut ;

(Subscript[e, 3])= (2^3)(Subscript[t, 3])= approximation de x par excès;

(Subscript[d, 3])<x<(Subscript[e, 3])        (approximation numéro 3).

Approximation numéro n (généralisation)

Pour l'approximation numéro n, on a

x=longueur d'arc;

(x/(2^(n-1)))=longueur d'arc d'un triangle isocèle;

(Subscript[s, n]) = longueur d'un demi-segment de la ligne polygonale inscrite;

(Subscript[t, n]) = longueur d'un demi-segment de la ligne polygonale circonscrite;
On a les relations   :

2 (Subscript[s, n])< ((x )/(2^(n-1)))< 2 (Subscript[t, n])     ⟺    (2^n) (Subscript[s, n])<x<(2^n) (Subscript[t, n])

(Rel. 1-2-1 )        (Subscript[d, n])= (2^n) (Subscript[s, n]) =approximation de x par défaut ;

(Rel. 1-2-2)        (Subscript[e, n])= (2^n)(Subscript[t, n]) = approximation de x par excès;

(Rel. 1-2-3)        (Subscript[d, n])<x<(Subscript[e, n])        (approximation numéro n).

Autres relations pour les approximations successives

Approximation initiale (numéro 0)

n=0;o={0,0};x=1;i={1,0};p={Cos[x],0};m=.;m={Cos[x],Sin[x]};
Show[Graphics[{Circle[o,1,{0,x}],Line[{o,p,m}],Line[{i,{1,Tan[x]}}],{Dashing[{0.02`}],Line[{o,{1,Tan[x]}}],Line[{p,i}]},Text["x",{(1/2) (1+Cos[x]),0.8` Sin[x]},{-1,0}],Text["\!\(\*SubscriptBox[\(s\), \(0\)]\)",{Cos[x],0.4` Sin[x]},{1,0}],Text["\!\(\*SubscriptBox[\(t\), \(0\)]\)",{1,0.6` Tan[x]},{-1,0}],Text["\!\(\*SubscriptBox[\(c\), \(0\)]\)",{((Cos[x])/2),0},{0,1}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

(Subscript[d, 0])=(Subscript[s, 0])=s         est donné.

Par le théorème de Pythagore

(Subscript[c, 0]^2)+(Subscript[s, 0]^2)=1         ⟹    (Subscript[c, 0])=(Sqrt[1-(s^2)])

Approximation numéro 1

Considérons la moitié du triangle isocèle qui est un triangle rectangle

n=1;o={0,0};x=1;i={1,0};p={Cos[(x/2)],0};m=.;
m={Cos[x],Sin[x]};n={Cos[(x/2)],Sin[(x/2)]};h=Cos[(x/2)] n;
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,h,o}],Line[{(i/(Cos[(x/2)])),n}],{Dashing[{0.02`}],Line[{i,m}],Line[(({i,o,m})/(Cos[(x/2)]))],Line[{o,n}]},Text["\!\(\*SubscriptBox[\(s\), \(1\)]\)",0.9` {Cos[(x/4)],Sin[(x/4)]},{1,0}],Text["\!\(\*SubscriptBox[\(t\), \(1\)]\)",1.05` {Cos[(x/4)],Sin[(x/4)]},{-1,0}],Text["\!\(\*SubscriptBox[\(c\), \(1\)]\)",0.5` n,{-1,1}]},AspectRatio->Automatic,PlotRange->All,ImageSize->{500,250}]]

Par le théorème de Pythagore

(Subscript[c, 1]^2)+(Subscript[s, 1]^2)=1

Par le théorème de Thalès

((Subscript[t, 1])/1)=((Subscript[s, 1])/(Subscript[c, 1]))        ⟹      ((2(Subscript[t, 1]))/1)=((2(Subscript[s, 1]))/(Subscript[c, 1]))    ⟹     ((Subscript[e, 1])/1)=((Subscript[d, 1])/(Subscript[c, 1]))

Approximation numéro n

Pour l'approximation numéro n, considérons maintenant la moitié d'un triangle isocèle.
L'angle au centre vaut (1/2)(x/(2^(n-1)))=(x/(2^n)).

x=1;o={0,0};m={Cos[x],Sin[x]};m1={Cos[(x/2)],Sin[(x/2)]};m2={Cos[(x/4)],Sin[(x/4)]};m3={Cos[(x/8)],Sin[(x/8)]};i={1,0};p={Cos[x],0};p1={Cos[(x/2)],0};
ms={Cos[-x],Sin[-x]};t={1,Tan[x]};ts={1,-Tan[x]};t1={1,Tan[(x/2)]};
g2=Graphics[{Circle[o,1,{0,(x/2)}],Line[{m1,p1}],Line[{i,t1}],Line[{o,p1}],Line[{o,m1}],Text["\!\(\*SubscriptBox[\(t\), \(n\)]\)",1.05` m2,{-1,0}],Text["\!\(\*SubscriptBox[\(s\), \(n\)]\)",Cos[(x/2)] m2],Text["\!\(\*SubscriptBox[\(c\), \(n\)]\)",0.5` p1,{0,1}],Text["1",0.5` m1,{0,-1}],{Dashing[{0.02`,0.02`}],Circle[o,1,{(x/2),(π/2)}],Line[{m1,t1}],Line[{p1,i}]},Text["1",0.5` m1,{0,-1}],Text["O",o,{1,1}],Text["I",i,{-1,1}],Text["M",m1,{0,-1}],Text["P",p1,{0,1}],Text["T",{1,Tan[(x/2)]},{-1,-1}]},BaseStyle->{FontSize->10},AspectRatio->Automatic,PlotRange->All]
Show[g2,ImageSize->{500,300}]

Notons

(Subscript[c, n])=hauteur du triangle isocèle (dans l'approximation numéro n);

D'après le théorème de Pythagore, on a la relation

(Rel. 1-2-4)           ((Subscript[c, n])^2)+((Subscript[s, n])^2)= 1

Dans la figure précédente, repérons les triangles OPM et OIT sont semblables; d'après le théorème de Thalès,

((Subscript[s, n])/(Subscript[c, n]))=((Subscript[t, n])/1)

Amplifions l'équation précédente par (2^n)

(2^n)(Subscript[t, n])=(((2^n)(Subscript[s, n]))/(Subscript[c, n]))

Utilisons les relations 1-2-1 et 1-2-2. On obtient

(Rel. 1-2-5)            (Subscript[e, n])=((Subscript[d, n])/(Subscript[c, n]))

Pour faciliter la mémorisation des notations utilisées, effectuons un rappel
	(Subscript[s, n]) (comme Sinus) = moitié de la base d'un triangle isocèle inscrit;
	(Subscript[c, n]) (comme Cosinus) = hauteur d'un triangle isocèle inscrit;
	(Subscript[d, n]) (comme par Défaut) = longueur de la ligne polygonale inscrite;
	(Subscript[t, n]) (comme Tangente) = moitié de la base d'un triangle circonscrit;
	(Subscript[e, n]) (comme par Excès) = longueur de la ligne polygonale circonscrite.

Exercice 1-2-1

Intériorisez la matière précédente. Pour ce faire, lisez attentivement, éventuellement plusieurs fois, le paragraphe intitulé "Approximation numéro n" puis fermez les notes de cours. Prenez votre plume et
 * refaites les figures précédentes du § 1.2
 * définissez les notations utilisées;
 * établissez les relations 1-2-1 à 1-2-5.

Passage de l'approximation numéro n à  l'approximation numéro (n+1)

Passage de l'approximation numéro 0 à l'approximation numéro 1

Nous cherchons des relations entre les deux approximations successives ((Subscript[c, 0]), (Subscript[d, 0])) et ((Subscript[c, 1]), (Subscript[d, 1]))

x=1;o={0,0};m1={Cos[(x/2)],Sin[(x/2)]};(m2={Cos[(x/4)],Sin[(x/4)]};);i={1,0};p1={Cos[(x/2)],0};is={-1,0};
g2=Graphics[{Line[{is,i}],Line[{m1,i}],Line[{m1,p1}],Line[Cos[(x/4)] {o,m2}],Line[{is,m1}],Text["D",is,{1,1}],Text["O",o,{0,1}],Text["I",i,{-1,1}],Text["M",m1,{-1,-1}],Text["P",p1,{0,1}],Text["N",m2,{-1,0}],{Dashing[{0.02`,0.02`}],Circle[o,1,{0,π}],Line[{o,m1}]}},BaseStyle->{FontSize->10},AspectRatio->Automatic,PlotRange->All];
Show[g2,ImageSize->{500,200}]

La figure précédente représente  l'approximation numéro 0. Avec les définitions usuelles, on a

OI=1
DI=2
(Subscript[d, 0])=(Subscript[s, 0])=PM=s
(Subscript[c, 0])=OP=(Sqrt[1-(Subscript[s, 0]^2)])=(Sqrt[1-(s^2)])                     (voir Rel. 1-2-4)
DP=1+(Subscript[c, 0])

On a aussi représenté l'approximation numéro 1 par les segments

IN=NM=(Subscript[s, 1])
ON=(Subscript[c, 1])

Les triangles OIN et DIM sont homothétiques et le rapport d'homothétie est 2. En particulier

DM=2 ON = 2 (Subscript[c, 1])

Dans le triangle rectangle DIM, le théorème d'Euclide dit que

(DM^2)=DP·DI
(((2 (Subscript[c, 1])))^2)=(1+(Subscript[c, 0]))·2
2 (Subscript[c, 1]^2)=1+(Subscript[c, 0])

(Subscript[c, 1])=(Sqrt[((1+(Subscript[c, 0]))/2)])

Par ailleurs, l'aire du triangle OIM peut se calculer de plusieurs manières.

(1/2)OI·PM=(1/2)IM·ON
(1/2)1·(Subscript[s, 0])=(1/2)(2(Subscript[s, 1]))·(Subscript[c, 1])
(Subscript[s, 1])=((Subscript[s, 0])/(2(Subscript[c, 1])))

Amplifions par 2 puis utilisons les relations 1-2-1 et 1-2-2

2(Subscript[s, 1])=((2(Subscript[s, 0]))/(2(Subscript[c, 1])))=((Subscript[s, 0])/(Subscript[c, 1]))

(Subscript[d, 1])=((Subscript[d, 0])/(Subscript[c, 1]))

Exercice 1-2-2: passage de l'approximation numéro 1 à l'approximation numéro 2

Nous cherchons des relations entre deux approximations successives ((Subscript[c, 1]), (Subscript[d, 1])) et ((Subscript[c, 2]), (Subscript[d, 2])).
Représentez graphiquement la situation puis démontrez que

(Subscript[c, 2])=(Sqrt[((1+(Subscript[c, 1]))/2)])

(Subscript[d, 2])=((Subscript[d, 1])/(Subscript[c, 2]))

Passage de l'approximation numéro n à l'approximation numéro (n+1)

Nous cherchons des relations entre deux approximations successives ((Subscript[c, n]), (Subscript[d, n])) et ((Subscript[c, n+1]), (Subscript[d, n+1]))

x=1;o={0,0};m1={Cos[(x/2)],Sin[(x/2)]};(m2={Cos[(x/4)],Sin[(x/4)]};);i={1,0};p1={Cos[(x/2)],0};is={-1,0};
g2=Graphics[{Line[{is,i}],Line[{m1,i}],Line[{m1,p1}],Line[Cos[(x/4)] {o,m2}],Line[{is,m1}],Text["D",is,{1,1}],Text["O",o,{0,1}],Text["I",i,{-1,1}],Text["M",m1,{-1,-1}],Text["P",p1,{0,1}],Text["N",m2,{-1,0}],{Dashing[{0.02`,0.02`}],Circle[o,1,{0,π}],Line[{o,m1}]}},BaseStyle->{FontSize->10},AspectRatio->Automatic,PlotRange->All];
Show[g2,ImageSize->{500,200}]

La figure précédente représente  l'approximation numéro n. Avec les définitions usuelles, on a

OI=1
DI=2
(Subscript[s, n])=PM
(Subscript[c, n])=OP
DP=1+(Subscript[c, n])

On a aussi représenté l'approximation numéro (n+1) par les segments

IN=NM=(Subscript[s, n+1])
ON=(Subscript[c, n+1])

Les triangles OIN et DIM sont homothétiques et le rapport d'homothétie est 2. En particulier

DM=2 ON = 2 (Subscript[c, n+1])

Dans le triangle rectangle DIM, le théorème d'Euclide dit que

(DM^2)=DP·DI
(((2 (Subscript[c, n+1])))^2)=(1+(Subscript[c, n]))·2
2 (Subscript[c, n+1]^2)=1+(Subscript[c, n])

(Rel. 1-2-6)             (Subscript[c, n+1])=(Sqrt[((1+(Subscript[c, n]))/2)])

Par ailleurs, l'aire du triangle OIM peut se calculer de plusieurs manières.

(1/2)OI·PM=(1/2)IM·ON
(1/2)1·(Subscript[s, n])=(1/2)(2(Subscript[s, n+1]))·(Subscript[c, n+1])
(Subscript[s, n+1])=((Subscript[s, n])/(2(Subscript[c, n+1])))

Amplifions par (2^(n+1)) puis utilisons les relations 1-2-1 et 1-2-2

(2^(n+1))(Subscript[s, n+1])=(((2^(n+1))(Subscript[s, n]))/(2(Subscript[c, n+1])))=(((2^n)(Subscript[s, n]))/(Subscript[c, n+1]))

(Relation 1-2-7)           (Subscript[d, n+1])=((Subscript[d, n])/(Subscript[c, n+1]))

De plus, les suites (Subscript[s, n]), (Subscript[d, n]) et  (Subscript[c, n])  sont strictement croissantes tandis que les suites (Subscript[t, n]) et  (Subscript[e, n]) sont strictement décroissantes.

Exercice 1-2-3

Intériorisez la matière précédente. Pour ce faire, lisez attentivement, éventuellement plusieurs fois, le paragraphe intitulé "Passage de l'approximation numéro n à  l'approximation numéro (n+1)" puis fermez les notes de cours. Prenez votre plume et
 * refaites la dernière figure;
 * définissez les notations utilisées;
 * établissez les relations 1-2-6 et 1-2-7.

Calcul par récurrence (On dit aussi "Calcul par induction")

Comment calculer  (Subscript[d, n]) et (Subscript[e, n]) ? Il n'est pas nécessaire de disposer de formules explicites pour calculer directement  (Subscript[d, n]) et (Subscript[e, n]). Nous calculerons ces approximations par récurrence (on dit aussi par induction) de la manière suivante.

On commence par calculer l'approximation numéro 0. On dit qu'on effectue l'amorçage du calcul.

s est donné

(Subscript[c, 0])=(Sqrt[1-(Subscript[s, 0]^2)])=(Sqrt[1-(s^2)])                                (voir Rel. 1-2-4)

(Subscript[d, 0])=(Subscript[s, 0])=s

Lorsqu'on connaît l'approximation ((Subscript[c, n]), (Subscript[d, n])), on peut calculer l'approximation suivante  ((Subscript[c, n+1]), (Subscript[d, n+1])) de la manière suivante

(Subscript[c, n+1])=(Sqrt[((1+(Subscript[c, n]))/2)])                             (voir Rel. 1-2-6)

(Subscript[d, n+1])=((Subscript[d, n])/(Subscript[c, n+1]))                                         (voir Rel. 1-2-7)

Les relations précédentes peuvent aussi s'écrire sous la forme

(Subscript[c, n+1])=(Sqrt[((1+(Subscript[c, n]))/2)           ])

(Subscript[d, n+1])=((Subscript[d, n])/(Subscript[c, n+1]))=((Subscript[d, n])/(Sqrt[((1+(Subscript[c, n]))/2)]))   =(Subscript[d, n]) (Sqrt[(2/(1+(Subscript[c, n])))])

Ainsi, à partir de l'approximation numéro 0, on peut calculer l'approximation numéro 1,
à partir de l'approximation numéro 1, on peut calculer l'approximation numéro 2,
à partir de l'approximation numéro 2, on peut calculer l'approximation numéro 3,
et ainsi de suite jusqu'à ce que l'on atteigne la précision souhaitée.
En résumé :

(Rel. 1-2-8)                   (Subscript[c, 0])=(Sqrt[1-(s^2)])   
	(Subscript[d, 0])=s 
	(Subscript[c, n+1])=(Sqrt[((1+(Subscript[c, n]))/2)])
	(Subscript[d, n+1])=(Subscript[d, n]) (Sqrt[(2/(1+(Subscript[c, n])))])

Calcul de l'erreur

L'algorithme d'Archimède produit des résultats qui encadrent x au moyen d'une valeur par défaut et d'une valeur par excès. Imaginons par exemple,

0.4815 < x<0.4817

Nous voulons maintenant écrire ce résultat sous la forme suivante

x= 0.4816 ± 0.0001

Généralisons. L'encadrement

(Subscript[d, n])<x<(Subscript[e, n])

peut aussi s'écrire sous la forme

x=(Subscript[x, n]) ± (Subscript[Δx, n])          où          (Subscript[x, n])=(((Subscript[d, n])+(Subscript[e, n]))/2)        et           (Subscript[Δx, n])=(((Subscript[e, n])-(Subscript[d, n]))/2)

Show[Graphics[{Line[{{0,0},{1,0}}],Arrow[{0.75`,-0.03`},{0.5`,-0.03`}],Arrow[{0.75`,-0.03`},{1,-0.03`}],Text["\!\(\*SubscriptBox[\(d\), \(n\)]\)",{0,0},{0,1}],Text["\!\(\*SubscriptBox[\(x\), \(n\)]\)",{0.5`,0},{0,1}],Text["\!\(\*SubscriptBox[\(e\), \(n\)]\)",{1,0},{0,1}],Text["\!\(\*SubscriptBox[\(Δx\), \(n\)]\)",{0.75`,-0.05`}]}],AspectRatio->0.1`,PlotRange->All]

Dans notre calcul, on obtient

(Subscript[e, n])=((Subscript[d, n])/(Subscript[c, n]))                                     (voir Rel. 1-2-5)

(Subscript[Δx, n]) =(((Subscript[e, n])-(Subscript[d, n]))/2)= ((((Subscript[d, n])/(Subscript[c, n]))-(Subscript[d, n]))/2)= (Subscript[d, n])(((1/(Subscript[c, n]))-1)/2) = (Subscript[d, n])((1-(Subscript[c, n]))/(2 (Subscript[c, n])))

Finalement

(Rel. 1-2-9)                   (Subscript[Δx, n]) = (((Subscript[d, n]) (1-(Subscript[c, n])))/(2 (Subscript[c, n])));  
    (Subscript[x, n])= (Subscript[d, n]) +  (Subscript[Δx, n])

Exercice 1-2-4

Intériorisez la matière précédente. Pour ce faire, lisez attentivement, éventuellement plusieurs fois, les deux paragraphes intitulés "Calcul par récurrence"  et "Calcul de l'erreur" puis masquez les deux paragraphes en question. Prenez votre plume et retrouvez comment on peut calculer la suite des approximations successives de la longeur d'arc x (Relations 1-2-8 et 1-2-9).

Exercice 1-2-5

Avec la méthode précédente et une calculatrice, calculez les premières approximations du nombre (π/2). Plus précisément, calculez successivement

(Subscript[c, 0]),(Subscript[d, 0]),    
(Subscript[c, 1]),(Subscript[d, 1]),
(Subscript[e, 2]),(Subscript[d, 2]),
(Subscript[c, 3]),(Subscript[d, 3])

puis, au lieu d'écrire l'approximation    (Subscript[d, 3])<(π/2)<(Subscript[e, 3]),     écrivez le résultat sous la forme

π=(Subscript[x, 3])±(Subscript[Δx, 3])

§ 1.3 Calcul de (π/2) avec Mathematica

Pour l'arc (π/2), la demi-corde est s = 1 d'où l'on tire les valeurs d'amorçage

(Subscript[c, 0])=0
(Subscript[d, 0])=s                                       (voir Rel. 1-2-8)

Rappelons aussi les formules du calcul par récurrence

(Subscript[c, n+1])=(Sqrt[((1+(Subscript[c, n]))/2)           ])

(Subscript[d, n+1])=(Subscript[d, n]) (Sqrt[(2/(1+(Subscript[c, n])))])               (voir Rel. 1-2-8)

Clear[successeur];
successeur[{c_,d_}]:=N[{(Sqrt[((1+c)/2)]),d*(Sqrt[(2/(1+c))])}]

1-ère méthode :  avec un nombre fixé d'itérations

Exemple avec 10 itérations

tabelle=NestList[successeur,{0,1},10];

NumberForm[TableForm[tabelle],16]

{c,d}=Last[tabelle]

Δx=d ((1-c)/(2 c))

x=d+Δx

AccountingForm[x±Δx,{16,7}]

Pour vérifier le résultat, comparons avec la valeur que donne Mathematica pour (π/2) avec un nombre comparable de chiffres significatifs. Observez que l'écart tombe dans la marge d'erreur.

N[(π/2),8]

2-ème méthode : à la précision du processeur arithmétique :

Lorsqu'on calcule en virgule flottante (la partie mantisse est limitée à 16 chiffres), au lieu d'avoir

(Subscript[c, n])< 1                  et               (Subscript[d, n+1])>(Subscript[d, n])

à cause des erreurs de troncature, il arrivera un moment où

(Subscript[c, n])≈ 1                  et               (Subscript[d, n+1])≈(Subscript[d, n])

tabelle=NestList[successeur,{0,1},30];

NumberForm[TableForm[tabelle],16]

Cette propriété est mise à profit pour calculer à la précision du processeur. Dans cette situation, il n'est plus nécessaire de calculer l'erreur

(Subscript[Δx, n])≈0                 et              (Subscript[x, n])≈(Subscript[d, n])              (à la précision du processeur)

{e,x}=FixedPoint[successeur,{0,1}]

NumberForm[x,16]

L'erreur est alors du même ordre de grandeur que la précision du processeur arithmétique.

N[(π/2),16]

§ 1.4 Fonctions cyclométriques

Définiton du radian

La mesure d'un angle en radians est égale à la longueur d'arc que cet angle découpe sur le cercle de rayon 1. En particulier, on a

180°=π          (radians)

C'est ainsi qu'un radian vaut environ 57.296°.
Au lieu de dire que         sin(30°) = 0.5     nous dirons

sin((π/6))=(1/2)

Dans la fig. 1-2-1, la fonction sinus est la fonction qui, à x, fait correspondre s

x=1;o={0,0};m={Cos[x],Sin[x]};i={1,0};p={Cos[x],0};
Show[Graphics[{Circle[o,1,{0,x}],Line[{i,o,m,p}],Text["s",{Cos[x],0.4` Sin[x]},{1,0}],Text["x",{Cos[(x/2)],Sin[(x/2)]},{-1,0}],{Dashing[{0.02`,0.02`}],Circle[o,1,{x,π}]}}],BaseStyle->{FontSize->12},PlotRange->{-0.1`,1},AspectRatio->Automatic,PlotLabel->"Fig. 1-2-1",ImageSize->{200,150}]

x(Overscript[⟶, sin])s=sin(x)

Nous pouvons maintenant reformuler le problème de la longueur d'arc énoncé au début du § 1.2 dans les termes suivants :

Problème 	On donne la valeur s du sinus d'un angle.
		On cherche la mesure x de l'angle correspondant.

Définition de Arcsin

Arcsin est la fonction réciproque de la fonction sinus. Par exemple, nous dirons que

Arcsin((1/2))=(π/6)

Dans la fig. 1-2-1, la fonction Arcsin est la fonction qui, à s, fait correspondre x

s(Overscript[→, Arcsin])x=Arcsin(s)

Nous pouvons maintenant reformuler le problème de la longueur d'arc énoncé au début du § 1.2 dans les termes suivants :

Problème 	On donne le nombre s (qui vérifie -1 ≤ s ≤ 1).
		Calculez x = Arcsin(s)

Calcul de ArcSinus en radians

Etant donné le sinus s, calculer l'angle x (en radians).
Il s'agit du problème de la longueur d'arc tel que nous l'avons posé au début du § 1.2
et dont la solution est donnée par les relations 1-2-8.

Clear[successeur];
successeur[{c_,d_}]:=N[{(Sqrt[((1+c)/2)]),d*(Sqrt[(2/(1+c))])}]

s=(1/2);
FixedPoint[successeur,{(Sqrt[1-(s^2)]),s}]

FixedPoint[successeur,{(Sqrt[1-(s^2)]),s}][[2]]

Vérifions le résultat

N[(π/6),6]

Il est préférable de créer une fonction. Notations :
  * Arcsin(s)	en mathématiques;
  * ArcSin[s] 	pour la fonction définie dans le Kernel de Mathematica ;
  * arcSinus[s]	pour la fonction calculée avec la méthode d'Archimède expliquée dans ce cours.

Clear[arcSinus,s];
arcSinus[s_]:=FixedPoint[successeur,{(Sqrt[1-(s^2)]),s}][[2]]

arcSinus[1]

Clear[erreur];
erreur[x_]:=arcSinus[x]-ArcSin[x]

erreur[1]

Exercice 1-4-1

La fonction sinus, restreinte aux intervalles indiqués ci-dessous, est une fonction bijective :

sin: [((-π)/2), (π/2)] ⟶ [-1, 1]

Avec une calculatrice, complétez la tabelle suivante:

<<Tableaux`;
afficheTableau[{"x","sin(x)"},None,{Table[NumberForm[N[x],{5,3}],{x,((-π)/2),(π/2),(π/8)}],Table["",{x,((-π)/2),(π/2),(π/8)}]}]

La fonction réciproque de sinus existe. Elle s'appelle "Arc sinus" et est notée Arcsin

Arcsin: [-1, 1]   ⟶ [((-π)/2), (π/2)]

Complétez la tabelle suivante :

<<Tableaux`;
afficheTableau[{"s","Arcsin(s)"},None,{Table["",{x,((-π)/2),(π/2),(π/8)}],
Table[NumberForm[N[x],{5,3}],{x,((-π)/2),(π/2),(π/8)}]}]

Dans un même repère, superposez les graphiques (faits au crayon) des fonctions sin et Arcsin.

Que donne

Arcsin(sin(1.2))=
sin(Arcsin(0.8))=

Généralisez.

Exercice 1-4-2

a)	Redéfinissez la fonction "arcSinus" pour qu'elle donne les angles en degrés.
b)	Dressez une table des valeurs des arcSin[s] pour s ϵ {0, 0.1, 0.2, ..., 0.9, 1}.
	Vérifiez que les résultats obtenus soient corrects en les recalculant avec un autre moyen
	(accessoire "Calculatrice" de Windows, calculatrice de poche,  Mathematica, ...).

Exercice 1-4-3

a)	Donnez la définition mathématique de la fonction Arccos(c).
	Indication : utilisez une démarche semblable à celle de l'exercice 1-4-1.
b)	Calculez la fonction "arcCosinus[c]" en radians par la méthode d'Archimède.
	Vérifiez que les résultats soient corrects.
	Indication : calculez d'abord s au moyen de la relation 1-2-4.

Exercice 1-4-4

t étant donné, on appelle x= Arctan(t) la mesure de l'angle correspondant (voir Fig. 1-4 ci-après).
Calculez la fonction "arcTangente[t]" en radians par la méthode d'Archimède.
Vérifiez que les résultats soient corrects.
Indication : calculez d'abord s au moyen de la relation

(s/c)=(t/1)

x=2;o={0,0};m={Cos[x],Sin[x]};m1={Cos[(x/2)],Sin[(x/2)]};m2={Cos[(x/4)],Sin[(x/4)]};m3={Cos[(x/8)],Sin[(x/8)]};i={1,0};p={Cos[x],0};p1={Cos[(x/2)],0};
ms={Cos[-x],Sin[-x]};t={1,Tan[x]};ts={1,-Tan[x]};t1={1,Tan[(x/2)]};
g2=Graphics[{Circle[o,1,{0,(x/2)}],Line[{m1,p1}],Line[{i,t1}],Line[{o,p1}],Line[{o,m1}],Text["t",{1,1.2`},{-1,0}],Text["x",0.9` m2,{-1,0}],Text["s",Cos[(x/2)] m2],Text["c",0.5` p1,{0,1}],Text["1",0.5` m1,{0,-1}],{Dashing[{0.02`,0.02`}],Circle[o,1,{(x/2),(π/2)}],Line[{m1,t1}],Line[{p1,i}]}},BaseStyle->{FontSize->10},AspectRatio->Automatic,PlotRange->All,PlotLabel->"Fig. 1-4"];
Show[g2,ImageSize->{250,250}]

Une méthode puissante : la récurrence

De l'étude de ce chapitre, dégagez bien la structure suivante.

Pour calculer un nombre x, on construit une suite d'approximations qui tend vers x

(Subscript[x, 0]), (Subscript[x, 1]), (Subscript[x, 2]), ..., (Subscript[x, n]), (Subscript[x, n+1]), ...

Plutôt que de déterminer une formule explicite pour calculer (Subscript[x, n]) en fonction des données, on détermine plus facilement une formule pour calculer (Subscript[x, n+1]) en fonction de l'approximation précédente (Subscript[x, n]) :

(Subscript[x, 0]) donné,
  (Subscript[x, n+1])= successeur((Subscript[x, n]))

où successeur est une fonction que l'on itère. La valeur x que l'on veut déterminer est

x=point fixe de la fonction successeur en partant de la valeur initiale (Subscript[x, 0])

§ 2 Fonctions trigonométriques

§ 2.1 Calcul numérique des fonctions trigonométriques sur le premier quadrant

Calcul numérique de sin(x) pour x ϵ [0;(π/2)]

Algorithme d'Archimède en sens inverse

On peut se représenter le calcul de x = Arcsin[s] par l'algorithme d'Archimède comme une suite finie d'itérations

s=(Subscript[d, 0])->(Subscript[d, 1])->...->(Subscript[d, n])->(Subscript[d, n+1])->...->(Subscript[d, N])≈x

(dans laquelle intervient encore une variable auxiliaire (Subscript[c, n])), qui part de s donné et qui aboutit à x cherché. 
N représente la valeur finale de n, c'est-à-dire

n  ϵ  {0,1, ...,N}

Une idée simple pour calculer le sinus consiste à parcourir cette chaîne d'approximations en sens inverse, en partant de x donné et en aboutissant à s cherché :

x≈(Subscript[d, N])->(Subscript[d, N-1])->...->(Subscript[d, n])->(Subscript[d, n-1])->...->(Subscript[d, 1])->(Subscript[d, 0])=s

On peut reformuler cette idée en remplaçant les (Subscript[d, n]) par des (Subscript[s, n]) (voir Rel. 1-2-1).

(x/(2^N))≈(Subscript[s, N])->(Subscript[s, N-1])->...->(Subscript[s, n])->(Subscript[s, n-1])->...->(Subscript[s, 1])->(Subscript[s, 0])=s

Il nous reste essentiellement à déterminer une relation de récurrence qui, étant donné (Subscript[s, n]), nous permettrait de calculer l'élément précédent (Subscript[s, n-1]).

Relation de récurrence rétrograde

x=2;o={0,0};m1={Cos[(x/2)],Sin[(x/2)]};(m2={Cos[(x/4)],Sin[(x/4)]};);i={1,0};p1={Cos[(x/2)],0};is={-1,0};
g2=Graphics[{Line[{is,i}],Line[{m1,i}],Line[{m1,p1}],Line[{is,m1}],Text["D",is,{1,1}],Text["O",o,{0,1}],Text["I",i,{-1,1}],Text["M",m1,{-1,-1}],Text["P",p1,{0,1}],{Dashing[{0.02`,0.02`}],Circle[o,1,{0,π}],Line[{o,m1}]}},BaseStyle->{FontSize->10},AspectRatio->Automatic,PlotRange->All,PlotLabel->"Fig. 2-1"];
Show[g2,ImageSize->{300,200}]

Avec les notations du § 1-2, on a

PM=(Subscript[s, n-1])                                                IM=2 (Subscript[s, n])

DM=(Sqrt[(DI^2)-(IM^2)])=(Sqrt[4-4 (Subscript[s, n]^2)])

Calculons l'aire du triangle DIM de deux manières différentes:

(1/2)DI·PM=(1/2)IM·DM

(1/2)2·(Subscript[s, n-1])=(1/2) 2 (Subscript[s, n])·(Sqrt[4-4 (Subscript[s, n]^2)])

(Subscript[s, n-1])= (Subscript[s, n])·(Sqrt[4-4 (Subscript[s, n]^2)])

Finalement, on obtient les formules de récurrence rétrograde

(Rel. 2-1)                                      (Subscript[s, N])=(x/(2^N))
    	(Subscript[s, n-1])= (Subscript[s, n])·(Sqrt[4-4 (Subscript[s, n]^(2         ))])
	    n=N, N-1, ..., 1

Programme Mathematica

Notations :
	* sin(x)		désigne la notation mathématique usuelle;
	* Sin[x]		désigne la fonction sinus définie dans le noyau de Mathematica;
	* sinus[x]	désigne la fonction sinus calculée au moyen de la 
			méthode d'Archimède en sens inverse.

Dans l'algorithme d'Archimède en sens inverse, le nombre N doit être déterminé au début du calcul.  N est choisi empiriquement en effectuant des tests numériques. Par exemple, dans le calcul ci-dessous, on a choisi le plus petit N pour lequel la valeur absolue de l'erreur soit inférieure à environ 2·(10^(-15)) sur l'intervalle [0; (π/2)]. Par tâtonnement, on a trouvé N = 23 (voir exercice 2-1-2).

Clear[predecesseur];
predecesseur[s_]:=N[s (Sqrt[4-4 (s^2)])]

Clear[sinus];
sinus[x_]:=Nest[predecesseur,(x/(2^23)),23]

NumberForm[sinus[(π/6)],16]

Clear[erreur];
erreur[x_]:=sinus[x]-Sin[x]

erreur[(π/6)]

Exercice 2-1-1

a)	Redéfinissez la fonction sinus[x] pour qu'elle calcule le sinus d'angles donnés en degrés.
b)	Dressez une table des valeurs de la fonction sinus[x] pour x ϵ {0, 10°, 20°, ..., 90°}.
	Vérifiez que les résultats obtenus soient corrects en les recalculant avec un autre moyen
	(accessoire "Calculatrice" de Windows, calculatrice de poche,  Mathematica, ...).

Exercice 2-1-2

a)	Pour N = 23, faites une tabelle qui indique comment l'erreur dépend de l'angle
	sur l'intervalle [0; (π/2)]. Pratiquement, on choisira une liste d'angles Range[0, (π/2), (π/50)].
b)	Déterminez le plus petit N pour que l'erreur soit ≤ (10^(-15)) sur tout l'intervalle [0; (π/2)].

Calcul numérique de cos(x) pour x ϵ [0;(π/2)]

Exercice 2-1 -3

Définissez la fonction cosinus[x] pour x ϵ [0;(π/2)].
Testez le programme.
Indication : ramenez-vous au calcul de sin(x).

Calcul numérique de tan(x) pour x ϵ [0; (π/2)[

Exercice 2-1 -4

Définissez la fonction tangente[x] pour x ϵ [0; (π/2)[.
Testez le programme.

§ 2.2 Réduction à l'intervalle de référence

Pour certaines fonctions, il suffit de savoir les calculer sur un intervalle particulier pour savoir les calculer partout. Nous avons déjà exploité cette idée pour les fonctions exponentielles et logarithmiques. Nous allons maintenant appliquer cette méthode aux fonctions trigonométriques.

Dans ce paragraphe, nous nous intéressons au calcul de
	sin(x) et cos(x) pour tout réel x et de
	tan(x) pour tout x appartenant à l'ensemble de définition de la tangente.
L'idée est de nous ramener sur le premier quadrant puis d'utiliser la méthode numérique du § 2-1.

Calcul de sin(x) pour x ϵ ℝ

Première étape : se ramener à l'intervalle [0; 2 π[

On utilise la propriété  "la fonction sinus est périodique de période 2 π"

Clear[sinus];
sinus[x_]:=sinus[Mod[x, 2π]]/;x<0 ∨ x≥ 2 π

Le symbole "Mod" se lit "modulo"; il donne le reste de la division entière;
c'est ainsi que Mod[25, 7] vaut 4;
le symbole /; se lit "à la condition que";
le symbole ∨ se lit "ou".
Nous avons défini une règle de transformation conditionnelle dont voici l'effet:

sinus[104]

sinus[104.]

Deuxième étape : se ramener à l'intervalle [0; π[

On utilise la propriété "sin(x-π) = - sin(x)"

sinus[x_]:=-sinus[x-π]/;x≥π

Cette deuxième règle ne remplace pas la première mais est exécutée après elle.

sinus[104]

sinus[104.]

Troisème étape : se ramener à l'intervalle [0; (π/2)]

On utilise la propriété "les sinus d'angles suppémentaires sont égaux"

sinus[x_]:=sinus[π-x]/;x>(π/2)

sinus[104]

sinus[104.]

Résumé des trois premières étapes:
pour calculer la fonction sinus sur l'ensemble des réels, il suffit de savoir calculer le sinus sur l'intervalle [0; (π/2)].

Quatrième étape : calcul du sinus sur l'intervalle [0; (π/2)]

Nous avons vu au § 2-1 comment calculer le sinus d'un angle

Clear[predecesseur];
predecesseur[s_]:=N[s (Sqrt[4-4 (s^2)])];
sinus[x_]:=Nest[predecesseur,(x/(2^23)),23]

sinus[104]

sinus[104]-Sin[104]

Règles de transformations

?sinus

L'ordre des règles joue un rôle : Mathematica applique les règles dans l'ordre.
Dans notre exemple, la dernière règle est inconditionnelle et achève le calcul.

Calcul numérique de cos(x) pour x ϵ ℝ

Exercice 2-2 -1

Définissez la fonction  cosinus[x]  pour tout x réel.
Testez le programme.

Calcul numérique de tan(x) pour x ϵ (Subscript[D, tan])

Exercice 2-2 -2

Définissez la fonction  tangente[x]  pour n'importe quel angle x où la fonction tangente est définie.
Testez le programme en calculant   tangente[100].