Solving a system of matrix equations using MATLAB?
我有一个由三个方程组成的系统,我想通过MATLAB求解,但是我对如何执行此过程感到有些困惑。
我有三个方程式:
1 2 3 | A = R*P1 B = R*P2 C = R*P3 |
我需要找到
我想使用
只需计算一些数字即可使用:
1 2 3 4 5 | P1 = [1;1;1]; P2 = [2;3;4]; P3 = [5;4;3]; R = [2 4 5; 1 5 4; 1 2 3]; |
这意味着:
1 2 3 | A = [11;10;6]; B = [36;33;20]; C = [41;37;22]; |
如果
1 2 3 | R*P1 = A R*P2 = B R*P3 = C |
您可以看到每个矩阵方程产生三个约束。您可以做的是创建一个将所有矩阵方程式封装在一起的系统,从而产生9个约束。因此,您需要重新设置它以便能够不同地求解矩阵
1 2 3 4 5 6 7 8 9 10 11 | [P1 0 0 0 0 0 0] [R1] [ ] [0 0 0 P1 0 0 0] [R2] [ A ] [0 0 0 0 0 0 P1] [R3] [ ] [P2 0 0 0 0 0 0] [R4] [ ] [0 0 0 P2 0 0 0] * [R5] = [ B ] [0 0 0 0 0 0 P2] [R6] [ ] [P3 0 0 0 0 0 0] [R7] [ ] [0 0 0 P3 0 0 0] [R8] [ C ] [0 0 0 0 0 0 P3] [R9] [ ] P * R = D |
您会看到我们有一个名为
因此,要在矩阵中找到系数,只需执行以下操作:
1 | R = P^{-1}*D |
这样,只需构造矩阵
1 2 3 4 5 |
现在,只需求解
1 2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | P1 = [1;1;1]; P2 = [2;3;4]; P3 = [5;4;3]; A = [11;10;6]; B = [36;33;20]; C = [41;37;22]; P = [P1.' zeros(1,6); zeros(1,3) P1.' zeros(1,3); zeros(1,6) P1.'; ... P2.' zeros(1,6); zeros(1,3) P2.' zeros(1,3); zeros(1,6) P2.'; ... P3.' zeros(1,6); zeros(1,3) P3.' zeros(1,3); zeros(1,6) P3.']; D = [A; B; C]; R = P \ D; R = reshape(R, 3, 3).'; |
要验证
1 2 3 | A1 = R*P1; B1 = R*P2; C1 = R*P3; |
我们得到每个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | A1 = 11 10 6 B1 = 36 33 20 C1 = 41 37 22 |
这与您的示例相符。但是,请注意,您可能会收到
您是否尝试展平
就像是:
或