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 :

Problème lors d'un fit


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut Problème lors d'un fit
    Bonjour

    Je dois faire un fit sur des données. Le fit est très simple (en y=ax+b). Le problème, c'est que Matlab me sort un résultat qui ne convient pas et je ne sais pas trop d'où le problème peut venir. N'étant pas informaticien, je m'en remet à vous pour savoir si je peux corriger ce problème ou pas.

    Voici le code :

    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
    c=299792458;
    e=1.60217653e-19;
    
    %632.8 -> longueur d'onde en nanomètre
    
    Freq = (c./([632.8 578 546 532 435.8]*1e-9)).*1e-14;
    Freq(2,:)=1
    
    Vo = [0.57 0.5 0.65 0.46 1.03];
    
    
    a = Freq'\Vo'
    
    plot(Freq(1,:),Vo)
    
    Y=Freq'*a;
    
    hold on
    
    plot(Freq(1,:),Y','r')
    Normalement, je ne devrais pas avoir le facteur 1e-14 lors de la création de WaveLength. Si je ne le met pas, Matlab me sort ce résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    a =
     
      1.0e-014 *
     
       0.11692099244259
                      0
    ce qui est faux.

    Lorsque je rajoute ce facteur, Matlab me sort ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a =
     
       0.23792870545507
      -0.68703670902849
    ce qui est juste (mis à part a(1) que je dois remultiplier pas 1e-14).

    Je me demandais s'il vous saviez d'où venait ce problème (problème due à Matlab, ou à la machine que j'utilise...)

    Merci

  2. #2
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Salut,

    A mon avi ton probleme viens d'ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    WaveLength = (c./([632.8 578 546 532 435.8]*1e-9)).*1e-14;
    
    % Pas plutot 1e6 ( pour MHz)  ?
    
    WaveLength = (c./([632.8 578 546 532 435.8]*1e6));
    ++

  3. #3
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Personnellement dans le cas sans le facteur 1e-14 j'ai un warning :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Rank deficient, rank = 1,  tol =   1.3981e+000.
    Donc je pencherais plutôt pour un problème de tolérance.
    Tu peux essayer de faire une recherche sur ce warning sur le site de The Mathworks, pour le coup tu y comprendras peut-être plus que moi, n'étant pas mathématicienne

  4. #4
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Pour mr_samourai :

    Non, l'équation est correcte. En fait, j'ai des étudiants en lab et ceci sont des données provenant de l'expérience de l'effet photo-électrique. Les paramètres a et b dans l'équation y=ax+b sont importants car ils permettent de remonter jusqu'à la constante de Planck (a) et à l'énergie nécessaire pour extraire un électron de la surface du matériaux (b). Et comme tu le sais, E=hv avec v la fréquence en Hz, d'où le facteur 1e-9, car les fréquences sont ici en longueur d'onde (nm).



    Pour Caro :

    Oui, ça ne m'étonne pas. J'essaye de faire un fit entre des données qui ont un rapport de l'ordre de 1e15. Donc bon... Je vais aller jetter un coup d'oeil sur The Mathworks

    Ca m'étonne tout de même que j'ai ce problème car les étudiants ont fait les fit sous excel, et ça a très bien marché.

    Merci pour les réponses

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    Non, l'équation est correcte. En fait, j'ai des étudiants en lab et ceci sont des données provenant de l'expérience de l'effet photo-électrique. Les paramètres a et b dans l'équation y=ax+b sont importants car ils permettent de remonter jusqu'à la constante de Planck (a) et à l'énergie nécessaire pour extraire un électron de la surface du matériaux (b). Et comme tu le sais, E=hv avec v la fréquence en Hz, d'où le facteur 1e-9, car les fréquences sont ici en longueur d'onde (nm).
    Je ne suis pas d'accord .

    Longueur d'onde = c / Frequence

    Si la longueur d'onde est de l'ordre du nm (1e-9) alors la fréquence est de l'ordre de 1e15 (en Hz).
    Dans ton équation tu considéré des nanofréquenses (1e-9 Hz), ce qui corresponds à des longueurs d'ondes de l'ordre du kilométre ....

    ++

  6. #6
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Non non non. Je vois le problème maintenant. En fait, ça vient de ce que j'ai écrit dans le programme. J'ai utulisé le nom WaveLength pour calculer mes fréquences (pas très malin, mais bon, je m'y retrouve)!!!.

    Dans l'équation, 632.8, 578, 546, 532 et 435.8 sont des longueurs d'ondes en nanomètres! Donc je les multiplie par 1e-9 pour avoir des mètres et enfin, je divise c (la vitesse de la lumière) par ces valeurs, pour avoir des fréquences (qui sont de l'ordre de 1e14 d'où le facteur 1e-14 que je rajoute pour les ramener à environ l'ordre des données en y pour que le fit marche).

    Voilà voilà.

    Désolé de t'avoir induit en erreur!

    EDIT : j'ai fait les changements dans le premier post ^^

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Je me basais sur ton code .

    Résolu ?

  8. #8
    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
    Slt.
    c=299792458;
    En km/s c'est bon ?

    Donc je les multiplie par 1e-9 pour avoir des mètres
    OK

  9. #9
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Phryte :

    c = 299792458 m/s (environ 3e8m/s ou 300 000 km/s). C'est la vitesse de la lumière. Il n'y a pas de soucis avec ça ^^.

    EDIT : Ok, j'ai vu que t'as édité entre temps

    mr_samourai :

    Oui je me doutais bien que tu te basais sur le code. Il est tout beau tout propre maintenant ^^.

    Concernant le problème informatique, j'irais voir sur le site de The Mathworks quand j'aurais le temps. Mais en faisant la petite bidouille (rajouter le facteur 1e-14), ça marche.

    Pour vous rassurer, j'ai pris les données, fait les calculs et tout le tralala et je trouve bien à peu près la constante de Planck^^

    Merci pour les remarques en tout cas!

  10. #10
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 979
    Par défaut
    Citation Envoyé par Dam2227 Voir le message

    Concernant le problème informatique, j'irais voir sur le site de The Mathworks quand j'aurais le temps. Mais en faisant la petite bidouille (rajouter le facteur 1e-14), ça marche.
    Je ne vois pas de probléme informatique . Tu fait une transformation linéaire. il ne faut pas s'attendre à avoir les mêmes coefficients de régression (affine).

    En clair, si tu écrase une droite sur l'axe des abscisses (notre cas), tu finira pas avoir un billet nul , et une pente très petite.

    ++ bonne chance

Discussions similaires

  1. Probléme lors d'un Fit sinus avec scipy
    Par astragoth dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 29/07/2009, 08h49
  2. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  3. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 10h58
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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