Deutsch   English   Français   Italiano  
<6412460f$0$2976$426a74cc@news.free.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!cleanfeed3-b.proxad.net!nnrp1-2.free.fr!not-for-mail
Date: Wed, 15 Mar 2023 23:26:23 +0100
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101
 Thunderbird/102.8.0
Subject: Re: 0!=1 ?
Newsgroups: fr.sci.maths
References: <turdrh$naru$1@dont-email.me> <tusrn5$v1lf$1@dont-email.me>
 <tuss29$1dfo$1@cabale.usenet-fr.net> <tusvf0$vs65$1@dont-email.me>
 <tusvt2$1i19$1@cabale.usenet-fr.net>
Content-Language: fr
From: Michel Talon <talon@niobe.lpthe.jussieu.fr>
In-Reply-To: <tusvt2$1i19$1@cabale.usenet-fr.net>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 86
Message-ID: <6412460f$0$2976$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 15 Mar 2023 23:26:23 CET
NNTP-Posting-Host: 88.161.173.7
X-Trace: 1678919183 news-2.free.fr 2976 88.161.173.7:27913
X-Complaints-To: abuse@proxad.net
Bytes: 3796

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