Solving a system of linear equations with a few known variables

11 ビュー (過去 30 日間)
Deepa Maheshvare
Deepa Maheshvare 2018 年 12 月 11 日
コメント済み: AKASH BHOYAR 2022 年 5 月 19 日
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.
  2 件のコメント
KSSV
KSSV 2018 年 12 月 11 日
To solve b should be having a length equal to rows of A. Read about mldivide i,e \
Deepa Maheshvare
Deepa Maheshvare 2018 年 12 月 11 日
Thanks for the reply. Yes, I am considering a square matrix to solve for b.

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

採用された回答

Bruno Luong
Bruno Luong 2018 年 12 月 11 日
編集済み: Bruno Luong 2018 年 12 月 11 日
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))
  1 件のコメント
AKASH BHOYAR
AKASH BHOYAR 2022 年 5 月 19 日
@Bruno Luong Can you please explain above code with an example?

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

その他の回答 (1 件)

madhan ravi
madhan ravi 2018 年 12 月 11 日
編集済み: madhan ravi 2018 年 12 月 11 日
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
  10 件のコメント
Deepa Maheshvare
Deepa Maheshvare 2018 年 12 月 11 日
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.

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

カテゴリ

Help Center および File ExchangeContour Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by