How to solve an equation of the form A (matrix) x(vector) = b(vector) and a constant c where I have to find x and c, and x is only positive?

1 回表示 (過去 30 日間)
Hi, I have a matrix A
A =[1 1 2 2 0 0;
1 1 2 2 0 0;
0 0 0 1 0 0;
0 0 0 1 0 0;
3 0 0 0 0 0;
3 0 0 0 0 0;
3 0 0 0 1 0;
3 0 0 0 1 0;
3 0 0 0 1 0;
3 0 1 1 1 0;
3 0 1 1 1 0;
3 0 2 0 0 1;
3 0 2 0 0 1];
and a vector b
b = [64.20; 42.60; 14.60; 5.75; 30.40; 27.20; 36.50; 25.40; 40.60; 38.90; 15.50; 38.40; 35.30];
if I use linesolve, I have
x =
9.6000
57.7333
-17.1417
10.1750
5.3667
42.3333
but negative values are nor realistic, I was planning to use linear programming but I'm not sure if is the way to go since I also need to have a constant (which can be negative) so I can have
Axc=b
Can you recommend me something?
Thanks!

採用された回答

Star Strider
Star Strider 2016 年 12 月 4 日
If you want to avoid negative parameters, use the lsqnonneg function.
Example:
x = lsqnonneg(A,b)
x =
9.6
36.306
0
3.7469
1.0813
8.05

その他の回答 (1 件)

KSSV
KSSV 2016 年 12 月 4 日
Doc mldivide
  4 件のコメント
German Preciat Gonzalez
German Preciat Gonzalez 2016 年 12 月 4 日
that is why I want to use a constant C that multiplies vector x so the vector x can have only positive values: Axc=b
KSSV
KSSV 2016 年 12 月 4 日
C = [1 1 -1 1 1 1 1]';
But you should do element by element .* multiplication.

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

カテゴリ

Help Center および File ExchangeLinear Programming and Mixed-Integer Linear Programming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by