Entre théorie..

et pratique.

Soit la suite réelle Endalè que je définis .. Hein? Comment ca pourquoi Endalè? y’a un proe avec Endalè?
Alors! La définition de la suite Endalè() donc:

Soit un entier naturel n, la suite réelle Endalè(n) se définit comme suit:

Endalè(0) = 0.5
Endalè(n+1) = Endalè(n) – 0.1

A. Quelle est la valeur de Endalè(5)?

Vous avez trouvé? Hum, mieux de vous que vous êtes des génies. Moi ca me pash. Je rédige donc un programme java (voir Maclasse.java ci dessous) pour m’aider à résoudre ce problème mathématique du siècle, qui a tellement essouflé Einstein qu’il a sorti la langue. Ce qui a donné sa fameuse photo connue dans le monde entier (Copyrights: La photo d’Einstein ci-dessous a été tirée du site physics.about.com. Si j’en crois leur UserAgreement, je peux l’utiliser pour un usage personnel, non commercial. Voilà.).

Einstein tirant la langue

Einstein, essouflé par le problème Endalè.

B. Et pourtant quand j’execute le programme et que je lui demande si la valeur Endalè(5) est nulle, il me dit faux. Oú est l’embrouille?

(Toutes les gos qui trouveront auront des bisous[virtuels]. Quand aux mecs, qu’ils aillent loin avec leurs barbes)

Donc pour me résumer,
En théorie:
une suite réelle S(n), n entier naturel

S(0) = 0.5
S(n + 1) = S(n) – 0.1

En pratique:
un programme java qui me dit que no oooh, S(5) <> 0, zéro là c’est pour moi là-bas, il ne sait pas de quoi je parle!!
Cherchez l’erreur.

—-

// Le programme Maclasse.java débute ici —

package cm.blog.tiaya;

/**
* @author Eddy, des petites
*
*/
public class MaClasse
{

/**
* Suite reelle endalè
*
* @param n        un entier naturel
* @return        0.5 si n est zéro et endalè(n-1) – 0.1 sinon
*/
private double endale(int n) {
if (n < 0) throw new RuntimeException(« Mouf! n doit etre un entier naturel. Chibagnard! »);
if (n == 0) return 0.5;
return endale(n – 1) – 0.1;
} // end method endalè

/**
* @param args
*/
public static void main(String[] args) {
MaClasse c = new MaClasse();
int n = 5;
System.out.println(« La valeur de Endalè( » + n + « ) est-t-elle nulle?  » + (c.endale(n) == 0));
} // fin de la methode main

} // fin de classe MaClasse

5 réflexions sur “Entre théorie..

  1. D’abord, je suppute que c’est à cause de la précision sur le calcul avec virgule flottante.
    Ensuite, je dis à google « java floating point double? », et il m’indique cette page en résultat: http://www.ibm.com/developerworks/java/library/j-jtp0114/
    Dans le paragraphe « Rounding errors », on apprend qu’un ordinateur ne sait pas représenter avec exactitude certaines valeurs en virgule flottante, comme par exemple 0.1, ce qui cause des problèmes d’arrondis dans les calculs.

  2. Quoi? Que Endalè a fait quoi avec les suites de la programmation? Et pour Java quoi la dedans?
    Bon, je resors aussi vite qu’entrer, avant que les initiés me lancent des tomates pourries.
    Et dire qu’à l’école primaire j’annonçais que je serais ingénieur en informatique
    Bon weekend les gars🙂

  3. @TiAya
    There you go!🙂
    Tu vois alors le travail que tu as travaillé? voilà mes espoirs de bisous envolés mai’nant!

    Non mais plus sérieusement, c’est la représentation interne des nombres à virgule flottante qui est en cause ici, en effet.
    C’est une notion que tout développeur devrait connaître au plus vite, et ensuite garder constamment à l’esprit, surtout s’il développe des applications scientifiques ou financières, au risque de se retrouver à passer des mois et des mois à la recherche de bogues (bugs) qui n’en sont pas.
    Pour éviter les mauvaises surprises, toute fonction qui manie des nombres à virgule flottante devrait indiquer dans son contrat (voir [1], [2]) la précision des calculs (2, 5, 11, x chiffres après la virgule..)

    Un concept similaire, c’est celui de la précision en physique. Je me rapellerai toujours de cette phrase de mon prof. de physiques en Tle: « toute mesure physique est entachée d’erreur. Par conséquence, pour que la mesure soit complète il faut préciser cette erreur.


    [1] La programmation par contrat (JDN developeurs)
    http://www.journaldunet.com/developpeur/tutoriel/theo/050210-conception-programmation-par-contrat.shtml

    [2] Design By Contract (JavaWorld)
    http://www.javaworld.com/javaworld/jw-02-2001/jw-0216-cooltools.html

  4. Je dis hein, Java ne peut pas calculer de tête comme tout le monde?

    Et si tu essaies avec le C++, ça marche ou ça se barre en live aussi?

    J’ai une autre suite: Biya(n) plus dure.
    Biya(n)=Log[Biya(n-1)]- exp[Biya(n-2)] + fraudes_electorales(n); avec Biya(1982)=0 et Biya(2008)=26 et fraudes_electorales(n) est un bruit blanc gaussien (de moyenne 0 et d’écart type 1) positionné aléatoirement sur la suite par la corruption, l’armée, la police, la justice, le tribalisme, etc..

    1- Etudier la suite Biya(n)
    2- Existe t-il une valeur n_0 > 1982 pour laquelle Biya(n_0)=0 ? Si oui, donner en un développement limité à l’ordre 1 en 1/n , et dire si notre génération sera déjà morte.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s