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 :

Matlab point fixe


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 6
    Par défaut Matlab point fixe
    Bonjour,
    Je suis nouveau sur le forum et j'ai une question concernant la méthode du point fixe.
    Je sais que d'autres postes existent concernant cette méthode mais je n'arrive pas à faire ce que je voudrais alors je crée mon propre poste.

    Je connais la fonction f(x)=x - y tan a - C/(2*(x²+y²)^0.5)
    Je connais : C=0.003
    y=0 au début puis augmente avec un pas de 0.5
    Je dois tester tester ma fonction avec un a en radian avec les valeurs 0, 2, 4, 6, 8 et -2 degrés
    Je dois effectuer 21 itérations et avoir le résultat avec une tolérance de 0.005

    Je dois afficher mon résultat sous forme de graphique avec une courbe pour chaque angle.

    Je ne sais absolument pas coder (d'ailleurs j'ai peut-être oublié des informations importantes désolé) est ce que quelqu'un pourrait me montrer comment adapter ma fonction à cette méthode et faire un plot ?
    Merci

  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
    Bonjour,

    As-tu commencé le programme.
    Fais nous voir.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 6
    Par défaut
    J'ai ça mais ça ne marche pas vraiment... J'ai essayé de récupérer des morceaux de code sur internet

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    n=1;
    AOA=0;
    mu=0;
    Ct=0.0030;
     
    x0=0.5;
    phi=fun;
    eps=0.0005;
    nmax=21;
     
    function[p,res,iter]=ptfixe(x0,phi,eps,nmax)
    while n<=21
    alpha = AOA * 2*pi / 360; % Degrees to Radians
    fun=@(lambda)lambda - mu * tan(alpha) - Ct/(2*(mu^2 + lambda^2)^(1/2));
    lambda0 = [-100 100]; % Initial Values
    lambda(n,1) = fzero(fun, lambda0); 
    mu = mu + 0.5;
    n = n + 1; 
    end
    x=x0;
    phix=phi(x);
    iter=0;
    err=abs(phix-x);
    while(err>eps)&(iter<=nmax)
     iter=iter+1;
      x=phix;
     phix=phi(x);
    end
    p=x;
    res=phix-x;
    end
     
    plot(Interval,lambda,'k')
     
    Interval=0:0.5:10;
    axis ([0 3 -0.2 0.6])
    grid on
    xlabel('Forward speed ratio, \mu/\lambda_{h}')
    ylabel('Inflow ratio, \lambda/\lambda_{h}')
    title('Results')

    Entre temps j'ai changé le nom de mes variables
    x=lambda
    y=mu
    a=alpha
    C=Ct
    AOA correspond à la valeur de mes différents angles 0, 2, 4, 6, 8 et -2

    Merci pour votre retour

  4. #4
    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 : 50
    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
    Citation Envoyé par wanowan Voir le message
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    n=1;
    AOA=0;
    mu=0;
    Ct=0.0030;
     
    x0=0.5;
    phi=fun;
    eps=0.0005;
    nmax=21;
     
    function[p,res,iter]=ptfixe(x0,phi,eps,nmax)
    while n<=21
    alpha = AOA * 2*pi / 360; % Degrees to Radians
    fun=@(lambda)lambda - mu * tan(alpha) - Ct/(2*(mu^2 + lambda^2)^(1/2));
    lambda0 = [-100 100]; % Initial Values
    lambda(n,1) = fzero(fun, lambda0); 
    mu = mu + 0.5;
    n = n + 1; 
    end
    x=x0;
    phix=phi(x);
    iter=0;
    err=abs(phix-x);
    while(err>eps)&(iter<=nmax)
     iter=iter+1;
      x=phix;
     phix=phi(x);
    end
    p=x;
    res=phix-x;
    end
     
    plot(Interval,lambda,'k')
     
    Interval=0:0.5:10;
    axis ([0 3 -0.2 0.6])
    grid on
    xlabel('Forward speed ratio, \mu/\lambda_{h}')
    ylabel('Inflow ratio, \lambda/\lambda_{h}')
    title('Results')
    bon quelques soucis dans ton code- :
    - là tu utilise un script
    - dans lequel tu déclares une fonction (ca ne se fait pas)
    - fonction que tu n'appelles jamais
    - et dont tu essayes de tracer les variables internes (c'est pas impossible, mais c'est du matlab poussé et je doute que ce soit ce à quoi tu avais pensé)

    bref, il faut réorganiser tout ca !
    essayes de le faire sans copier coller des blocs ni utiliser des concepts de matlab très avancés que tu ne maitrises pas (opérateur @ par exemple)

    en gros tu dois commencer par écrire une fonction ta fonction f (dans un autre fichier qui s'appelles f.m) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function z = f(x,y,C)
    z = x - y tan a - C/(2*(x²+y²)^0.5)
    end
    puis dans ton script tu peux juste balayer tes données avec des boucles for et while

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 6
    Par défaut
    Alors voila j'ai ça et je n'ai pas d'erreur lors de l'exécution, est ce bien ?

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    clc, close all, clear all
     
    function y = fo(lambda,mu,alpha)
    y = lambda - mu * tan (alpha) - 0.0030 / (2 * (lambda^2+mu^2)^0.5)
    end
     
    function[p,res,iter]=ptfixe(x0,y,eps,nmax)
    for AOA=0,2,4,6,8,-2
    while n<=21
    alpha = AOA * pi / 180
    lambda0 = [-100 100]; % Initial Values
    lambda(n,1) = fzero(y, lambda0); 
    mu = mu + 0.5;
    n = n + 1; 
    end
     
    x0=0.5;
    eps=0.0005;
    nmax=21;
     
    x=x0;
    y=y(x);
    iter=0;
    err=abs(y-x);
    while(err>eps)&(iter<=nmax)
    iter=iter+1;
    x=y;
    y=y(x);
    end
    p=x;
    res=y-x;
    end
    end
    Je ne vois pas trop quelle variable utiliser pour les plots

    Merci pour votre aide

  6. #6
    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 : 50
    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
    Citation Envoyé par wanowan Voir le message
    je n'ai pas d'erreur lors de l'exécution
    certe, mais se passe t'il quelque chose ?
    récupères tu des variables dans le workspace ?

    parce que là, on dirait que tu as défini deux fonctions, mais que tu ne les appelles jamais

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/05/2009, 17h57
  2. Réponses: 3
    Dernier message: 29/01/2009, 23h00
  3. Rotation caméra autour d'un point fixe
    Par jbeaussier dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/01/2008, 00h16
  4. Calculs de points fixes
    Par iamsebfont dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/10/2007, 15h45

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