Solve system of linear equations ...matrix output is not as expected
2 views (last 30 days)
Show older comments
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]);
0 Comments
Accepted Answer
Steven Lord
on 3 Mar 2021
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
equations.'
Those look like they match to me. Now to solve for v:
v2 = A\b
vpa(A*v2-b, 5)
3 Comments
Steven Lord
on 3 Mar 2021
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)
Looks good to me. 0 is equal to 0 and -1/2 is equal to -1/2. In addition:
all(isAlways(check))
isAlways says that all the elements in check are always true.
More Answers (0)
See Also
Categories
Find more on Assumptions 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!