Solution d'une équation par encadrement

Page
d' Accueil
de mon site.





Recherche algorithmique d'une solution
pour une équation particulière.
Fonction
A(x)=(cos x+1).sin x

Une étude mathématique a montré que cette fonction est :

  • Nullle pour x =0
  • Croît jusqu'à A(pi/3) ~1,299 ; son maximum. ( pi/3 ~ 1,047 )
  • Puis décroît jusqu'à : A(pi/2) =1 ; ( pi/2 ~ 1,570 )
  • Qu'elle traverse la valeur 1 pour x dans l'intervalle ]0,1[
x
0
x=?
1
pi/3 ~ 1,047
pi/2 ~ 1,570
A(x)
0
1
 
~1,29 Max
1

Nous cherchons la solution de A(x) = 1 pour x dans l'intervalle ]0,1[

Ecrire un algorithme calculant cette solution par interpolations successives
dans l'intervalle ]0,1[ et avec une tolérance E=0.005
Fourchette E ( modifiable )
A
B
B - A
(A+B) / 2
A(C)
n

Fonctions JavaScript

//--------------
// Fonction A(x)
//--------------

function AireTrapeze(x) {
return (Math.cos(x)+1) * Math.sin(x) ;
}
//-----------------------------------------------------------
//Voici le programme de l'interpolation, écrit en JavaScript.
//Celui qu se déclenche par la touche [D'un seul coup]
//-----------------------------------------------------------
function Finale(){

raz(); //Fonction de remise à zéro des registres (non transcrite ici)

//Réservations d'emplacement mémoire pour A,B,C,la fonction A(x), la tolérance E, etc...
var e = document.FormCalcul.nb_E.value;
var a= eval( document.FormCalcul.nb_A.value ); //Entrée de la valeur affichée dans la fenêtre de A
var b= eval( document.FormCalcul.nb_B.value ); //Entrée de la valeur affichée dans la fenêtre de B
var c ; var A; //Emplacements pour c et la valeur de A(x)
var a_,b_,c_; //Emplacements auxiliaires

//Boucle "tant que..."
do
{
c_=c = eval((a+b)/2);
A= AireTrapeze(c); //C'est la fonction A(x)
a_=a; b_=b;
if( A < 1 ) a=c; else b=c;
document.FormCalcul.nb_n.value=nb_n_++; //incrémentation du nombre d'itérations nb_n_
} while((b - a) > e);

//Sert seulement à préparer les valeurs de départ pour les fonctions "Pas avant" & "Pas arrière"
a=a_;b=b_;c=c_;
nb_n_--;

A= AireTrapeze(c);
document.FormCalcul.nb_A.value = a;
document.FormCalcul.nb_B.value = b;
document.FormCalcul.B_A.value = b-a;
document.FormCalcul.nb_C.value = c;
document.FormCalcul.Aire.value = A;

alert("Fini");
}
//-----------------------------------------------------------------------------------------------