IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Ecriture d'une fonction qui dessine la fonction de Cantor (Cantor function)


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Mathematique
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Mathematique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Par défaut Ecriture d'une fonction qui dessine la fonction de Cantor (Cantor function)
    Bonsoir tous le monde!
    j’espère que vous allez très bien

    Mon but de cette discussion et d'arriver à faire dessiner la célèbre fonction "Escalier de Cantor" ou "Escalier du Diable"


    Nom : ssssss.JPG
Affichages : 1520
Taille : 53,9 Ko


    Donc il faut une fonction récursive en MATLAB qui fait entrer le nombre n, ce n est lui qui figure dans la photo accompagné.

    Et je vois bien de faire dessiner des courbe pour des n différentes,
    autrement dit:

    faire donner n=1 et n=2 et dessiner les deux courbes en même fenêtre.

    Et merci beaucoup!


    Bien cordialement!!!

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut Ecriture d'une fonction qui dessine la fonction de Cantor (Cantor function)
    Bonjour,

    Voici un exemple :
    PP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clear
    figure
    hold on
    x=[0 1;0 1/3;1/3 2/3;2/3 1];
    hold on
    cantor3(x,0);
    Function :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function y=cantor3(x,n)
    n=n+1;
    switch n
        case 1
            y=x(n,:);
     
        case 2
             y(1,:)=3*x(n,:)./2;
     
        case 3
             y(1,:)=[1/2 1/2];
     
        case 4
             y(1,:)=3*x(n,:)./2-1/2;
     
    end
    if n<5
    line(x(n,:),y(1,:))
    cantor3(x,n);
    end
    grid

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Mathematique
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Mathematique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Par défaut
    Bonjour,

    Je m'excuse pour le retard!

    J'ai testé votre code Mr.phryte , j'ai vécu quelque difficulté dans le bien comprendre (Car je suis encore un Débutant )

    Voilà ce que j'ai :

    - J'ai collé le code de la fonction dans une nouvelle fenêtre 'Script'

    Nom : 1.JPG
Affichages : 931
Taille : 32,3 Ko

    - Ensuite, j'ai collé le code de l’exécution dans la commande windows du Matlab

    Nom : 2.JPG
Affichages : 1193
Taille : 62,1 Ko

    après clique sur 'Entrer', la fenêtre figure s'affiche 100 fois sans arrêt, et présente le même dessin:

    Nom : 3.JPG
Affichages : 890
Taille : 47,5 Ko


    Ça avec n=0 , et même chose pour n=1


    D'autre part Maple:

    1. EscalierDiable := proc (a, b, c, d, n) local interval;
    2. if n = 0 then interval := [a, b], [c, d]
    3. else
    4. interval := EscalierDiable(a, b, (2/3)*a+(1/3)*c, (1/2)*b+(1/2)*d, n-1), EscalierDiable((2/3)*a+(1/3)*c, (1/2)*b+(1/2)*d, (1/3)*a+(2/3)*c, (1/2)*b+(1/2)*d, n-1), EscalierDiable((1/3)*a+(2/3)*c, (1/2)*b+(1/2)*d, c, d, n-1)
    5. end if;
    6. interval end proc


    En donnant des valeurs à nos variables: a, b, c, d, n
    a=0
    b=1
    c=0
    d=1

    Car [a,b]=[0,1] l'ensemble de définition de notre fonction qui est déjà définit;
    et [c,d]=[0,1] c'est le petit village où vient les images de notre fonction;

    [a,b]=[0,1] dans l'axe des abscisses,
    [c,d]=[0,1] dans l'axe des ordonnés,

    Pour n=0
    plot([EscalierDiable(0, 0, 1, 1, 0)])

    Nom : 11.JPG
Affichages : 915
Taille : 52,2 Ko

    Pour n=1
    Nom : 22.JPG
Affichages : 838
Taille : 23,6 Ko

    Pour n=2
    Nom : 33.JPG
