begin process at 2012 02 11 04:13:50
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > POUR LES MATHEUX, DÉFINITION DE L'EXPONENTIELLE, SINUS, COSINUS

POUR LES MATHEUX, DÉFINITION DE L'EXPONENTIELLE, SINUS, COSINUS


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :math, exp, sinus, cosinus, exponentielle Niveau :Débutant Date de création :24/10/2005 Date de mise à jour :24/10/2005 23:46:57 Vu / téléchargé :18 620 / 199

Auteur : algori

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ben voila une petite source.
Je pense qu'elle va surtout intéresser les matheux.
Elle montre d'où vient la fonction exponentielle, sinus, cosinus, PI,..., grâce à une "résolution" de séries.
C'est peut-être utile pour le calcul,... Je vous fais confiance, je pense que vous y trouverez une utilité (c'est déjà "didactique"). Toujours est-il, ce sont les définitions officielles de l'expo, cosinus, etc.
Pour certaines fonctions, il est possible qu'il y ait des problèmes de précision. Il faudra alors régler le nombre de sommes pour la série.
@++

Source

  • /* DEFINITION DE L'EXPONENTIELLE AINSI QUE DU COSINUS ET DU SINUS */
  • /*EXPONENTIELLE*/
  • /*On définit l'exponentielle comme une série tel que
  • la somme de n=0 jusqu'à l'infini du nombre à la puissance n
  • sur la factorielle de n.
  • /**********Fonction factorielle**********/
  • function factor(h) {
  • return (h == 0)?1:(h * factor(h - 1)); //exemple : 5! = 5*4*3*2*1 = 120
  • }
  • /****************************************/
  • /*********Fonction exponentielle*********/
  • /* J'ai eu quelques soucis avec la fonction puissance
  • à cause des infinis. J'ai donc utiliser la fonction
  • prédéfinie Math.pow(). La fonction a été testée jusqu'à 100,
  • ensuite les nombres sont trop énormes pour cette fonction.*/
  • function expo(z){ //la base est e = 2.718281828...
  • var som = 0;
  • for(n=0;n<155;n++)
  • {
  • val = (Math.pow(z,n))/(factor(n));
  • som = som + val;
  • }
  • return som;
  • }
  • /****************************************/
  • /******************PI********************/
  • function pi(){
  • var som = 0;
  • for(n=0;n<25;n++) //25 est amplement suffisant car elle converge vite.
  • {
  • var N = 2*n;
  • var N2 = 4*n+1;
  • val = (factor(N))/(Math.pow(2,N2)*factor(n)*factor(n)*(2*n+1));
  • som = som + val;
  • }
  • som = som * 6;
  • return som;
  • }
  • /****************************************/
  • /*****************SINUS******************/
  • function sinus(nb){
  • var som = 0;
  • for(n=0;n<20;n++) //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand
  • {
  • val = (Math.pow(-1,n)*Math.pow(nb,2*n+1))/(factor(2*n+1));
  • som = som + val;
  • }
  • return som;
  • }
  • /****************************************/
  • /****************COSINUS*****************/
  • function cosinus(nb){
  • var som = 0;
  • for(n=0;n<20;n++) //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand
  • {
  • val = (Math.pow(-1,n)*Math.pow(nb,2*n))/(factor(2*n));
  • som = som + val;
  • }
  • return som;
  • }
  • /****************************************/
  • /***************TANGEANTES***************/
  • function tang(nb){
  • val = sinus(nb)/cosinus(nb);
  • return val;
  • }
  • /****************************************/
  • /***************ARC SINUS****************/
  • function arcsin(nb){
  • var som = 0;
  • for(n=0;n<30;n++) //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand
  • {
  • val = (factor(2*n)*Math.pow(nb,2*n+1))/(Math.pow(2,2*n)*factor(n)*factor(n)*(2*n+1));
  • som = som + val;
  • }
  • return som;
  • }
  • /****************************************/
  • /**************ARC COSINUS***************/
  • /*On définit l'ARC COSINUS par :
  • arccos x = pi/2 - arcsin x
  • */
  • function arccos(nb){
  • return pi()/2 - arcsin(nb);
  • }
  • /****************************************/
  • /**************ARC TANGEANTE*************/
  • function arctg(nb){
  • var som = 0;
  • for(n=0;n<40;n++) //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand
  • {
  • val = (Math.pow(-1,n)*Math.pow(nb,2*n+1))/(2*n+1)
  • som = som + val;
  • }
  • return som;
  • }
  • /****************************************/
  • /***********SINUS HYPERBOLIQUE***********/
  • function sinh(nb){
  • return (expo(nb)-expo(-nb))/2;
  • }
  • /****************************************/
  • /**********COSINUS HYPERBOLIQUE**********/
  • function cosh(nb){
  • return (expo(nb) + expo(-nb))/2;
  • }
  • /****************************************/
  • /*********TANGEANTE HYPERBOLIQUE*********/
  • function tanh(nb){
  • return (1-expo(-2*nb))/(1+expo(-2*nb));
  • }
  • /****************************************/
  • /**********SECANTE HYPERBOLIQUE**********/
  • function sech(nb){
  • return 1/cosh(nb);
  • }
  • /****************************************/
  • /*********COSECANTE HYPERBOLIQUE*********/
  • function cosech(nb){
  • return 1/sinh(nb);
  • }
  • /****************************************/
  • /********COTANGEANTE HYPERBOLIQUE********/
  • function cotanh(nb){
  • return cosh(nb)/sinh(nb);
  • }
  • /****************************************/
  • document.write("Exponentielle de 1 : " + expo(1) + "<br>"+
  • "Fonction prédéfinie Math.exp(1) : " + Math.exp(1) + "<br><br>"+
  • "Nombre PI : " + pi() + "<br>"+
  • "Nombre prédéfini : " + Math.PI + "<br><br>"+
  • "Sinus de PI/2 : " + sinus(pi()/2) + "<br>"+
  • "Sinus prédéfini : " + Math.sin(Math.PI/2) + "<br><br>"+
  • "Cosinus de PI/4 : " + cosinus(pi()/4) + "<br>"+
  • "Cosinus prédéfini : " + Math.cos(Math.PI/4) + "<br><br>"+
  • "Tangeante de PI/4 : " + tang(pi()/4) + "<br>"+
  • "Tangeante prédéfinie : " + Math.tan(Math.PI/4) + "<br><br>"+
  • "Arc sinus de PI/4 : " + arcsin(pi()/4) + "<br>"+
  • "Arc sinus prédéfini : " + Math.asin(Math.PI/4) + "<br><br>"+
  • "Arc cosinus de PI/4 : " + arccos(pi()/4) + "<br>"+
  • "Arc cosinus prédéfini : " + Math.acos(Math.PI/4) + "<br><br>"+
  • "Arc tangeante de 1 : " + arctg(1) + "<br>"+
  • "Arc tangeante prédéfini : " + Math.atan(1) + "<br><br>"+
  • "Sinus hyperbolique de PI : " + sinh(pi()) + "<br>"+
  • "Cosinus hyperbolique de PI : " + cosh(pi()) + "<br>"+
  • "Tangeante hyperbolique de PI : " + tanh(pi()) + "<br>"+
  • "Sécante hyperbolique de PI : " + sech(pi()) + "<br>"+
  • "Cosécante hyperbolique de PI : " + cosech(pi()) + "<br>"+
  • "Cotangeante hyperbolique de PI : " + cotanh(pi()));
/* DEFINITION DE L'EXPONENTIELLE AINSI QUE DU COSINUS ET DU SINUS */


/*EXPONENTIELLE*/

/*On définit l'exponentielle comme une série tel que
  la somme de n=0 jusqu'à l'infini du nombre à la puissance n
  sur la factorielle de n.

/**********Fonction factorielle**********/

function factor(h) {
    return (h == 0)?1:(h * factor(h - 1));	//exemple : 5! = 5*4*3*2*1 = 120
}

/****************************************/





/*********Fonction exponentielle*********/

/* J'ai eu quelques soucis avec la fonction puissance
   à cause des infinis. J'ai donc utiliser la fonction 
   prédéfinie Math.pow(). La fonction a été testée jusqu'à 100,
   ensuite les nombres sont trop énormes pour cette fonction.*/

function expo(z){		//la base est e = 2.718281828...
    var som = 0;
    for(n=0;n<155;n++)
    {
        val = (Math.pow(z,n))/(factor(n));
        som = som + val;
    }
    return som;
}

/****************************************/





/******************PI********************/

function pi(){
    var som = 0;
    for(n=0;n<25;n++)    //25 est amplement suffisant car elle converge vite.
    {
        var N = 2*n;
        var N2 = 4*n+1;
        val = (factor(N))/(Math.pow(2,N2)*factor(n)*factor(n)*(2*n+1));
        som = som + val;
    }
    som = som * 6;
    return som;
}
/****************************************/



/*****************SINUS******************/

function sinus(nb){       
    var som = 0;
    for(n=0;n<20;n++)     //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand 
    {
        val = (Math.pow(-1,n)*Math.pow(nb,2*n+1))/(factor(2*n+1));
        som = som + val;
    }
    return som;
}

/****************************************/




/****************COSINUS*****************/

function cosinus(nb){
    var som = 0;
    for(n=0;n<20;n++)     //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand 
    {
        val = (Math.pow(-1,n)*Math.pow(nb,2*n))/(factor(2*n));
        som = som + val;
    }
    return som;
}

/****************************************/




/***************TANGEANTES***************/

function tang(nb){
    val = sinus(nb)/cosinus(nb);
    return val;
}

/****************************************/




/***************ARC SINUS****************/

function arcsin(nb){
    var som = 0;
    for(n=0;n<30;n++)     //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand 
    {
        val = (factor(2*n)*Math.pow(nb,2*n+1))/(Math.pow(2,2*n)*factor(n)*factor(n)*(2*n+1));
        som = som + val;
    }
    return som;
}

/****************************************/




/**************ARC COSINUS***************/
/*On définit l'ARC COSINUS par :

arccos x = pi/2 - arcsin x
*/

function arccos(nb){
    return pi()/2 - arcsin(nb);
}

/****************************************/




/**************ARC TANGEANTE*************/

function arctg(nb){
    var som = 0;
    for(n=0;n<40;n++)     //à choisir suivant la précision que l'on veut donner, plus le nombre est grand et plus n doit être grand 
    {
        val = (Math.pow(-1,n)*Math.pow(nb,2*n+1))/(2*n+1)
        som = som + val;
    }
    return som;
}

/****************************************/




/***********SINUS HYPERBOLIQUE***********/

function sinh(nb){
    return (expo(nb)-expo(-nb))/2;
}
 
/****************************************/




/**********COSINUS HYPERBOLIQUE**********/

function cosh(nb){
    return (expo(nb) + expo(-nb))/2;
}

/****************************************/




/*********TANGEANTE HYPERBOLIQUE*********/

function tanh(nb){
    return (1-expo(-2*nb))/(1+expo(-2*nb));
}

/****************************************/




/**********SECANTE HYPERBOLIQUE**********/

function sech(nb){
    return 1/cosh(nb);
}

/****************************************/




/*********COSECANTE HYPERBOLIQUE*********/

function cosech(nb){
    return 1/sinh(nb);
}

/****************************************/




/********COTANGEANTE HYPERBOLIQUE********/

function cotanh(nb){
    return cosh(nb)/sinh(nb);
}

/****************************************/ 


document.write("Exponentielle de 1 : " + expo(1) + "<br>"+
	       "Fonction prédéfinie Math.exp(1) : " + Math.exp(1) + "<br><br>"+
               "Nombre PI : " + pi() + "<br>"+
	       "Nombre prédéfini : " + Math.PI + "<br><br>"+
	       "Sinus de PI/2 : " + sinus(pi()/2) + "<br>"+
	       "Sinus prédéfini : " + Math.sin(Math.PI/2) + "<br><br>"+
 	       "Cosinus de PI/4 : " + cosinus(pi()/4) + "<br>"+
	       "Cosinus prédéfini : " + Math.cos(Math.PI/4) + "<br><br>"+
	       "Tangeante de PI/4 : " + tang(pi()/4) + "<br>"+
	       "Tangeante prédéfinie : " + Math.tan(Math.PI/4) + "<br><br>"+
	       "Arc sinus de PI/4 : " + arcsin(pi()/4) + "<br>"+
	       "Arc sinus prédéfini : " + Math.asin(Math.PI/4) + "<br><br>"+
	       "Arc cosinus de PI/4 : " + arccos(pi()/4) + "<br>"+
	       "Arc cosinus prédéfini : " + Math.acos(Math.PI/4) + "<br><br>"+
	       "Arc tangeante de 1 : " + arctg(1) + "<br>"+
	       "Arc tangeante prédéfini : " + Math.atan(1) + "<br><br>"+
	       "Sinus hyperbolique de PI : " + sinh(pi()) + "<br>"+
	       "Cosinus hyperbolique de PI : " + cosh(pi()) + "<br>"+
	       "Tangeante hyperbolique de PI : " + tanh(pi()) + "<br>"+
	       "Sécante hyperbolique de PI : " + sech(pi()) + "<br>"+
	       "Cosécante hyperbolique de PI : " + cosech(pi()) + "<br>"+
	       "Cotangeante hyperbolique de PI : " + cotanh(pi()));

 Conclusion

