Asked by Deepa Maheshvare
on 11 Dec 2018

I'm solving the following system of linear equations,

Ax = b, some of the x's are knowns.

For example,

A=

-12 12 0 0 0

0 -1 1 0 0

0 0 -0.5 0.5 0

0 0 0 -17 17

x = [x1 x2 x3 x4 x5]

b = [b1 0 0 0 b5]

When some of the variables are known, say x1 and x5 are known, the system can be reduced in terms of the known variables. However, when there are around 50 variables and 5 are known re-writing the matrix in terms of the known variables is difficult.

I would like ask for suggestions on alternate ways of solving these kind of linear systems in which the values of a few variables are known.

Answer by Bruno Luong
on 11 Dec 2018

Edited by Bruno Luong
on 11 Dec 2018

Accepted Answer

Assuming known is the logical index == TRUE for indexes of x that are known

% known = ismember(1:5,[1 5]) % in your example

x(known) = XValueYouKnow;

x(~known) = A(:,~known) \ (b-A(:,known)*x(known))

Sign in to comment.

Answer by madhan ravi
on 11 Dec 2018

Edited by madhan ravi
on 11 Dec 2018

See https://in.mathworks.com/matlabcentral/answers/297297-how-to-solve-a-system-of-equations-in-the-matlab?s_tid=answers_rc1-2_p2_MLT#answer_230057 for detailed discussion.

One way using solve():

syms x1 x2 x3 x4 x5 b1 b5

eqn=[ -12*x1+12*x2==b1;

-x2+x3==0;

-0.5*x3+0.5*x4==0;

-17*x4+17*x5==b5];

[x1,x2,x3,x4]=solve(eqn)

Second way using linsolve():

syms b1 b5

A=[ -12 12 0 0 0

0 -1 1 0 0

0 0 -0.5 0.5 0

0 0 0 -17 17];

b = [b1;0;0;b5];

[x,R]=linsolve(A,b)

Third way using mldivide():

syms b1 b5

A=[ -12 12 0 0 0

0 -1 1 0 0

0 0 -0.5 0.5 0

0 0 0 -17 17];

b = [b1;0;0;b5];

A\b % x5 has infinity number of solutions I guess

madhan ravi
on 11 Dec 2018

ok now what's your query? Alternatively you can use lsqminnorm() as mentioned https://in.mathworks.com/help/matlab/ref/lsqminnorm.html#d120e717236

lsqminnorm(double(A),double(b))

Deepa Maheshvare
on 11 Dec 2018

My query is,

eqn=[ 190*x1-190*x2==b1;

-190*x1+381*x2-190*x3==0;

-190*x2+381*x3-190*x4==0;

-190*x3+381*x4-190*x5==0;

-190*x4+190*x5==b5];

can be easily written for a small set of equations. When the size of matrix A is 50 x 50 , and 50 variables are present,it will be difficult to manually type all 50 equations in eqn=[]and use solve to reduce A matrix in terms of the unknowns.

madhan ravi
on 11 Dec 2018

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## KSSV (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/435087-solving-a-system-of-linear-equations-with-a-few-known-variables#comment_648870

## Deepa Maheshvare (view profile)

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/435087-solving-a-system-of-linear-equations-with-a-few-known-variables#comment_648949

Sign in to comment.