Two linear equation with absolute value equation

3 ビュー (過去 30 日間)
Murat YAPICI
Murat YAPICI 2021 年 1 月 13 日
コメント済み: Murat YAPICI 2021 年 1 月 13 日
Hello,
I have two linear equation and one absolute value equation. Is there a easy way to obtain minimum norm solution ?

採用された回答

Bruno Luong
Bruno Luong 2021 年 1 月 13 日
編集済み: Bruno Luong 2021 年 1 月 13 日
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))

その他の回答 (1 件)

Alan Stevens
Alan Stevens 2021 年 1 月 13 日
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
  1 件のコメント
Murat YAPICI
Murat YAPICI 2021 年 1 月 13 日
Thank you for your answer.
I mean something like this but I want to minimize (Like pseudo inverse). Not .

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSystems of Nonlinear Equations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by