Two linear equation with absolute value equation
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Murat YAPICI
le 13 Jan 2021
Commenté : Murat YAPICI
le 13 Jan 2021
Hello,
I have two linear equation and one absolute value equation. Is there a easy way to obtain minimum norm solution ?
0 commentaires
Réponse acceptée
Bruno Luong
le 13 Jan 2021
Modifié(e) : Bruno Luong
le 13 Jan 2021
Correct minimum norm solution is
xmin =
90.0000
-40.0000
5.0000
5.0000
normxmin =
98.7421
obtained with this code
s = cell(1,4);
[s{:}] = ndgrid([-1 1]);
s = reshape(cat(5,s{:}),[],4);
fmin = Inf;
xmin = nan(4,1);
for k=1:size(s,1)
sk = s(k,:);
Aeq = [1 1 -1 -1;
1 1 1 1;
sk.*[1 1 -1 -1]];
beq = [40; 60; 120];
A = -diag(sk);
b = zeros(4,1);
[x,f,flag] = quadprog(eye(4), zeros(4,1), ...
A, b, ...
Aeq, beq, ...
[], []);
if flag > 0 && f < fmin
fmin = f;
xmin = x;
end
end
xmin
normxmin = norm(xmin,2)
% Check the constraints
xmin(1)+xmin(2)-xmin(3)-xmin(4)
xmin(1)+xmin(2)+xmin(3)+xmin(4)
abs(xmin(1))+abs(xmin(2))-abs(xmin(3))-abs(xmin(4))
Plus de réponses (1)
Alan Stevens
le 13 Jan 2021
Do you mean something like this
X0 = [-50 -5];
[X, Fval] = fminsearch(@(X) fn(X),X0);
x2 = X(1); x1 = 50-x2;
x4 = X(2); x3 = 10-x4;
disp([x1 x2 x3 x4])
disp(x1+x2+x3+x4)
disp(x1+x2-x3-x4)
disp(abs(x1)+abs(x2)-abs(x3)-abs(x4))
function F = fn(X)
x2 = X(1); x1 = 50-x2;
x4 = X(2); x3 = 10-x4;
F = norm(abs(x1)+abs(x2)-abs(x3)-abs(x4)-120);
end
Voir également
Catégories
En savoir plus sur Systems of Nonlinear Equations dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!