Solve system of linear equations ...matrix output is not as expected

1 回表示 (過去 30 日間)
Mark Sc
Mark Sc 2021 年 3 月 3 日
コメント済み: Mark Sc 2021 年 3 月 3 日
Hi All,
I am trying to solve system of equations, as attached,
I have written a code, but my final matrix is 9*9 however, it should be 3*3....I understand i have 9 unknowns with 9 equations, but i wish to understand how could i solve it..
clearvars;
clc;
syms A11 A12 A13 A21 A22 A23 A31 A32 A33 real;
eq1 = A11*-0.001179+A12*-6.581+A13*0.008718 == -0.5;
eq2 = A12*-0.001179+A22*-6.581+A23*0.008718 == 0;
eq3 = A31*-0.001179+A32*-6.581+A33*0.008718 == 0;
eq4 = A11*-0.00251+A12*0.05848+A13*-0.039518 == 0;
eq5 = A21*-0.00251+A22*0.05848+A23*-0.039518 == -0.5;
eq6 = A31*-0.00251+A32*0.05848+A33*-0.039518 == 0;
eq7 = A11*-0.0051200+A12*0.2779500+A13*0.0001469 == 0;
eq8 = A21*-0.0051200+A22*0.2779500+A23*0.0001469 == 0;
eq9 = A31*-0.0051200+A32*0.2779500+A33*0.0001469 == -0.5;
[A] = equationsToMatrix([eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9], [A11, A12, A13, A21, A22,A23, A31, A32, A33]);

採用された回答

Steven Lord
Steven Lord 2021 年 3 月 3 日
A being a 9-by-9 matrix is correct.
syms A11 A12 A13 A21 A22 A23 A31 A32 A33 real;
eq1 = A11*-0.001179+A12*-6.581+A13*0.008718 == -0.5;
eq2 = A12*-0.001179+A22*-6.581+A23*0.008718 == 0;
eq3 = A31*-0.001179+A32*-6.581+A33*0.008718 == 0;
eq4 = A11*-0.00251+A12*0.05848+A13*-0.039518 == 0;
eq5 = A21*-0.00251+A22*0.05848+A23*-0.039518 == -0.5;
eq6 = A31*-0.00251+A32*0.05848+A33*-0.039518 == 0;
eq7 = A11*-0.0051200+A12*0.2779500+A13*0.0001469 == 0;
eq8 = A21*-0.0051200+A22*0.2779500+A23*0.0001469 == 0;
eq9 = A31*-0.0051200+A32*0.2779500+A33*0.0001469 == -0.5;
equations = [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9];
v = [A11, A12, A13, A21, A22,A23, A31, A32, A33];
[A, b] = equationsToMatrix(equations, v);
Let's attempt to recreate the original equations using A and b.
A*v.' == b
ans = 
equations.'
ans = 
Those look like they match to me. Now to solve for v:
v2 = A\b
v2 = 
vpa(A*v2-b, 5)
ans = 
  3 件のコメント
Steven Lord
Steven Lord 2021 年 3 月 3 日
syms A11 A12 A13 A21 A22 A23 A31 A32 A33 real;
eq1 = A11*-0.001179+A12*-6.581+A13*0.008718 == -0.5;
eq2 = A12*-0.001179+A22*-6.581+A23*0.008718 == 0;
eq3 = A31*-0.001179+A32*-6.581+A33*0.008718 == 0;
eq4 = A11*-0.00251+A12*0.05848+A13*-0.039518 == 0;
eq5 = A21*-0.00251+A22*0.05848+A23*-0.039518 == -0.5;
eq6 = A31*-0.00251+A32*0.05848+A33*-0.039518 == 0;
eq7 = A11*-0.0051200+A12*0.2779500+A13*0.0001469 == 0;
eq8 = A21*-0.0051200+A22*0.2779500+A23*0.0001469 == 0;
eq9 = A31*-0.0051200+A32*0.2779500+A33*0.0001469 == -0.5;
equations = [eq1, eq2, eq3, eq4, eq5, eq6, eq7, eq8, eq9];
v = [A11, A12, A13, A21, A22,A23, A31, A32, A33];
sol = solve(equations, v);
Let's check by substituting back into the original equations.
check = subs(equations, sol)
check = 
Looks good to me. 0 is equal to 0 and -1/2 is equal to -1/2. In addition:
all(isAlways(check))
ans = logical
1
isAlways says that all the elements in check are always true.
Mark Sc
Mark Sc 2021 年 3 月 3 日
Thanks I see, but I am just afraid as the answer should has some zeros elements,
but thanks again

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by