如何解决求解一个矩阵方程,即一个由 16 个方程组成的系统,其中 16 个未知:调用求解函数时出错
我想知道在什么条件下两个 4x4 矩阵之间可以相等。
我构建了 2 个矩阵,我想从中获得相等性。
但是为了得到这个等式,我必须解决一个未知矩阵 4x4,它的项出现在 2 个矩阵 4x4 中。
为了给你展示一个实际的例子,我在下面放了一个小的 Matlab 脚本,它试图遵循上面解释的所有推理:
clear;
clc;
% Big_1 Fisher :
FISH_Big_1_SYM = sym('sp_',[5,5],'real');
% Force symmetry for Big_1
FISH_Big_1_SYM = tril(FISH_Big_1_SYM.') + triu(FISH_Big_1_SYM,1);
% Big_2 Fisher :
FISH_Big_2_SYM = sym('sp_','real');
% Force symmetry for Big_2
FISH_Big_2_SYM = tril(FISH_Big_2_SYM.') + triu(FISH_Big_2_SYM,1);
% Jacobian 1
J_1_SYM = sym('j_','real');
% Jacobian 2
J_2_SYM = sym('j_','real');
% Remove 4th row/column
J_2_SYM(4,:) = [];
J_2_SYM(:,4) = [];
%%%%%%%% Method 1 : projection before marginalisation %%%%%%%%%
% Projection
FISH_proj_1 = J_1_SYM'*FISH_Big_1_SYM*J_1_SYM;
% Check size : 5x5
size(FISH_proj_1)
% Invert Fisher_2
COV_Big_1_SYM = inv(FISH_Big_1_SYM);
% Marginalisation
COV_Big_1_SYM(4,:) = [];
COV_Big_1_SYM(:,4) = [];
FISH_Big_1_SYM = inv(COV_Big_1_SYM);
%%%%%%%% Method 2 : projection after marginalisation %%%%%%%%%
% Invert Fisher_2
COV_Big_2_SYM = inv(FISH_Big_2_SYM);
% Remove 4th row/column
COV_Big_2_SYM(4,:) = [];
COV_Big_2_SYM(:,4) = [];
% Re-inverse
FISH_Big_2_SYM_new = inv(COV_Big_2_SYM);
% Projection 2x2
FISH_proj_2 = J_2_SYM'*FISH_Big_2_SYM_new*J_2_SYM;
% Check size : 4x4
size(FISH_proj_2)
% Remove 4th row/column of Fisher matrix method 1
FISH_proj_1(4,:) = [];
FISH_proj_1(:,4) = [];
% Test equality between 2 matrices
isequal(FISH_proj_1,FISH_proj_2);
% Matricial equation to solve
eqn = FISH_proj_1 == FISH_proj_2;
% Solving : Jacobian 4x4 unknown
[solx,parameters,conditions] = solve(eqn,J_2_SYM,'ReturnConditions',true);
solx
完成构建我的 2 个矩阵 FISH_proj_1
和 FISH_proj_2
后,我在“解决”函数中收到错误:
Error using sym/solve (line 279)
Inconsistent output with 1 variables for input argument with 16 variables.
Error in demo_projection_dev (line 62)
[solx,true);
未知数是一个名为 J_2_SYM
的矩阵 4x4。
如何使用解决功能调试此错误?如果我将 J_2_SYM
unknown 直接放在 solve
函数调用中,语法是否正确?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。