« L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
Spinoza — Éthique III, Proposition VII
J'adore la javadoc qui n'apporte strictement aucune information utile pour la "large company", c'est exactement ça (même si j'ai aussi souvent vu des "//TODO Javadoc") !
Sinon, les meilleurs sont les chats, je l'ai toujours dit !
Triste que le dev de la strat-up n'utilise pas un accumulateur, les perf vont être désastreuses.
Sinon, la formule fermée pour la suite de Fibonacci, je me souviens l'avoir démontré (et tant d'autres) lors de ma 4ème année d'étude.
Si j'avais su, j'aurais fait un PHD
C'est moi, ou une approche récursive donne des temps de calcul atroces sur une valeur élevée? C'est joli et élégant, la récursivité, mais perso, j'aurais bêtement rempli un tableau de 1 à N. Avec un bête for. C'est moche, mais c'est compréhensible par un gnou.
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
C'est justement ce que j'ai dit précédemment.
L'ordi gardant une liste d'appel en mémoire qui se dédouble à chaque fois, la StackOverflow n'est pas loin.
Il doit passer par un accumulateur et donc une fonction auxilliaire.
Généralement, c'est une des premières choses qu'on apprend avec la programmation récursive.
http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main
Ici, tu dois garder deux valeurs en "mémoire" car le "n" est obtenu à partir du "n-1" et "n-2".
Donc typiquement
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public int fibonacci_aux(int n, int n_1, int n_2){ if(n==0) { return n_1 } else{ return fibonacci_aux(n-1, n_2, n_1+n_2) } }
Donc,
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public int fibonacci(int n){ return fibonacci_aux(n, 1, 1) }
Ou alors l'approche itérative toute bête:
Et encore mieux, faire un branchement: si n est petit, appliquer l'algo récursif, s'il est grand, appliquer l'itératif. C'est le sens du commentaire de la startup: "switch over to iterative approach at some point".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int n_minus_1 = 1; int n_minus_2 = 1; int result = 2; for(int i=2; i<n; ++i) { int tmp_result += (n_minus_1 + n_minus_2); n_minus_2 = n_minus_1; n_minus_1 = tmp_result; result = tmp_result; } return result;
« L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
Spinoza — Éthique III, Proposition VII
Bonjour,
Vous excuserez mon ignorance crasse, mais ... a quoi ca sert, une suite de Fibonacci ? (en "vrai").
Merki.
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
Je crois que certains phénomène biologique la suive mais je ne sais plus les quels.
Edit un exemple :
http://lenombredor.wikispaces.com/biologie-nature (pour voir le schéma c'est plus parlant)
L’exemple des abeilles
Les abeilles font partie de la famille des Hyménoptères qui comprend aussi les guêpes et environ 100 000 espèces de fourmis.
Quasiment toutes les espèces de cette famille ont une particularité chimique assez curieuse: les œufs fécondés donnent naissance à des femelles tandis que ceux qui ne l'ont pas été donnent naissance à des mâles.
Chez les abeilles, c'est donc la reine qui contrôle le sexe d'un œuf en décidant ou non de le féconder à partir du sperme emmagasiné des mois, voire des années auparavant lors du vol nuptial. Ainsi, génétiquement parlant, l'abeille femelle a un père et une mère (la reine), alors que l'abeille mâle a une mère uniquement.
On schématise les ancêtres (M=mâle ; F=femelle) d'une abeille mâle.
biologie-image21.jpeg
En remontant les générations, on trouve donc des nombres d'ancêtres égaux aux nombres de la suite de Fibonacci.
On remarque également qu'à chaque génération, les nombres de femelles et de mâles sont deux nombres consécutifs de cette suite.
Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !
Théoriquement, à rien en fait si ce n'est qu'elle apparait de temps en temps dans les problèmes de dénombrement.
Et vu que c'est des maths, y a juste le "théoriquement" qui est interressant.
Et là, pas de bol, il n'y a pas non plus de vraies applications pratiques.
C'est un peu comme le nombre d'or, on utilise à chaque fois ces exemples pour dire "les maths c'est magique" mais les matheux ne les aiment pas car ça n'a strictement aucun intéret théorique.
Pour Lady, pour les abeilles, il y a un problème vu que l'explication ne parle pas des ouvrières qui sont asexuées.
En fait, les économistes, et plus généralement tous ceux qui travaillent sur les mathématiques financières, raffolent de ce genre de jouet.
Un exemple concret et véridique: la banque multinationale AAF (Arnak And Flouze) basée au Luxenchtein, s'est retrouvée, après la crise des raves de 2004, en possession de millions de titres pour raves (que Mercedes Croc appelle des 'actifs pourris' dans son fameux manuel de management "Après la crise, vous rependrez bien un peu de vaseline?", édité chez Fion, 2009).
Le défi de Mr Larry Golade, directeur financier chez AAF, c'est de se débarrasser le plus rapidement de ces actifs pour raves, avant que ça pète et qu'il ne serve de fusible, c'est à dire qu'il ne se prenne un procès, qu'il en prenne plein la poire et que les pontes de l'USPGNL (l'union socialiste populaire de gauche nationale libérale, le parti au pouvoir au Luxenchtein), puisse prouver qu'il lutte activement contre les salauds de la finance. Enfin bref, c'est là que ça devient intéressant, mais aussi compliqué, alors suivez bien.
Notre pauvre Larry, donc, se retrouve avec 100 millions d'euros d'actifs pour rave qui ne vaudront plus un radis dans quelques semaines. Il doit trouver un moyen de refourguer rapidement toute cette raclure. Il se rappelle que la AAF a acheté, le mois dernier, pour 100 millions d'euros de lunettes pour huitres. Il faut savoir que la lunette pour huitres a un comportement exemplaire dans les modèles prédictifs utilisés par l'AAF. Selon ces modèles, les lunettes pour huitres que l'AAF a acheté 10 euros l'unité cette année, en vaudront 20 l'année prochaine. Et comme Mr Jaymie L'Paquet, financial chief executor de l'AAF, a des potes dans la banque rivale F&B (Flouze & Benef), il sait que les modèles prédictifs de la F&B confirment ces résultats.
Notre bon vieux Larry a la solution: il va créer un nouvel investissement, baptisé le fond UMaDeF (Un Max De Flouze) qui consiste en 50% d'actifs de raves, et 50% d'actifs de lunettes à huitres. Il vendra ça aux retraités luxenchteiniens qui cherchent de bons investissement, en leur montrant les courbes des modèles prédictifs des lunettes pour huitres, qui sont des plus flatteuses, et se débarrassera ainsi des actifs pour raves sans que personne ne s'en rende compte.
Le rapport avec Fibonacci dans tout ça, c'est que les modèles prédictifs qui calculent les évolutions des produits financiers utilisent ce type de série. Le principe de ces modèles prédictifs c'est de trouver des patrons (patterns) dans le comportement des actifs. Mais pour chercher ces patrons, les économistes utilisent des choses qu'ils connaissent, qui sont souvent des séries dites "naturelles" (qui représentent, plus ou moins, des phénomènes ou des tendances naturelles), comme par exemple la suite de Fibonacci.
Concrètement, un économiste veut créer un modèle prédictif. Pour ce faire, il a 10 ans de données concernant la totalité des actifs côtés au Stoxx. Il va essayer d'en lire les tendances, de façon à ce qu'un jour, si un actif présente les même évolutions, il pourra prévoir l'évolution de cet actif. Et pour essayer de trouver ces tendances, il va utiliser des séries connues (Fibonacci, Rainbow, Monaco, etc.), et si ça colle avec l'une d'entre elle, il l'utilisera pour modéliser le patron.
Je ne suis pas sûr d'avoir été clair là
« L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
Spinoza — Éthique III, Proposition VII
Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peut–être qu'il peut être sûr, etc.
Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
Mes 2 cts,
--
jp
Juste pour apporter une touche mathématique au débat. Et si jamais on vous demande, il existe un moyen simple et rapide de calculer n'importe quel terme de la suite de Fibonnaci :
Voilà !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 double getFibonacciNumber(int n) { double phi = (1 + Math.Sqrt(5)) / 2; double phi2 = - 1 / phi; double result = Math.Round((1/Math.Sqrt(5)) * (Math.Pow(phi, n) - Math.Pow(phi2, n))) return result; }
"tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"
Si, si, très. Merci.
On dirait une explication du Docteur CAC, pour le style.
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
D'où l'utilisation de la fonction Math.Round() dans le code qui arrondi à l'entier le plus proche. C'est simplement que celle-ci retourne un double (enfin, en C# en tout cas, dans les autres langages je ne sais pas). Tu n'as qu'à faire la conversion en integer avant le return si tu souhaites obtenir un entier, je suppose que tu sais faire n'est-ce pas ?
Il n'est pas nécessaire de se montrer désagréable en tout cas.
PS : Je viens d'ailleurs de tester le code que j'ai écrit plus haut, c'est quand même bien efficace... Oui, je sais, je me jette des fleurs, et alors
"tatatatatatatatataaa !! tata taaa !! tata taaa !! tatatata tataaa !! tata taaa !! tata taaa !!"
Saint mlp56: défenseur des entiers, et de l'intégrité de la suite de Fibonacci.
Faites attention tout de même, le mec qui a fait feu cet aprèm sur Paris est peut être un défenseur d'une autre suite mathématique, ulcéré de voir tout les mauvais traitements / interprêtations qui ont pu en être fait.
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
Tu peux faire plus simple : comme phi2 est inférieur à 1, il n'a pas d'effet sur le résultat.
Au final tu as quelque chose comme
A mon avis, la solution du docteur en maths mériterait d'être un peu plus matheuse...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int fib(int n) { double rac5=sqrt(5.0); double dfib=pow((1.0+rac5)/2.0,n)/rac5; return (int)(dfib+0.5); }
La fonction génératrice de la suite de Fibonacci est x/(1-x-x^2)
On obtient donc les termes de la suite en développant cette fonction en série entière, d'un coup de matlab, ou de mathematica...
En J (un langage fonctionnel dérivé de l'APL): ça donne, pour les 20 premiers termes
Explication : (%-. - *: ) c'est la fonction génératrice (ca se lit "diviser par négation moins carré", négation c'est 1-x, carré x^2, négation moins carré, c'est donc : 1 - x - x^2, diviser par négation moins carré, ca nous fait donc x/(1-x-x^2), qui a dit qu'il fallait des x pour définir une fonction?)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 (%-.-*:) t. >: i.20
t. ca calcule le développement en série d'une fonction, i.20 (i se prononce iota) c'est la suite des 20 premiers entiers, et >: l'incrémentation : donc >:i.20 ce sont les entiers de 1 à 20.
Francois
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager