Partage
  • Partager sur Facebook
  • Partager sur Twitter

Bibliothèque de fonctions mathématiques

Aide pour écrire une bibliothèque destinée au lycée

Sujet résolu
    18 juillet 2011 à 11:06:38

    Bonjour,

    o_O Même si mon post parle de langage de programmation informatique, il s'adresse surtout à des mathématiciens.

    Depuis l'ajout de la notion d'algorithme dans le programme scolaire, le langage Linotte est utilisé dans certains lycées.

    Pour ce langage, je souhaite mettre à disposition une bibliothèque de fonctions mathématiques qui pourrait être utilisée par les élèves et les professeurs. Cette bibliothèque s'appelle Abaque.

    Vous trouverez un début de ma discussion sur le forum Informatique du SDZ :
    http://www.siteduzero.com/forum-83-668 [...] matiques.html

    Pour résumé, je cherche à écrire en langage Java des fonctions mathématiques utilisés au lycée (par exemple, la loi binomiale).
    • - J'ai besoin de vous sur les idées de fonctions mathématiques à écrire qui seraient utile à proposer.
    • - Pour décrire ses fonctions mathématiques en algorithme que je puisse l'implémenter en langage informatique.

    Si certains de vous connaissent Algobox, je souhaite proposer des fonctions telles que :
    • ALGOBOX_ALEA_ENT(p,n)
    • ALGOBOX_COEFF_BINOMIAL(n,p)
    • ALGOBOX_LOI_BINOMIALE(n,p,k)
    • ALGOBOX_LOI_NORMALE_CR(x)
    • ALGOBOX_LOI_NORMALE(esp,ecart,x)
    • ALGOBOX_INVERSE_LOI_NORMALE_CR(p)
    • ALGOBOX_INVERSE_LOI_NORMALE(esp,ecart,p)
    • ALGOBOX_FACTORIELLE(n)


    Et plus si vous avez d'autres idées !

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2011 à 11:12:39

      En gros tu demandes les algos utilisés dans les calculatrices ?
      • Partager sur Facebook
      • Partager sur Twitter
      "If debbugging is the process of removing bugs, then programming must be the process of putting them in." (Edsger Dijkstra)
        18 juillet 2011 à 11:51:13

        Citation : schadocalex

        En gros tu demandes les algos utilisés dans les calculatrices ?



        ça peut être une bonne piste ! mais je n'ai plus de calculatrice scientifique depuis bien longtemps....
        • Partager sur Facebook
        • Partager sur Twitter
          18 juillet 2011 à 13:59:11

          Quand tu parles de "fonctions complexes" tu veux dire des "fonctions compliquées" ou des fonction travaillant dans l'ensemble des nombres complexes ?
          • Partager sur Facebook
          • Partager sur Twitter
          Je ne suis responsable que de ce que je dis, pas de ce que vous comprenez... - /!\ Négligences de sécurité sur OpenClassrooms /!\
            18 juillet 2011 à 14:15:22

            Citation : Caduchon

            Quand tu parles de "fonctions complexes" tu veux dire des "fonctions compliquées" ou des fonction travaillant dans l'ensemble des nombres complexes ?



            On parle bien de "fonctions compliquées", j'ai corrigé le post ! Merci
            • Partager sur Facebook
            • Partager sur Twitter
              18 juillet 2011 à 14:38:18

              Pour calculer les coef binomiaux, tu peux utiliser la méthode décrite ici : http://www.brpreiss.com/books/opus5/html/page460.html

              Ce sera beaucoup plus rapide que de calculer les factorielles comme suggéré dans l'autre sujet. Après, tu auras juste à calculer <math>\({n \choose k} \times p^k \times (1-p)^{n-k}\)</math> pour avoir la fonction LOI_BINOMIALE.

              Pour la loi normale regarde : http://fr.wikipedia.org/wiki/Loi_norma [...] 3.A9partition ... mais je ne vois pas de méthode super efficace qui marche à tous les coups ...
              • Partager sur Facebook
              • Partager sur Twitter
                18 juillet 2011 à 14:44:52

                Bonjour,
                Pour la factorielle il me semble qu'il n'y a pas d'algorithme tellement plus simple que l'algorithme récursif pour n<70. Ensuite on peut généraliser le procédé sur les réels avec la fonction Gamma d'Euler mais je ne connais pas trop cette fonction et ça me semble bien trop compliqué d'implémenter la factorielle autrement que par un algo récursif ...
                Pour le coefficient binomial bien sûr <math>\(n\choose p\)</math><math>\(=\)</math><math>\(\frac{n!}{k!(n-k)!}\)</math>
                Calculer trois factorielles peut ête long !
                Le truc de sebsheep n'a pas l'air mal !
                • Partager sur Facebook
                • Partager sur Twitter
                  18 juillet 2011 à 16:50:24

                  Merci pour ces infos... ça reste compliqué pour moi tout ça !

                  Il va falloir réfléchir un petit peu ce soir pour mettre ça, non pas sur feuille, mais dans un programme java !

                  Je suis preneur si vous avez d'autres fonctions mathématiques à proposer !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    18 juillet 2011 à 17:05:11

                    Citation : Blacktek

                    Bonjour,
                    Pour la factorielle il me semble qu'il n'y a pas d'algorithme tellement plus simple que l'algorithme récursif pour n<70. Ensuite on peut généraliser le procédé sur les réels avec la fonction Gamma d'Euler mais je ne connais pas trop cette fonction et ça me semble bien trop compliqué d'implémenter la factorielle autrement que par un algo récursif ...
                    Pour le coefficient binomial bien sûr <math>\(n\choose p\)</math><math>\(=\)</math><math>\(\frac{n!}{k!(n-k)!}\)</math>
                    Calculer trois factorielles peut ête long !
                    Le truc de sebsheep n'a pas l'air mal !


                    L'algo itératif déduit immédiatement du récursif est très simple et permet de calculer n'importe quelle factorielle :
                    fact(n){
                     res= 1
                     while(n>1){
                        res*=n
                        n = n-1
                     }
                     return res
                    }

                    On peu aussi écrire un version tail-récursive qui revient grosso modo au même
                    Après bien sûr c'est long et il est inutile de calculer des factorielles pour avoir les coefficient binomiaux (que l'implémentation soit récursive ou itérative !).

                    Pour la loi normale, tu peux utiliser "erf" : http://commons.apache.org/math/apidocs/org/apache/commons/math/special/Erf.html
                    tu as : <math>\(P(x<X) = \frac{1}{2}[1 + erf(\frac{x-\mu}{\sigma\sqrt 2} )]\)</math> si X suit une loi normale <math>\(\mathcal{N}(\mu,\sigma)\)</math>.

                    Avec ça, tu dois plus avoir de problèmes pour LOI_NORMALE et LOI_NORMALE_CR.

                    Pour INVERSE_LOI_NORMALE, tu veux trouver x tel que LOI_NORMALE(x)=p. Pour ça, je verrais bien une petite méthode Newton cf : Méthode_de_Newton#Fonction_r.C3.A9elle_d.27une_variable_r.C3.A9elle
                    ici tu cherches le zéro de f(x)= LOI_NORMALE(x)-p, et la dérivée est <math>\(f'(x) = \tfrac{1}{\sigma \sqrt{2\pi}}\ \mathrm{e}^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}\)</math>.

                    Normalement avec tout ce que je t'ai dit, tu devrais pouvoir réaliser tout ce que tu veux !

                    Edit :
                    Idée : tu peux aussi rajouter les fonctions de tirage aléatoire selon la loi gaussienne, la loi de poisson, la loi géométrique ... Pour le tirage gaussien, t'as déjà des trucs implémentés en java dans le module random, pour le reste faut chercher une autre lib ou sinon implémenter soi même (dans mon tuto, cf signature, tu as une méthode pour la loi géométrique).

                    Et tu peux aussi proposer le même type de fonction que LOI_NORMALE mais avec les lois que je t'ai cité.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 juillet 2011 à 8:59:11

                      J'ai une question un peu désagréable:
                      Pourquoi te lancer dans ce projet si tu n'as pas les connaissances mathématiques suffisantes pour le mener à terme ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je ne suis responsable que de ce que je dis, pas de ce que vous comprenez... - /!\ Négligences de sécurité sur OpenClassrooms /!\
                        19 juillet 2011 à 10:55:33

                        Citation : Caduchon

                        J'ai une question un peu désagréable:
                        Pourquoi te lancer dans ce projet si tu n'as pas les connaissances mathématiques suffisantes pour le mener à terme ?



                        Cher Caduchon,

                        C'est la magie d'Internet.

                        J'ai certaines capacités dans certains domaines.
                        Pour les autres domaines, j'essaye de faire appel au bon vouloir des participants dans des forums. J'ai eu des réponses, ici même, intéressantes.
                        Dans l'idéal, j'aurai voulu une personne qui soit capable de traduire ces fonctions mathématiques directement en Java.
                        Mais vu l'aide et la générosité que l'on m'apporte, je suis motivé à faire la transcription en Java.

                        De plus, cette librairie pour le langage Linotte sera utilisé par des élèves (j'espère).

                        Le geste est beau non ?

                        Maintenant, imagine que tu poses cette question à un ingénieur en mécanique qui doit construire un avion.

                        Il ne sait pas piloter. Donc, il arrête son projet ? Non, il va faire appel a des compétences : des pilotes.

                        Il ne s'y connait pas en électronique (ou pas assez). Il arrête également son projet ?

                        Mon exemple est un peu extrême mais c'est pour "démontrer" le non sens à ta question.

                        J'espère que ce post ne va pas dévier vers d'autres sujets... (c'est la magie des forums :D )
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          19 juillet 2011 à 12:11:20

                          Pour le calcul d'intégrale c'est souvent la méthode de simpson qui est utilisé car elle fournie une très bonne approximation grâce au principe d'interpolation lagrangienne.

                          http://fr.wikipedia.org/wiki/M%C3%A9thode_de_Simpson

                          Pour le lycée, ça devrait suffire.

                          Pour les systèmes linéaires, tourne toi vers une résolution matricielle (même quitte à la cacher aux lycéens) grâce au basique Gauss-Jordan. Pareil, ça devrait suffire pour le niveau lycée.
                          En complément tu pourrais intégrer d'autres méthodes du style LU, Jacobi, Cholesky, Gauss-Seidel, mais je doute qu'au lycée les systèmes linéaires ne soient pas solvable par Gauss-Jordan.

                          Voila quelques pistes pour les intégrales et les systèmes linéaires.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juillet 2011 à 14:07:58

                            Citation : metalm

                            C'est la magie d'Internet.


                            Je crois que ça n'a rien à voir avec Internet...


                            Citation : metalm

                            J'ai certaines capacités dans certains domaines.


                            Je veux bien te croire, mais je trouve ça étrange que tu sois capable de créer un langage de programmation, et incapable de retranscrire en java des algorithmes qui sont souvent disponibles sur internet.


                            Citation : metalm

                            Dans l'idéal, j'aurai voulu une personne qui soit capable de traduire ces fonctions mathématiques directement en Java.
                            Mais vu l'aide et la générosité que l'on m'apporte, je suis motivé à faire la transcription en Java.


                            Tu ne trouveras pas de larbin sur le Site du Zéro, si c'était ton idée...


                            Citation : metalm

                            De plus, cette librairie pour le langage Linotte sera utilisé par des élèves (j'espère).
                            Le geste est beau non ?


                            Raison de plus pour qu'il soit conçu par quelqu'un de compétent en mathématiques élémentaires.


                            Citation : metalm

                            Maintenant, imagine que tu poses cette question à un ingénieur en mécanique qui doit construire un avion.


                            Ca tombe bien, je suis ingénieur de recherche dans une entreprise d'aéronautique... :D


                            Citation : metalm

                            Il ne sait pas piloter.


                            En effet...


                            Citation : metalm

                            Donc, il arrête son projet ? Non, il va faire appel a des compétences : des pilotes.


                            Absolument pas non. Je n'ai jamais vu un seul pilote dans mon entreprise. Ce n'est pas comme ça que ça fonctionne. Il n'y a pas UN mec qui fabrique un avion, mais des milliers de personnes qui interviennent de diverses manières dans la conception de l'avion. Pièce par pièce, recoin par recoin, chacun selon ses compétences. Ainsi, mon équipe est par exemple spécialisée dans l'optimisation de la forme d'une pale de turbine pour la réduction de bruit au décollage... Et nous ne faisons rien d'autre ! Jamais un ingénieur se verra confier une tâche qu'il ne maitrise pas. Le monde du R&D ne fonctionne pas comme tu crois...


                            Citation : metalm

                            Mon exemple est un peu extrême mais c'est pour "démontrer" le non sens à ta question.


                            Ma question a tout son sens. Avec la magie d'Internet, comme tu dis, tu trouveras aussi bien des gens compétents que des imbéciles pour t'aider à faire ton projet. Si tu n'est pas toi-même en mesure de juger de la qualité d'une tâche que tu confies à quelqu'un, ce sera un très mauvais projet. Et c'est d'autant plus grave que tu souhaites par la suite le mettre entre les mains de gens qui n'ont pas non plus les connaissances, puisqu'ils sont en apprentissage.


                            ---

                            La première chose que tu devrais faire c'est établir une liste des fonctionnalités mathématiques que tu attends. Car là, on ne sait pas du tout ce que tu veux, et tout le monde y va de sa petite proposition de fonction. Je comprendrais très bien que tu n'aies pas connaissance des fonctions qui existent dans certains domaines, mais il serait peut-être bon alors de spécifier quels domaines tu souhaites toucher. Est-ce des générateurs aléatoires ? De la trigonométrie ? De la géométrie ? De la combinatoire ? Des probabilités ? Des statistiques ? De l'arithmétique ? Du calcul formel ? Des dérivées ou intégrales ? De l'optimisation ? Des résolution d'équation ? Je ne pense pas que beaucoup de gens sur ce forum connaissent Algobox, et ta liste de fonction n'est donc pas très représentative. Tu sembles de plus mélanger des générateurs aléatoires avec des fonctions mathématiques... ce n'est pas clair du tout. Clarifie tes objectifs et tu obtiendra une aide beaucoup plus efficace. ;)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Je ne suis responsable que de ce que je dis, pas de ce que vous comprenez... - /!\ Négligences de sécurité sur OpenClassrooms /!\
                              19 juillet 2011 à 14:25:16

                              Bonjour

                              je vais demander à supprimer ou fermer ce sujet.

                              Le sujet dévie. Chose que je ne voulais pas.

                              C'est terrible mais ça arrive souvent sur le SiteDuZero.

                              Il y a toujours le râleur de service qui va venir démonter ligne par ligne les points que j'expose.
                              Et moi, je devrais passer ma journée à contre-argumenter cette personne. C'est gonflant. C'est toujours les mêmes arguments qui reviennent.

                              Sur le forum informatique, je n'ai pas ma place car c'est trop mathématique, sur le forum mathématique, je n'ai pas ma place car je n'ai pas le niveau...

                              C'est la magie d'Internet... Parler même quand on a rien à dire...

                              PS :
                              Je précise que j'ai gardé sous le coude les réponses qui vont dans le sens de ma question initiale !

                              MERCI ENCORE !

                              PSS :
                              Il fallait voir "l'ingénieur" plutôt comme un "chef de projets".
                              En effet, je ne suis pas dans la recherche mais dans l'informatique.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juillet 2011 à 14:37:25

                                T'es bien certain d'avoir lu mes deux derniers paragraphes...? Tu devrais les ajouter sous ton coude également. ;)
                                Tu recevras de l'aide si tu fais les choses correctement. (et je serai le premier à le faire).
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Je ne suis responsable que de ce que je dis, pas de ce que vous comprenez... - /!\ Négligences de sécurité sur OpenClassrooms /!\
                                  19 juillet 2011 à 14:41:44

                                  Citation : Caduchon

                                  T'es bien certain d'avoir lu mon dernier paragraphe...? Tu devrais l'ajouter sous ton coude également. ;)
                                  Tu recevra de l'aide si tu fais les choses correctement. (et je serai le premier à le faire).


                                  Désolé mais je n'ai PAS besoin de tes conseils. Donc, NON, je ne vais pas les garder sous le coude !

                                  J'ai eu des réponses, des gens m'ont compris, malgré mes diverses maladresses.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 juillet 2011 à 17:40:33

                                    Bonjour,

                                    Tu dis deux messages plus tôt voir l'ingénieur comme un chef de projet. Tu rejettes néanmoins les conseils de Caduchon sur la gestion de projet, cela me semble paradoxal. La magie du site du Zéro réside dans le fait fait qu'il est parcouru par des membres qui, à défaut de répondre aux questions posées, répondent aux problèmes réels ou à venir.

                                    Comme tu l'as toi même souligné, un chef de projet ne maitrise pas les détails techniques de son projet dès que le projet devient un tant soit peu conséquent. Pour le gérer, il définit donc des objectifs, et des métriques permettant d'évaluer leur satisfaction. C'est exactement ce que Caduchon t'invite à faire.

                                    Bref, si la réponse de Caduchon ne semble pas en apparence répondre à la question que tu as posée, cela ne veut pas forcément dire que la réponse est inintéressante (ca ne veut pas dire l'inverse non plus, je le concède bien volontiers). Caduchon l'a fait remarquablement posément et de manière plutôt complète. De ce point de vue, tu as plutôt de la chance ; inutile, donc, de s'emporter.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    64kB de mémoire, c'est tout ce dont j'ai besoin
                                      19 juillet 2011 à 18:20:09

                                      Bonjour Nathalya et merci pour ton intervention.

                                      De part ma fonction, je suis chef de projet et gère une équipe. Je suis donc sensibilisé a ces sujets.

                                      L'esprit de mon poste est plutôt celui d'un brainstorming avec des personnes compétentes.

                                      Moi, dans mon domaine : la programmation.
                                      Vous, dans les mathématiques.

                                      Je viens vers vous avec une idée qui germe dans ma tête : le projet Abaque décrit ci-dessus.

                                      Nous sommes plutôt au début de projet, les objectifs sont vagues, il faut les cerner les contours, les limites que je discerne mal de part ma non compétence dans votre domaine.

                                      Je ne peux donc pas venir avec toutes les préconisations de Caduchon.

                                      De plus, je suis plus en désaccord avec la "forme" des remarques de Caduchon que du contenu (nous avons vu ça ensemble par MP).

                                      Je m'emporte. Oui. Je le concède. Mais rien de pire dans une réunion avec des personnes qui passent leur temps à dire que rien ne va, que l'on ne va pas dans la bonne direction, ce qui est fait est mal fait, j'aurai fait mieux, etc, etc.

                                      Caduchon a quand même écrit que je vais vous prendre pour des larbins... désolé... mais ça ne passe pas ! la critique est tellement facile !
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Bibliothèque de fonctions mathématiques

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown