Dichotomie - JavaScript
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Dichotomie - JavaScript



  1. #1
    DavianThule95

    Dichotomie - JavaScript


    ------

    Bonjours,

    Je viens de débuter le JavaScript.

    J'ai essayé tant bien que mal de coder un algorithme de dichotomie, sans y parvenir. Voici mon code :
    Code HTML:
     <script>												
    			function gamma(x)
    			{
    				var n, a;
    				a = 1;
    				n = 1;
    				
    				while (n <= 100000)
    				{
    					a *= (n/(n+x))*Math.pow(((n+1)/n), x);
    					n++;
    				}
    					
    				return a;
    			}
    			
    			function dichotomie(x)
    			{
    				var a, b, c;
    				a = 0;
    				b = 100;
    				c = (a + b)/2;
    				while (gamma(c) >  arround(x*100000)/100000)
    				{
    					if ((gamma(a)*gamma(b)) < 0)
    					{
    						b = c;
    					}
    					else
    					{
    						a = c;
    					}
    					c = (b+a)/2;
    				}
    				return c;
    			}	
    
    			nombre = parseFloat(prompt('Indiquez le nombre dont vous voulez connaître la réciproque de sa factorielle : '));
    			reponse = 'La factorielle égale à ' + nombre + ' est environ ' + dichotomie(nombre) + '.';
    			alert(reponse);
    		</script>
    Je ne vois pas où est mon erreur ?

    Merci d'avance.

    -----
    Je dis ça je dis rien mais j'le dis quand même.

  2. #2
    invite948b37db

    Re : Dichotomie - JavaScript

    Citation Envoyé par DavianThule95 Voir le message
    Je ne vois pas où est mon erreur ?
    bonjour
    Sur les navigateurs modernes, tu as un outil pour débuguer. Ca ne marche pas à tous les coups mais généralement, il indique la première erreur du script.
    que dit le tien ?

  3. #3
    imoca

    Re : Dichotomie - JavaScript

    Bonjour,

    Code:
     <script>												
    			function gamma(x)
    			{
    				var n, a;
    				a = 1;
    				n = 1;
    				
    				while (n <= 100000)
    				{
    					a *= (n/(n+x))*Math.pow(((n+1)/n), x);
    					n++;
    				}
    					
    				return a;
    			}
    			
    			function dichotomie(x)
    			{
    				var a, b, c;
    				a = 0;
    				b = 100;
    				c = (a + b)/2.00;
    				while (a!=b)
    				{	
    					if (x<gamma(c))
    					{
    						b = Math.floor(c);
    					}
    					else
    					{
    						a = Math.ceil(c);
    					}
    					c = (b+a)/2.00;
    				}
    				return c;
    			}	
    
    			nombre = parseFloat(prompt('Indiquez le nombre dont vous voulez connaître la réciproque de sa factorielle : '));
    			reponse = 'La factorielle égale à ' + nombre + ' est environ ' + dichotomie(nombre) + '.';
    			alert(reponse);
    		</script>

  4. #4
    invite948b37db

    Re : Dichotomie - JavaScript

    Citation Envoyé par imoca Voir le message
    Bonjour,

    [CODE]
    .
    .
    .
    bonjour
    Pas facile de comparer deux exemples de code. Si tu nous disais ce que tu as changé ?

  5. A voir en vidéo sur Futura
  6. #5
    DavianThule95

    Re : Dichotomie - JavaScript

    Merci pour ce code qui marche !
    Mais, je ne vois pas comment avoir plus de précision :
    Si j'enlève les fonctions floor et ceil, le code bug.
    J'ai divisé par 100 le nombre d'itération, mais rien ne fait, je ne comprends pas ???
    Je dis ça je dis rien mais j'le dis quand même.

  7. #6
    DavianThule95

    Re : Dichotomie - JavaScript

    cherbe, mon navigateur m'indique une erreur au niveau de l'ouverture de la boucle while dans la fonction dichotomie.
    Je dis ça je dis rien mais j'le dis quand même.

  8. #7
    invite948b37db

    Re : Dichotomie - JavaScript

    Citation Envoyé par DavianThule95 Voir le message
    cherbe, mon navigateur m'indique une erreur au niveau de l'ouverture de la boucle while dans la fonction dichotomie.
    C'est quoi cette instruction arround() dans :
    Code:
    while (gamma(c) >  arround(x*100000)/100000)
    ?

  9. #8
    imoca

    Re : Dichotomie - JavaScript

    Code:
    function dichotomie(x)
    			{
    				var a, b, c;
    				a = 0;
    				b = 10000;
    				c = (a + b)/2.00;
    				while (a!=b)
    				{	
    					if (x<gamma(c/100.00))
    					{
    						b = Math.floor(c);
    					}
    					else
    					{
    						a = Math.ceil(c);
    					}
    					c = (b+a)/2.00;
    				}
    				return c/100.00;
    			}
    Cela rajoute deux chiffres significatifs

Discussions similaires

  1. dichotomie
    Par invitef5197fd1 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 15/07/2015, 15h27
  2. Javascript : Intégrer une variable javascript dans un champ de formulaire html
    Par invitea1400dd5 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 03/08/2014, 12h15
  3. Dichotomie
    Par inviteb0ca76e7 dans le forum Mathématiques du supérieur
    Réponses: 20
    Dernier message: 06/05/2011, 18h25
  4. dichotomie
    Par invitec5af58ac dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 21/09/2009, 22h25
  5. Principe de Dichotomie
    Par invite01b26842 dans le forum Science ludique : la science en s'amusant
    Réponses: 7
    Dernier message: 18/09/2007, 11h39