Recherche du minimum sous matlab
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Recherche du minimum sous matlab



  1. #1
    stagiaireengalere

    Thumbs down Recherche du minimum sous matlab


    ------

    Salut à tous,

    Deux petits soucis sous matlab:
    °Comment déclarer des variables a et b sans lui donner de valeur.. est ce que 'global' ça marche? J'ai une longue liste de calculs dans laquelle j'ai besoin d'introduire ce a et ce b avant de la résoudre à la fin.
    °dans cette liste, je dois effectuer des régressions linéaire sou polynomiale en utilisant la méthode de Williamson(1968).Je cherche donc à trouver les valeurs de a et b pour que cette somme soit minimale. Quelle commande dois-je utiliser? je ne trouve pas de solve..

    Voilà. Je vous remercie d'avance pour vos réponses et je suis à votre dispoition si vous avez besion de plus de détails sur ce projet.

    Un stagiaire

    -----

  2. #2
    stagiaireengalere

    Thumbs down Recherche du minimum sous matlab / des infos en plus pour qu'on m'aide

    Voici la partie de mon code qui me pose toujours problème=

    xdata=W;
    ydata=zeros(1,1)';
    for i=1:n
    fun=@(x,xdata)sum(xdata(i,2)*( (xdata(i,2)*xdata(i,1)+xdata(i ,4)*x(2)*(xdata(i,3)-x(1)))/(xdata(i,2)+xdata(i,3)*x(2)^2)-xdata(i,1)).^2+(xdata(i,4)*(x( 1)+x(2)*xdata(i,1)-xdata(i,3)).^2));
    end
    [x]=lsqcurvefit(fun,[a0 b0],xdata,ydata)

    où W est une matrice de n lignes et quatres colones. la somme que je tente de réduire est fun , elle est toujours strictement positive c'est pourquoi je tente de la réduire à 0 (il n'y arrive jamais, c'est au moins ça pour moi ).

    est ce que quelqu'un voit ce qui ne vas pas....? Les coefficients que je trouve sont radicalement différents de ce que je dois trouver.

    Un stagiaire pls qu'en galère,...

  3. #3
    stagiaireengalere

    Re : Recherche du minimum sous matlab

    Salut à vous,

    Alors j'avance peu à peu dans ce problème mais je suis bloquer à ce stade. L'optimisation est faite mais les coefficients trouvés ne sont pas bon à 10^-2 près, ce qui n'est pas une marge acceptable pour ce problème.

    J'ajoute mon code si vous voyez ce qui ne va pas, faites moi signe s'il vous plait.


    %Monte Carlo Minimisation somme de Williamson (Cas des droites)%

    %Importation des données sous la forme X,Y,u²(X),u²(Y)%

    D=load('D.txt');
    [n,m]=size(D);

    %Moindre carré ordinaire%
    O=zeros(1,2);
    for i=1:1
    gen=polyfit(D(:,1),D(:,2),1);
    O=[O;gen];
    end

    O(1,=[];
    b0=O(1,1)
    a0=O(1,2)

    %Création de la matrice des poids%
    W=zeros(1,4);
    for i=1:n
    W=[W; (D(i,1)) (1/D(i,3)) (D(i,2)) (1/D(i,4))];
    end
    W(1,=[];

    %Génération des 2000xN couples de points suivant la loi normale et
    %traitement des matrices%
    E=zeros(1,2000);
    F=zeros(1,2000);

    for i=1:n
    randn('state', 0);
    gen= randn(2000,1);
    gen=gen';
    E=[E;(gen*sqrt(D(i,3))+D(i,1))];
    F=[F;(gen*sqrt(D(i,4))+D(i,2))];
    end

    G=E';
    H=F';
    G(:,1)=[];
    H(:,1)=[];

    %Minimisation de la somme de Williamson%
    x0=[a0;b0]
    xdata=W;
    anana = @(x)cumsum(xdata(i,2)*((((xdat a(i,2)*xdata(i,1)+xdata(i,4)*x (2)*(xdata(i,3)-x(1)))/(xdata(i,2)+xdata(i,4)*x(2)^2) )-xdata(i,1))).^2+xdata(i,4)*((( x(1)+x(2)*((xdata(i,2)*xdata(i ,1)+xdata(i,4)*x(2)*(xdata(i,3 )-x(1)))/(xdata(i,2)+xdata(i,4)*x(2)^2) ))-xdata(i,3)).^2));
    options = optimset('MaxFunEvals',1000000 0);
    [x,fval] = fminsearch(anana, x0,options)

    à vous, avec une lueure d'espoir.

  4. #4
    pat7111

    Re : Recherche du minimum sous matlab

    Citation Envoyé par stagiaireengalere Voir le message
    L'optimisation est faite mais les coefficients trouvés ne sont pas bon à 10^-2 près, ce qui n'est pas une marge acceptable pour ce problème.
    Quel est le problème alors finalement ?...

    En attendant, quelques petites remarques sur l'optimisation avec Matlab :
    - tu as dû voir dans la toolbox Optimisation qu'il y a plusieurs fonctions de minimisation. fminunc, fmincon entre autres adaptent leur algo aux valeurs courantes du gradient, du hessien etc... Si tu sais exprimer analytiquement ces grandeurs, tu peux l'aider en les lui donnant.
    - si ton y=f(a, b) est trop plat, il se peut qu'il ait du mal à converger.
    - si ta fonction n'est pas convexe, il est fort possible que ça converge vers un minimum local qui n'est pas le minimum global. Si tu as une idée grossière de la réponse, tu limites les risques en initialisant au plus près
    Plutôt appliquer son intelligence à des conneries que sa connerie à des choses intelligentes...

  5. A voir en vidéo sur Futura
  6. #5
    stagiaireengalere

    Re : Recherche du minimum sous matlab

    Salut à toi,

    Les coefficient a, pente de ma droite de régression doit valoir 1.7125. Est ce que ce n'est pas trop plat? J'initialise à 1.6403, coefficient donné par une régression standart.

    La somme de Williamson est ,dans le cas d'une régression linéaire, un polynome du second degré dont le min est vraisemblablement unique (polynome strictement positif).

    Je me demande si mon erreur ne vient pas de l'utilisation de la fonction "sum" (fais t'il la somme sur i? prend il les valeurs des scalaires xdata(i,1 ou 2 ou 3 ou 4) ou les considère t'il comme des colonnes?).

    Quoi qu'il en soit je vais retouner voir cette Toolbox Optimisation en essayant les fonctions que tu me proposes.

    Merci à toi, et si tu as les réponses aux questions ci dessus n'hésites pas.

    Ce programme me rend , M

  7. #6
    stagiaireengalere

    Re : Recherche du minimum sous matlab

    HELP HELP HELP HELP HELP

    Je suis officielement désespérée. J'ai essayé toutes les fonctions de la Toolbox optimization mais à mon grand malheur :
    J'ai trouvé la bonne pente à 2 10^-4 près
    Mais l'ordonnée à l'origine à une erreur de 20% (ecart de 5).

    le tout avec la fonction fminunc.

    Quelqu'un sait il d'où cela peut il venir?

    M

Discussions similaires

  1. Exécutable sous Matlab
    Par invitedd1e6316 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 08/06/2007, 08h42
  2. matlab sous java
    Par ABN84 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/02/2007, 05h25
  3. recherche d un minimum
    Par invitec76b2a69 dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 05/11/2005, 14h34
  4. précision sous matlab
    Par invitef9a325ee dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/09/2004, 16h11
  5. Matlab 6 sous mac OS X
    Par invite751f915c dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/06/2004, 08h25
Découvrez nos comparatifs produits sur l'informatique et les technologies.