Maison > Article > tutoriels informatiques > Comment réaliser le point extrême de la fonction par morceaux dans Matlab
fonction m=fenduanhanshu(t)
m=t.*(t>=0 & t1 & t2)
【Explication】
Dans Matlab, la règle de fonctionnement de l'expression m=t.*(t>=0 & t1 & t2) dans la fonction ci-dessus est que lorsque l'expression booléenne est vraie, la valeur de l'expression booléenne est 1 , Participez à l'opération, sinon prenez 0 et participez à l'opération.
Par exemple, lorsque (t>=0 & t=0 & t1 & t2) dans l'expression ne sont pas vrais, 0 est utilisé pour participer à l'opération, donc à ce moment m=t.*1 +(-t+2) *0+0,1.*0=t.
Cette conception dans Matlab permet aux utilisateurs d'effectuer des calculs scientifiques, réduit la quantité de code et améliore l'efficacité du développement. Personnellement, je recommande vivement de l'utiliser.
La valeur maximale peut être convertie en un problème de valeur minimale. Par exemple : % Calculez la valeur minimale f(x) = -x1*x2*x3, le point de départ est x = [10;10;10] et la contrainte est :
% 0 ≤ x1 + 2*x2 + 2*x3 ≤ 72.
% –x1–2*x2–2*x3 ≤ 0
% 1. Écrivez la fonction objectif% function f = myfun(x)
% f = -x(1) * x(2) * x(3);% 2. Contraintes
% –x1–2*x2–2*x3 ≤ 0
% x1 + 2*x2 + 2*x3≤ 72
% 3. Construire la matrice de contraintes
%A = [-1 -2 -2 ...
% 1 2 2];
% b = [0;72];% 4. Calcul d'optimisation% x0 = [10;10;10];
% [x,fval] = fmincon (@myfun,x0,A,b);% 5. Résultat
%x
% x =
% 24.0000
% 12.0000
% 12.0000
%
%
% fval
% fval =
% -3.4560e+03
%
%
% A*x-b
%ans =
-72
Le problème d'optimisation des fonctions multivariées ne peut pas être écrit simplement.
MATLAB lui-même n'est pas adapté à l'optimisation. Il est recommandé d'utiliser des outils tels que Lingo et 1stopt.
Voici le résultat obtenu en utilisant l'outil 1stopt :
1.Code :
Paramètres x=[1.8,2,2],y=[.46,.90];
Minimum ;
Fonction (-256,926x+572,13)*(y*(0,867+0,037*y+0,05*x)*252-17,784*y);
2. Résultat :
Nombre d'itérations : 25
Temps de calcul (heure : minute : seconde : milliseconde) : 00:00:00:141
Cause d'abandon du calcul : critère de convergence atteint
Algorithme d'optimisation : méthode du gradient conjugué + méthode d'optimisation globale générale
Expression de fonction : (-256,926*x+572,13)*(y*(0,867+0,037*y+0,05*x)*252-17,784*y)
Valeur de la fonction objectif (minimum) : 6170.8801616352
x : 2
y : 0,46
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!