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

Scilab Discussion :

Approximation de coefficients


Sujet :

Scilab

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Approximation de coefficients
    Bonjour à tous,

    Je travail actuellement sur un projet scilab, qui vise à réduire l'écart entre un courbe réalisée à partir de données expérimentales et une courbe théorique.

    Pour résumer, Je dispose d'une fonction à deux paramètres K et Beta inconnus que je dois réussir à approximer grâce aux données expérimentales.

    J'ai actuellement crée un programme qui cherche à minimiser l'écart entre mes deux courbes en utilisant les méthode des moindres carrés et qui donc me donne une approximation des coefficients et l'erreur. Je rencontre plusieurs problèmes, l'erreur est de l'ordre de 10^5 et je dois actuellement renseigner des ordres de grandeur (bornes) pour mes coefficients. Je souhaiterais pouvoir trouver mes coefficients directement par le biais d'une fonction appropriée.

    Une fonction m’intéresse, la fonction lsqrsolve mais je ne vois pas trop comment l'utiliser.

    Bien entendu ma fonction n'est pas linéaire.

    Voici l'état actuel de 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    global M1
    M1=csvRead('C:\...) // importation des données excel
    M1(1:9,:) = []; //on enlève les 0 du fichier de valeurs expérimentales
    err=[];
    kk = [0.5e-11:0.01e-11:2e-11]; //intervalle de K
    bb = [1.2:0.01:1.8];// intervalle de béta
     
    //decsig = 0.20e-9; //0.20=>527845 //0.12=>7057308 // 0.18=>860977 //0.21 =>609155 // 0.24=>1838028
     
    decsig = [0.17e-9:0.001e-9:0.23e-9]; // décalage de sigma crée
    //decsig = 0; //si LS classique
     
    for idec = 1:length(decsig)
        mprintf('\n valeur de decalage : %e',decsig(idec));
        for ikk = 1:length(kk)
         err = [];
          for ibb=1:length(bb) 
           // === least squares (LS) clasiques
           //err(ibb) = sum((M1(:,3) - kk(ikk)*M1(:,2).^(-bb(ibb))).^2);    
           // === LS avec decalage en sigma    
           err(ibb) = sum((M1(:,3) - kk(ikk)*(M1(:,2)-decsig(idec)).^(-bb(ibb))).^2);//moindres carrés avec nouvelle fonction 
           // === LS en relatif
           //err(ibb) = sum( ((M1(:,3) - kk(ikk)*M1(:,2).^(-bb(ibb)))./M1(:,3) ).^2 );    
           // === LS en relatif avec decalage en sigma   
           //err(ibb) = sum( ((M1(:,3) - kk(ikk)*(M1(:,2)-decsig).^(-bb(ibb)))./M1(:,3)) .^2);        
         end
         [emin,imin] = min(err);
          errmin(ikk) = emin;
          ibbmin(ikk) = imin;
        end
        [emin,imin]=min(errmin);
        kkopt(idec) = kk(imin);
        bbopt(idec) = bb(ibbmin(imin));
        LSmin(idec) = emin;
     
    end
    [XXX,imin]=min(LSmin);
     
    mprintf('\r valeur optimal de K : %e',kkopt(imin))
    mprintf('\n valeur optimale de beta : %e',bbopt(imin))
    mprintf('\n valeur optimale de decalage : %e',decsig(imin))
    mprintf('\n valeur de l''erreur : %e', LSmin(imin))
     
    kkold = 7.07e-7;
    bbold = 1.027;
     
    clf
    plot2d(M1(:,2),[M1(:,3), kkopt(imin)*(M1(:,2)-decsig(imin)).^(-bbopt(imin))])
    Voilà ce que j'obtiens actuellement (dsl pour la qualité)

    Cordialement Alex!
    Images attachées Images attachées  

Discussions similaires

  1. [Signal] coefficient de fourier !!!
    Par bessonnet dans le forum Traitement du signal
    Réponses: 7
    Dernier message: 19/12/2006, 15h37
  2. probleme requete recherche approximative
    Par Immo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/08/2005, 17h18
  3. Déterminer les coefficients moyens d'une équation linéaire
    Par Oliveuh dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 12/01/2005, 00h23
  4. Recherche des coefficients d'une matrice 3x3
    Par colorid dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 25/11/2004, 17h52
  5. [Astuce] Approximation de racines carrées
    Par Smortex dans le forum Assembleur
    Réponses: 16
    Dernier message: 18/05/2004, 07h17

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