Prblème Matlab: fmincon
Résolu/Fermé
Jaouad
-
24 mars 2009 à 11:24
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 31 mars 2009 à 08:23
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 31 mars 2009 à 08:23
A voir également:
- Fmincon matlab
- Acp matlab - Forum Matlab
- Fmincon matlab - Forum Matlab
- Boucle for matlab ✓ - Forum Matlab
- Dérivée matlab - Forum Matlab
- Méthode de cholesky matlab - Forum Matlab
7 réponses
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
24 mars 2009 à 14:48
24 mars 2009 à 14:48
Salut.
Donne nous ta fonction alors, et l'appel à fmincon.
Donne nous ta fonction alors, et l'appel à fmincon.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
24 mars 2009 à 16:35
24 mars 2009 à 16:35
J'avoue que j'en reste un peu dubitatif... Deux tests à te proposer :
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( @LogGarch_Norm , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ;
D'après l'exemple trouvé sur le site matlab, et une déclaration de fonction sans crochet :
loglikelihood = LogGarch_Norm( parameter )
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( @LogGarch_Norm , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ;
D'après l'exemple trouvé sur le site matlab, et une déclaration de fonction sans crochet :
loglikelihood = LogGarch_Norm( parameter )
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
24 mars 2009 à 17:22
24 mars 2009 à 17:22
J'ai essayé ta proposition, mais ça ne change rien !
Ce qui est étonnant c'est que lorsque je laisse tomber les contraintes et j'optimise avec fminsearch, le problème ne se pose pas, mais sans les contraintes c'est autre chose.
Je vais continuer à chercher de mon côté, j'espère que ce n'est pas un problème interne à matlab. j'ai découvert qu'il a une faille (0^0=1) mais j'ai pas envie d'en trouver d'autres.
Merci quand même pour ton aide
A+
Ce qui est étonnant c'est que lorsque je laisse tomber les contraintes et j'optimise avec fminsearch, le problème ne se pose pas, mais sans les contraintes c'est autre chose.
Je vais continuer à chercher de mon côté, j'espère que ce n'est pas un problème interne à matlab. j'ai découvert qu'il a une faille (0^0=1) mais j'ai pas envie d'en trouver d'autres.
Merci quand même pour ton aide
A+
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
24 mars 2009 à 15:05
24 mars 2009 à 15:05
Bonjour Char Snipeur,
- L'appel à fmincon est le suivant (dans une boucle):
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( 'LogGarch_Norm' , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ;
- La fonction à optimiser est:
[ loglikelihood ] = LogGarch_Norm( parameter )
avec : loglikelihood = ( nobs / 2 ) * log( 2 * pi ) + 0.5 * sum( log( h ) ) + 0.5 * sum( ( ( rdt - m ) .^ 2 ) ./ h )
parameter = [ m a0 a1 b1 ]
a0 a1 et b1 interviennent dans h
rdt est une variable globale définie dans un autre programme ( un vecteur nobs*1)
Bien cordialement.
Jaouad
- L'appel à fmincon est le suivant (dans une boucle):
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( 'LogGarch_Norm' , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ;
- La fonction à optimiser est:
[ loglikelihood ] = LogGarch_Norm( parameter )
avec : loglikelihood = ( nobs / 2 ) * log( 2 * pi ) + 0.5 * sum( log( h ) ) + 0.5 * sum( ( ( rdt - m ) .^ 2 ) ./ h )
parameter = [ m a0 a1 b1 ]
a0 a1 et b1 interviennent dans h
rdt est une variable globale définie dans un autre programme ( un vecteur nobs*1)
Bien cordialement.
Jaouad
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
24 mars 2009 à 15:46
24 mars 2009 à 15:46
LogGarch_Norm doit retourner un scalaire, es tu tu sur que c'est le cas ? comme tu dit que rdt est un vecteur...
affiche la taille pour être sur.
Si tu utilise LogGarch_Norm directement est-ce que l'erreur apparaît ?
affiche la taille pour être sur.
Si tu utilise LogGarch_Norm directement est-ce que l'erreur apparaît ?
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
24 mars 2009 à 16:00
24 mars 2009 à 16:00
Ce n'est pas le fait que rdt soit un vecteur qui pose problème, parce que je fait, après transformation, la somme de ses éléments et donc j'ai un scalaire.
j'ai bien exécuté la fonction LogGarcj_Norm toute seule et elle me retourne un scalaire ( valeur négative avec virgule).
Merci Char Snipeur pour tes efforts !
j'ai bien exécuté la fonction LogGarcj_Norm toute seule et elle me retourne un scalaire ( valeur négative avec virgule).
Merci Char Snipeur pour tes efforts !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 832
24 mars 2009 à 19:11
24 mars 2009 à 19:11
Salut
Je passe juste vite fait pour signaler un truc que je comprends pas trop...
message 0
Bonne soirée
Je passe juste vite fait pour signaler un truc que je comprends pas trop...
message 0
Error using ==> LogGarch_Student Too many output arguments.message 2
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( 'LogGarch_Norm' , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ; - La fonction à optimiser est: [ loglikelihood ] = LogGarch_Norm( parameter )Y a comme un truc pas cohérent...
Bonne soirée
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
30 mars 2009 à 19:42
30 mars 2009 à 19:42
Salut Sacabouffe,
Tu dis qu'il y a une incohérence. T'as raison, LogGarch_Norm ou LogGarch_Student !!!
Ce sont deux fonctions objectif. Je voulais optimiser l'une l'autre.
Merci pour la remarque.
Tu dis qu'il y a une incohérence. T'as raison, LogGarch_Norm ou LogGarch_Student !!!
Ce sont deux fonctions objectif. Je voulais optimiser l'une l'autre.
Merci pour la remarque.
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
25 mars 2009 à 08:16
25 mars 2009 à 08:16
Bien vu Sacabouffe !
0^0 = 1... pour toi ça devrais donné quelle valeur ? moi, je dirai 1 ou NAN au pire. Si tu dit 0^0 c'est zéro multiplier par zéro zéro fois (c'est à dire que tu ne fais rien), tu as bien 1.
0^0 = 1... pour toi ça devrais donné quelle valeur ? moi, je dirai 1 ou NAN au pire. Si tu dit 0^0 c'est zéro multiplier par zéro zéro fois (c'est à dire que tu ne fais rien), tu as bien 1.
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
30 mars 2009 à 19:45
30 mars 2009 à 19:45
A non Char Snipeur, 0^0 ne fait pas 1. Preuve: 0^0 = 0^(a-a) = 0^(a) / 0^(a) = 0/0 qui indéfini, donc NaN.
Pour une fois t'as pas raison ;)
Pour une fois t'as pas raison ;)
Char Snipeur
Messages postés
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
>
FouadSami
Messages postés
11
Date d'inscription
mardi 24 mars 2009
Statut
Membre
Dernière intervention
30 mars 2009
31 mars 2009 à 08:23
31 mars 2009 à 08:23
cf message de sacabouffe.
Avec ta démonstration, si tu pose b=0^a
b/b=1;
Ce que je dis, c'est que si 0^0 ne donne pas NaN, une des meilleurs valeurs pour continuité, c'est 1.
Avec ta démonstration, si tu pose b=0^a
b/b=1;
Ce que je dis, c'est que si 0^0 ne donne pas NaN, une des meilleurs valeurs pour continuité, c'est 1.
Sacabouffe
Messages postés
9427
Date d'inscription
dimanche 19 août 2007
Statut
Membre
Dernière intervention
29 mai 2009
1 832
25 mars 2009 à 10:31
25 mars 2009 à 10:31
Salut
Comme ça avant de le faire, j'aurais dit que Matlab donnerait NaN vu qu'en toute rigueur c'est pas défini (exp(0*(log(0)), je note log la fonction logarithme népérien pour garder la cohérence avec Matlab), mais après avoir essayé, il donne 1. Donc apparemment la définition de 0^0 pour Matlab a été prise comme celle du prolongement par continuité en 0 de la fonction x^x.
lim_{x→0} x*log(x)=0
Donc
lim_{x→0} exp(x*log(x))=1
Bonne journée
Comme ça avant de le faire, j'aurais dit que Matlab donnerait NaN vu qu'en toute rigueur c'est pas défini (exp(0*(log(0)), je note log la fonction logarithme népérien pour garder la cohérence avec Matlab), mais après avoir essayé, il donne 1. Donc apparemment la définition de 0^0 pour Matlab a été prise comme celle du prolongement par continuité en 0 de la fonction x^x.
lim_{x→0} x*log(x)=0
Donc
lim_{x→0} exp(x*log(x))=1
Bonne journée
24 mars 2009 à 15:12
Bonjour Char Snipeur,
- L'appel à fmincon est le suivant (dans une boucle):
[ coefficient( i , : ) , LogLik , verif( i ) , OUTPUT ] = fmincon( 'LogGarch_Norm' , condini ,[],[],[],[],LB,UB,[],OPTIONS ) ;
- La fonction à optimiser est:
[ loglikelihood ] = LogGarch_Norm( parameter )
avec : loglikelihood = ( nobs / 2 ) * log( 2 * pi ) + 0.5 * sum( log( h ) ) + 0.5 * sum( ( ( rdt - m ) .^ 2 ) ./ h )
parameter = [ m a0 a1 b1 ]
a0 a1 et b1 interviennent dans h
rdt est une variable globale définie dans un autre programme ( un vecteur nobs*1)
Bien cordialement.
Jaouad