Affichages : 790
Taille : 22,0 Ko

    Pour n=3
    Nom : 44.JPG
Affichages : 829
Taille : 22,1 Ko

    Pour n=4
    Nom : Capture.JPG
Affichages : 786
Taille : 21,8 Ko
    Pour n=5
    Nom : Capture.JPG
Affichages : 783
Taille : 22,4 Ko
    Pour n=6
    Nom : Capture.JPG
Affichages : 794
Taille : 22,0 Ko
    Pour n=7
    Nom : Capture.JPG
Affichages : 781
Taille : 22,3 Ko
    Pour n=8
    Nom : Capture.JPG
Affichages : 767
Taille : 22,2 Ko




    Note:
    Une procédure est un enchaînement d'instructions permettant de calculer un résultat en fonction d'une suite
    d'arguments. Elle commence par le mot clé proc(arguments), se termine par end proc (ou end) et on lui
    affecte généralement un nom.Construisons une procédure simple G, pour définir une fonction telle que
    G(x) = 1 si x < 0
    G(x) = cos(x) si x ≥ 0


    G:=proc(x) if evalf(x) < 0 then 1 else cos(x) end if end proc;

    > G(-1),G(0),G(Pi/4);

    Résultat:
    1, 1, 1/2, sqrt(2)


    Est-ce-possible d'avoir un code comme celui de Maple,

    Je crois que j'ai male utilisé votre code Matlab


    Je vous remercie encore Mr.phryte

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    clear
    figure
    hold on
    grid
    EscalierDiable(0, 0, 1, 1, 4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function EscalierDiable(a, b, c, d, n)
    if n == 0
        line([a c],[b d])
    else
        EscalierDiable(a, b, (2/3)*a+(1/3)*c, (1/2)*b+(1/2)*d, n-1);
        EscalierDiable(a,b,(2/3)*a+(1/3)*c,(1/2)*b+(1/2)*d,n-1);
        EscalierDiable((2/3)*a+(1/3)*c, (1/2)*b+(1/2)*d, (1/3)*a+(2/3)*c, (1/2)*b+(1/2)*d, n-1);
        EscalierDiable((1/3)*a+(2/3)*c, (1/2)*b+(1/2)*d, c, d, n-1);
    end

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Mathematique
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Mathematique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Par défaut
    Bonjour phryte
    Nom : Capture.JPG
Affichages : 805
Taille : 74,8 Ko

    Ça a bien marché , et sans la récursivité de l'ouverture de la fenêtre 'Figure'

    Merci Infiniment!


    S'il vous Monsieur phryte, pour donner une bonne visualisation aux discussions, c'est mieux de poser nos code de la forme suivante (Comme vous avez fait) :
    Nom : 1.JPG
Affichages : 742
Taille : 22,6 Ko

    Quel est le secret de faire cette boite dans le site?

    J'ai cherché dans la boite de 'Répondre à la discussion', mais sans résultat
    Nom : Capture1.JPG
Affichages : 817
Taille : 59,9 Ko


    Je vous remercie une autre fois pour tous phryte

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Par défaut
    Bonjour,

    Regarde à : club.developpez.com/regles/

    Si tu fais plusieurs essais, pour éviter que les courbes se superposent :
    - ferme la fenetre
    ou
    - frappe

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Mathematique
    Inscrit en
    Août 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Mathematique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 4
    Par défaut
    Merci beaucoup Monsieur phryte

  8. #8
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    ou alors ne pas faire de hold on ...

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/02/2009, 16h15
  2. Réponses: 15
    Dernier message: 29/11/2008, 11h56
  3. Réponses: 1
    Dernier message: 28/12/2007, 12h14
  4. Réponses: 4
    Dernier message: 24/01/2007, 19h45
  5. Fonction qui cache en fonction d'une selection de liste
    Par AlphonseBrown dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/03/2006, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo