2

Est-ce que quelqu'un sait comment minimiser une fonction contenant une intégrale dans MATLAB? La fonction ressemble à ceci:Minimiser une fonction contenant une intégrale

L = Int(t=0,t=T)[(AR-x)dt], A is a system parameter and R and x are related through: 
dR/dt = axRY - bR, where a and b are constants. 
dY/dt = -xRY 

Je lis quelque part que je peux utiliser fminbnd et quad en combinaison, mais je ne suis pas en mesure de le faire fonctionner. Aucune suggestion?

+0

bonne question. Avez-vous trouvé une solution? Si ce n'est pas le cas, seriez-vous intéressé à rendre cette question plus générale - c'est-à-dire, à minimiser * toute * fonction contenant une intégrale, plutôt que votre fonction particulière? Je serais prêt à commencer une prime pour une question aussi générale. – dbliss

Répondre

0

Peut-être pourriez-vous donner plus de détails sur votre intégrale, par ex. où est la parenthèse manquante dans [AR-x)dt]? Y at-il une dépendance de x sur t, ou pouvons-nous intégrer dR/dt = axR - bR pour donner R=C*exp((a*x-b)*t)? Dans tous les cas, pour répondre à votre question sur fminbnd et quad, vous pouvez définir A,C,T,a,b,xmin et xmax (les deux derniers sont la plage que vous voulez chercher le min plus) et de l'utilisation:

[x fval] = fminbnd(@(x) quad(@(t)A*C*exp((a*x-b)*t)-x,0,T),xmin,xmax) 

Ceci trouve x qui minimise l'intégrale.

+0

Ah ... Je pensais avoir ajouté une deuxième équation. Je m'excuse pour ça ... J'ajouterai le second en une seconde. Merci pour les pointeurs, je vais actuellement examiner cela. Cependant, je suis curieux de savoir comment votre réponse pourrait changer pour ma question révisée ... – Legend

0

Si je ne me trompe, vous essayez de minimiser ce qui concerne t:

\int_0^t{(AR-x) dt} 
bien

alors vous avez juste besoin de trouver les zéros de:

AR-x 

Ceci est juste maths , pas matlab;)

+0

Merci ... Cela vous dérangerait-il de fixer le latex dans votre message? Je ne semble pas être en mesure de le voir pour une raison quelconque ... – Legend

+0

malheureusement texify ne supporte pas la liaison externe. Passé le code ici http://www.texify.com/links.php pour voir l'image. – Mascarpone

0

Voici quelques manipulations de vos équations qui pourraient vous aider.

En combinant les deuxième et troisième équations que vous avez données donne

dR/dt = -a*(dY/dt)-bR 

Maintenant, si nous résolvons R sur le côté droit et le brancher dans la première équation que vous avez donné, nous obtenons

L = Int(t=0,t=T)[(-A/b*(dR/dt + a*dY/dt) - x)dt] 

Maintenant, nous peut intégrer le premier terme pour obtenir:

L = -A/b*[R(T) - R(0) + Y(T) - Y(0)] - Int(t=0,t=T)[(x)dt] 

Alors maintenant, tout ce qui compte en ce qui concerne R a nd Y sont les points finaux. En fait, vous pouvez aussi bien définir une nouvelle fonction, Z qui est égal à Y + R. Ensuite, vous obtenez

L = -A/b*[Z(T) - Z(0)] - Int(t=0,t=T)[(x)dt] 

partie suivante, je ne suis pas aussi confiant. L'intégrale de x par rapport à t donnera une fonction qui est évaluée à t = 0 et t = T. Cette fonction nous appellerons X pour donner:

L = -A/b*[Z(T) - Z(0)] - X(T) + X(0) 

Cette équation est vrai pour tout T, afin que nous puissions mettre en T à T si nous voulons.

L = -A/b*[Z(t) - Z(0)] - X(t) + X(0) 

De plus, nous pouvons regrouper un grand nombre de constantes ensemble et les appeler C pour donner

X(t) = -A/b*Z(t) + C 

C = A/b*Z(0) + X(0) - L 

Je ne suis pas sûr que faire avec ceci, mais j'ai montré que l'intégrale de x (t) est liée linéairement à Z (t) = R (t) + Y (t). Il me semble qu'il y a beaucoup d'équations qui résolvent cela. Quelqu'un d'autre voit où aller à partir d'ici? Des problèmes avec mes maths?