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 :

Approximation par fractions rationnelles


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut Approximation par fractions rationnelles
    Bonjour,
    J'essaye de développer un petit programme d'approximation de fonctions par fractions rationnelles , voici mon programme

    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 [f,g]=frac(n,m,x,y)
    %x vecteur d'echantillonage
    %y vecteur d'echantillonage
    %if size(x) size(y) test à faire sur la taille de x , y
    if size(x)~=size(y)
        error('les tailles des vecteurs x et y sont différentes');
    end
    a=ones(1,n+1);
    b=ones(1,m+1);
    %maintenant on cree une fonction handle fraction rationnelle
    F=@(g)polyval(g(1:n+1),x)./(polyval([g(n+2:n+m+1) 1],x).*y)-1;
    %et on utilise cette fonction handle dans fminimax
    z=fminimax(F,ones(1,n+m+1));
    a(1:n+1)=z(1:n+1); 
    % on regroupe les coefficents du numerateur dans a
    b(1:m)=z(n+2:n+m+1);
    % on regroupe les coefficients du denominateur dans b.
     
    f=a;
    g=b;
    Le programme semble marcher sans problème(pas de problème de syntaxe ni de calcul), cependant les résultats sont fantaisistes , même si je lui donne des courbes polynomiales il n'arrive même par à l'approximer.

    Si quelqu'un peut m'apporter une aide ou me rediriger vers un travail de qualité qui a déja été fait , je vous remercie d'avance.

  2. #2
    Membre Expert
    Avatar de kmaniche
    Inscrit en
    Janvier 2006
    Messages
    1 717
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 717
    Par défaut
    Est ce que tu peux donner un exemple d'utilisation de la fonction ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    un exemple:
    si je veux approximer x^3+x+1
    je choisis les vecteurs d'échantillonnage x=[0 1 2]
    y vaut alors [0 3 11] car y prend les valeurs de x^3+x+1 en x = 0, 1 , 2

    ensuite pour le programme je choisis le degré du numérateur
    ici n=3 ,
    celui du dénominateur m=0
    [f,g]=frac(n,m,x,y)
    me donne alors f( vecteur contenant les coefficients du numérateur par ordre décroissant (plus haut degré vers le plus bas)
    et g( vecteur contenant les coefficients du dénominateur par ordre décroissant(plus haut degré vers le plus bas)
    Voilà
    il est possible de tester mon programme avec opier coller et sauvegarder
    et puis tester.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 4
    Par défaut
    Bonjour,
    Voilà je commence à rencontrer un problème
    j'ai fait le test suivant

    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
    >> x=[0 1 2] 
     
    x =
     
         0     1     2
     
    >> y=[1 3 9]
     
    y =
     
         1     3     9
     
    >> [f,e]=frac0(3,0,x,y)
     
    Solver stopped prematurely.
     
    fminimax stopped because it exceeded the function evaluation limit,
    options.MaxFunEvals = 500 (the default value).
     
     
    f =
     
      1.0e+007 *
     
       -2.6899   -1.6317   -1.1026   -0.8458
     
     
    e =
     
         1
    fminimax a stoppé son calcul parceque elle a dépassé la limite d'evaluation.
    Cela me semble étonnant vu que l'exemple traité est très simple ?
    une idée ?

Discussions similaires

  1. Approximation par un ellipsoïde
    Par ines ben alaya dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 10/03/2015, 18h49
  2. [XL-2007] Approximations par exponentielles décroissantes
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2012, 13h25
  3. Graphique bar3(x) approximé par une gaussienne ?
    Par Camtalion dans le forum MATLAB
    Réponses: 3
    Dernier message: 24/08/2011, 13h22
  4. approximation par une Gaussienne
    Par CHATon dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/04/2011, 19h11
  5. [RegEx] Test d'une chaîne de caractère par expression rationnelle
    Par sliderman dans le forum Langage
    Réponses: 6
    Dernier message: 28/03/2008, 12h51

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