Si j'ai bien compris ton problème, en gros tu as alpha1 en fonction de alpha2, et connaissant alpha1, tu cherches le alpha2 qui permet de l'obtenir, c'est ça ?
La méthode est de chercher alpha2 tel que :
alpha1-(3*dt*K*(alpha2-1)(-ln(1-alpha2))^2/3)=0
Une recherche de 0 est en effet plus appropriée qu'une optimisation. On pourrait formuler le problème sous forme d'une minimisation en utilisant une valeur absolue, mais cela pourrait induire une discontinuité des dérivées non souhaitable pour un optimiseur.
Je te montre un exemple pour résoudre ton problème, sur une fonction moins compliquée. Dans mon cas, connaissant alpha1, je cherche alpha2 qui permet de le retrouver sachant que :
Le code qui correspond est :
1 2 3 4 5 6 7 8 9 10 11
| clear all
close all
% Je définis ma fonction
myfunc = @(alpha2) (alpha2+3)^2;
% Je définis les grandeur connues
alpha1=100;
% je cherche ma grandeur inconnue
alpha2=fzero(@(alpha2)(alpha1-myfunc(alpha2)),0) |
La réponse est bien évidemment 7.
Sur ce cas simple (et convexe), la recherche de 0 ne pose pas de problème. Dans ton cas, étudie bien ta fonction et choisis de meilleures conditions initiales si tu le peux.
Partager