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?

2 views (last 30 days)
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!

Accepted Answer

Star Strider
Star Strider on 4 Dec 2016
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

More Answers (1)

KSSV
KSSV on 4 Dec 2016
Doc mldivide
  4 Comments
German Preciat Gonzalez
German Preciat Gonzalez on 4 Dec 2016
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

Sign in to comment.

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!