Re: 0!=1 ?

Liste des GroupesRevenir à fs maths 
Sujet : Re: 0!=1 ?
De : talon (at) *nospam* niobe.lpthe.jussieu.fr (Michel Talon)
Groupes : fr.sci.maths
Date : 15. Mar 2023, 23:26:23
Autres entêtes
Organisation : Guest of ProXad - France
Message-ID : <6412460f$0$2976$426a74cc@news.free.fr>
References : 1 2 3 4 5
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0
Le 15/03/2023 à 18:39, Olivier Miakinen a écrit :
Le 15/03/2023 à 18:32, Dominique a écrit :
Le 15/03/2023 à 17:34, Olivier Miakinen a écrit :
>
$ python
   from math import factorial
   factorial(5)
120
   factorial(0)
1
>
Factorial : et hop, une fonction que je ne connaissais pas :)
 À vrai dire moi non plus.
 Mais je me suis dit qu'il serait étonnant qu'elle n'existe pas, et
aussi que le module math serait le plus approprié pour l'y trouver :
<https://docs.python.org/3/library/math.html>.
 D'ailleurs on y trouve aussi une confirmation de ce dont parlait
Michel, la fonction gamma (Γ) :
 $ python
  from math import gamma
  gamma(6)
120.0
  gamma(1)
1.0
 
Je vais faire encore un peu de pub pour maxima ... Bien sûr il y a la fonction factorielle et la fonction gamma.
(%i1) 5! ;
(%o1)                                 120
(%i2) 5.5! ;     <------ Note factorielle est étendue aux rééls.
(%o2)                          287.8852778150444
(%i3) 6! ;
(%o3)                                 720
(%i4) gamma(6) ;
(%o4)                                 120
Plus intéressant, un petit programme maxima pour résoudre le problème initial. Je suis sûr qu'on peut le rendre un peu plus élégant, mais enfin, voilà. On définit la fonction gfact par:
(%i1)  gfact(n) := block([m : n, mm, fsum : 0],   <--- variables locales
                    mm:floor(m/10),
                    while(mm > 0) do  (fsum:fsum+(m-10*mm)!,
                                       m:mm,mm:floor(m/10)),
                    fsum:fsum+(m-10*mm)!)$
(%i2) for n from 1 thru 100000 do if (n=gfact(n)) then print(n);
1
2
145
40585
(%o2)                                done
(%i3) time(%);
(%o3)                               [9.605]
Dans la fonction gfact les divisions par 10 successives pour obtenir les chiffres du nombre, et on ajoute leurs factorielles. Le coté inélégant, on ne peut pas mettre while(mm >= 0) sinon ça boucle et du coup  il faut
rajouter un dernier terme à la somme des factorielles. Temps d'exécution total pour tester 100000 nombres  9s sur une machine à 1500 Mhz.
A comparer avec python.
Pour ceux qui ne savent pas maxima est disponible gratuitement sur Windows, Mac et Linux et même sur téléphone Android.  Les versions précompilées pour Windows et Linux viennent avec une interface graphique
(wxmaxima) et un programme pour tracer des graphes (gnuplot). Je crois qu'il est plus compliqué de se procurer une version précompilée pour Mac. On peut aussi utiliser maxima directement dans une fenêtre terminal
ou sous emacs.
--
Michel Talon

Date Sujet#  Auteur
15 Mar 23 * 0!=1 ?33Dominique
15 Mar 23 +- Re: 0!=1 ?1Dominique
15 Mar 23 +* Re: 0!=1 ?9Michel Talon
15 Mar 23 i+* Re: 0!=1 ?7robby
15 Mar 23 ii`* Re: 0!=1 ?6Olivier Miakinen
15 Mar 23 ii +* Re: 0!=1 ?4robby
15 Mar 23 ii i`* Re: 0!=1 ?3Olivier Miakinen
16 Mar 23 ii i `* Re: 0!=1 ?2robby
16 Mar 23 ii i  `- Re: 0!=1 ?1Olivier Miakinen
16 Mar 23 ii `- Re: 0!=1 ?1ast
15 Mar 23 i`- Re: 0!=1 ?1Olivier Miakinen
15 Mar 23 +* Re: 0!=1 ?2Olivier Miakinen
15 Mar 23 i`- Re: 0!=1 ?1Olivier Miakinen
15 Mar 23 +* Re: 0!=1 ?3Python
15 Mar 23 i+- Re: 0!=1 ?1Michel Talon
16 Mar 23 i`- Re: 0!=1 ?1robby
15 Mar 23 +* Re: 0!=1 ?15Dominique
15 Mar 23 i`* Re: 0!=1 ?14Olivier Miakinen
15 Mar 23 i `* Re: 0!=1 ?13Dominique
15 Mar 23 i  `* Re: 0!=1 ?12Olivier Miakinen
15 Mar 23 i   +* Re: 0!=1 ?9Dominique
15 Mar 23 i   i+* Re: 0!=1 ?3Dominique
15 Mar 23 i   ii`* Re: 0!=1 ?2Dominique
16 Mar 23 i   ii `- Re: 0!=1 ?1Michel Talon
15 Mar 23 i   i`* Re: 0!=1 ?5Olivier Miakinen
15 Mar 23 i   i `* Re: 0!=1 ?4Dominique
15 Mar 23 i   i  +* Re: 0!=1 ?2Olivier Miakinen
15 Mar 23 i   i  i`- Re: 0!=1 ?1Dominique
16 Mar 23 i   i  `- Re: 0!=1 ?1robby
16 Mar 23 i   +- Re: 0!=1 ?1Michel Talon
16 Mar 23 i   `- Re: 0!=1 ?1robby
16 Mar 23 `* Re: 0!=1 ?2Michel Talon
16 Mar 23  `- Re: 0!=1 ?1Dominique

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal