Maximisation d'une fonction sous matlab
Fermé
jaghdali
Messages postés
3
Statut
Membre
-
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Sacabouffe Messages postés 9427 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
y aurait -il quelqu'un pour m'aider à créer la syntaxe sur matlab pour maximiser une fonction d'utilité U(x) sur x.
x est comprise entre 0 et 1.
j'ai essayer avec argmax mais en vain..
merci d'avance
y aurait -il quelqu'un pour m'aider à créer la syntaxe sur matlab pour maximiser une fonction d'utilité U(x) sur x.
x est comprise entre 0 et 1.
j'ai essayer avec argmax mais en vain..
merci d'avance
3 réponses
-
Salut
Apparemment la réponse venait pas assez vite...
http://www.commentcamarche.net/forum/affich 8707715 simulation maximisation d utilite plots
J'en suis désolé, j'avais oublié que mon devoir en tant que bénévole était de résoudre ton exercice en quatrième vitesse.
http://www.commentcamarche.net/faq/sujet 10925 demander de l aide pour vos exercices sur ccm
Bonne nuit -
Salut
[maxU xloc] = max(U); xloc=x(xloc);
À plus -
merci beaucoup pour votre réponse concise
mais puisque je suis presque nulle en programmation ... cela ne m'a pas suffit pour résoudre mon problème toute seule et je reviens à votre appui svp en vous posant cette fois ci tout mes soucis en bloc (désolée).
tous mes calculs se font d'une manière itérative pour:
rho_I=0:0.01:1 et
rho_G=0:0.01:1
première étape:
%simulation de la prime d'assurance =P(rho_I,rho_G)%
pour cela j'ai réussi à générer un échantillon de taille 1000 pour rho_G=0.5 et rho_I=0.5 pour simuler P
j'ai commencé par créer une matrice A pour une valeur rho_G=0.5
cette matrice doit avoir 1 en diagonale et rho_G ailleurs
>> A=0.5*ones(10,10);
>> for i=1:10;
A(i,i)=1;
end
en fait il me faut une fonction qui génère plusieurs matrices : une matrice pour chaque valeur de rho_G.
je continue quand même la simulation avec A (pour rho_G=0.5) et rho_I=0.5
s = chi2rnd(1,1000,1);
u=tcdf(randn(1000,10)*chol(A).*( sqrt(1./s)*ones(1,10) ),1);
x = binoinv(u,100,betainv(u,0.1*(1/rho_I -1),0.9*(1/rho_I -1)));
y=[sum(x'(:,i))];
P=mean(y)/10000+0.01*(quantile(y,0.995)-mean(y))/10000
et je me suis arrêtée là !!!
maintenant je dois représenter graphiquement les niveaux de P dans le plan en mettant en abscisse rho_I=0:0.01:1 et en ordonnées rho_G=0:0.01:1
Pourriez vous m'aider à parvenir à ces résultats en faisant varier rho_I et rho_G
deuxième étape:
%maximisation de l'utilité%
voici ma fonction d'espérance d'utilité:
EU= somme (p(i,rho_I) * f(i,a,P)) pour i=1:100
p(i, rho_I) est une fonction de probabilité définie pour rho-I =0:0.01:1
p(i, rho_I)=beta(100-i+0.9*(1/rho_I -1),0.1*(1/rho_I -1)+i)/(101*beta(101-i,i+1)*beta(0.1*(1/rho_I -1),0.9*(1/rho_I -1)))
f(i,a, sigma,P) est la fonction d'utilité pour 0<=a<=1 et sigma=1.5:0.5:3
f(i,a, sigma,P)=(1-sigma)^(-1)*(101-100*a*P-(1-a)*i )^(1-sigma)
alors je dois maximiser EU en "a"pour chaque valeur de rho_I , chaque valeur de P et chaque valeur de sigma sachant que P se calcule en fonction de rho_I et rho_G comme indiqué plus haut.
ensuite représenter graphiquement (colorer par exemple) les point dans le plan (rho_I , rho_G) pour lesquels les EU "maximiseés" (pour chaque rho_I ) sont supérieures à une valeur initiale EU_0 = somme (p(i,rho_I) * (1-sigma)^(-1)*(101-i )^(1-sigma).
au total on aura 4 graphique: un pour chaque valeur de sigma.
je sais que c'est un exercice pénible! mais je serait reconnaissante si vous pouvez m'aider.
mes remerciements d'avance