voila...

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

24 octobre 2005 23:42:10 :
petit blème.
24 octobre 2005 23:46:57 :
décidément !

 Sources du même auteur

Source avec Zip LIB GRANDS NOMBRES
Source avec Zip Source avec une capture MUMUSE AVEC LE REGISTRE
Source avec Zip Source avec une capture ENVOI DE MAIL AVEC CDO
Source avec Zip Source avec une capture OUVRIR DES FICHIERS DE L'INTERNAUTE SANS DEMANDE D'AUTORISAT...
Source avec Zip Source avec une capture MUSICPLAYER (LECTEUR MUSIQUE)

 Sources de la même categorie

COLONNES ADAPTABLES EN HAUTEUR par dronoide
Source avec Zip VECTEURS ET MATRICES: OUTILS GRAPHIQUES UTILES par william voirol
Source avec Zip Source avec une capture HTML5 PLAYER par kazma
Source avec Zip Source avec une capture SCROLLBAR PERSONNALISABLE par kazma
Source avec Zip INFO BULLE par RudiRatlos

 Sources en rapport avec celle ci

Source avec Zip S'ENTRAINER EN MATH GRACE A DES EXERCICES par ndubien
EQUATION DE 2NDE DEGRÉ par allomomo

Commentaires et avis

Commentaire de LocalStone le 25/10/2005 12:24:24

J'en connais qui viennent de terminer les séries entières ...

Commentaire de algori le 25/10/2005 12:42:37

Bé en fait, je n'ai pas encore commençé à étudier les séries mais je trouve ça super intéressant donc c'est pour ça que je me suis permis de déposer une source là-dessus.
Faut dire que tout le monde (ou presque) connait le nombre PI mais ils ne savent pas forcément comment on l'a déterminé, calculer, etc.

Commentaire de LocalStone le 25/10/2005 19:08:54

Ha ! Alors là, attention. Parce que OK, Euler à calculer beaucoup de décimales de PI avec les séries. MAIS ! Ce n'est pas vraiment là que PI à commencé à montrer son nez et à poser problème. Va sur Google et cherche la quadrature du cercle.
De plus, un petit conseil. Ecrit ton algorithme en C ou en Pascal. Bah ouais, ça sert à rien de la faire en Javascript vu que ça existe déjà. Alors qu'en Pascal, ça n'existe pas (et c'est cette méthode qui est utilisée dans la pluspart des librairies de maths).
++ !

Commentaire de algori le 25/10/2005 23:16:04

Au départ, j'étais parti pour déterminer l'expo, le sinus, cosinus, etc avec les séries, puis j'ai vu sur un site qu'on pouvait également déterminer PI avec les séries. C'est pour cela que je l'ai intégré au code.
Sinon, pour info, cette détermination de PI se fait par la méthode de "Newton" (et non pas d'Euler ; je sais, je joue sur les mots :D). Elle a l'avantage d'avoir une convergence très rapide et relativement satisfaisante (par rapport à d'autres méthodes bien entendu).
Je l'ai également faite en C (une fois fait en javascript -> pas compliqué de le faire en C)  :-)
@++

Commentaire de algori le 25/10/2005 23:18:40

Sinon, merci pour tes conseils.
PS : en quoi le nombre PI a posé des problèmes, tu m'intrigues là ?!

Commentaire de algori le 25/10/2005 23:23:29

Finalement, ma dernière question est peut être inutile.
Le nombre PI est un nombre transcendant c'est à dire qu'il n'est solution d'aucune équation à coefficients rationnels -> pas constructible à la règle et au compas.
Pour ceux que ça intéresse : http://trucsmaths.free.fr/Pi.htm#quadrature
ou cherchez sur Google.
@++

Commentaire de PaDa le 31/10/2005 03:13:56

Je fais très peu de javascript, mais si je peux préciser deux trois trucs mathématiques :
On peut pas raisonnablement dire que les séries entières sont des définitions officielles des sin,cos,exp, etc.. c'est un angle d'attaque, et on peut montrer facilement qu'il coincide avec tous les autres.
D'autre part, les séries entières c'est quelque chose de magnifique sur le papier, et c'est extrêmement utile pour des exercices théoriques. Mais niveau calcul numérique, c'est complètement obsolète, en général on a des fonctions d'état efficace qui convergent avec une précision de 8-10 digits en quelques itérations seulement
(exple: la racine carrée qui dans les caltos est programmée comme point fixe de u(x)=1/2*(x+a/x), ce qui est bien plus efficace que l'horrible série entière sur les (1+x)^alpha)

Commentaire de algori le 31/10/2005 09:40:36

Salut PADA,
merci pour ces précisions.
Cette source est un petit amusement. Je suppose qu'il doit y avoir des méthodes plus rapides pour calculer le cos, sin, etc (?)...
Je l'ai fait en javascript mais j'aurai du le posté en C car pour javascript, la précision mathématique est à revoir.
@++

Commentaire de LocalStone le 31/10/2005 13:48:51

Algori > Je pense même que tu devrais (enfin si tu as envie, moi je dis ça comme ça, hein ;) ) essayer de coder ta propre gestion des nombres en C pour ensuite pouvoir calculer la fonction exponentielle ou cosinus avec autant de précision que tu veux. C'est un truc que j'ai toujours voulu faire, en codant l'addition, la multiplication, etc ... Mais j'ai jamais pris le temps.
Enfin voilà voilà ...
++ !
L.S.

Commentaire de PaDa le 31/10/2005 14:28:25

Aucune idée pour les cos/sin/exp honnêtement, ca converge vite pour cos et sin vu qu'il y'a seulement un terme sur deux, pour l'exp idem du au factoriel.
Au passage, j'reviens sur les séries entières : c'est quand même aussi super utile pour les résolutions d'équations différentielles ou fonctionnelles, c'est une des méthodes classiques...
J'attends de voir tout ca en C !! :)

Commentaire de algori le 31/10/2005 18:13:43

Localstone >> Bonne idée.
Je ferai ça un peu plus tard car je suis pas mal débordé ces temps-ci.
@++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

exp regulières [ par eax ] salut!g encore un pb avec une expression régulière :je veux uniquement des variable savec des caractères alpha numériques des - des _ et des . et des Pointeur étoilé qui ne fonctionne pas...!! [ par Ferrari01 ] Bonjour à tous...Voici un petit code que j'ai adapté, mais qui ne fonctionne pas; en principe, de petites étoiles feraient une danse autour du pointeu de la vitesse [ par peterbud ] Bonjour à tous, Alors voilà,mon script me permet de faire tomber des gouttes de pluie sur ma page et ce que je cherche à faire c'est à varier la vites modifier un code effet de neige [ par archi1 ] bjr,j'aimerai associer une image au code ci-joint, &#224; la place des flocons de neige.possible ou pas ?merci de votre aideentre balises head&lt;!-- modifier un code [ par archi1 ] bjr,j'aimerai associer une image au code ci-joint, &#224; la place des flocons de neige.possible ou pas ?merci de votre aideentre balises head&lt;!-- Conversion en Base 36 [ par fhalckon ] J'ai juste un petit bug lorsque la conversion donne 0, le 0 ne s'indique pasC'est un script que j'ai copier ici (decimal to hexa) que j'ai l&#233;gere Cookie : Aidez moi s'il vous plait [ par Gravity ] Bonjour &#224; tous !Je suis vraiment nul en Javascript... J'aurais aim&#233; savoir comment ce code ci peut-&#234;tre modifi&#233; ou alors, creer un Problème avec la Function Math [ par macromed ] Je cherche un moyen de faire "si le num&#233;ro est entre x et xx"if (num &gt; 20)&nbsp; &#233;gal&nbsp;&nbsp; Si le num&#233;ro est plus au que 20... Effet neige a l'invers [ par lnazcal ] Bonjour,Comment le sujet le dit si bien je cherche un javascript qui fasse un effet boules dans un verre de cola.Je me suis dit que il faudr&#233; cha réaliser une boucle pour obtenir plusieurs résultat ... [ par popy29 ] bonjour,je cherche &#224; obtenir plusieurs&nbsp; r&#233;sultats ou n r&#233;sultat diff&#233;rents &#224; partir d'une fonction mais je ne trouve pas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,243 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales