Solve system of linear equations ...matrix output is not as expected
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
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
equations.'
Those look like they match to me. Now to solve for v:
v2 = A\b
vpa(A*v2-b, 5)
3 个评论
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)
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Assumptions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!