How to find solutions for a matrix equality, i.e a system of equations ?

3 views (last 30 days)
I would like to make work a small script. This Matlab code is expected to solve a matricial equation, but by equality of 2 final matrixes, this is about solve 4 equations with 3 unknown (since I have initially an array of 2x2 unknown but this matrix of unknown is symmetric, so actually there are 3 unkonwns).
But for the moment, Matlab doesn't succeed in finding the solutions.
Here is the Matlab script :
clear;
clc;
format long;
% 2 Fisher Matrixes symbolic : FISH_GCsp_SYM, : 1 cosmo params + 1 bias spectro put for common
% FISH_XC_SYM : 1 cosmo params + 2 bias photo correlated
% Spectro
% First parameter : cosmo , second : bias spectro
FISH_GCsp_SYM = sym('sp1_', [4,4], 'real');
FISH_GCsp_SYM(3:4,3:4) = 0
FISH_GCsp_SYM(1:2,3:4) = 0
FISH_GCsp_SYM(3:4,1:2) = 0
% Force symmetry
FISH_GCsp_SYM = tril(FISH_GCsp_SYM.') + triu(FISH_GCsp_SYM,1)
% First parameter : cosmo , second : 2 bias photo correlated
FISH_XC_SYM = sym('xc1_', [3,3], 'real');
FISH_XC_SYM(1,2) = 0;
FISH_XC_SYM(2,1) = 0;
FISH_XC_SYM(2,2) = 0;
FISH_XC_SYM = tril(FISH_XC_SYM.') + triu(FISH_XC_SYM,1);
% FISH_ALL1 : brutal marginalization on Fisher matrix
FISH_ALL1(1:2,1:2) = FISH_GCsp_SYM(1:2,1:2) + FISH_XC_SYM(1:2:3);
% FISH_SYM2 : from big Fisher matrix
FISH_GCsp_SYM = sym('sp1_', [4,4], 'real');
FISH_GCsp_SYM(3:4,3:4) = 0;
FISH_GCsp_SYM(1:2,3:4) = 0;
FISH_GCsp_SYM(3:4,1:2) = 0;
% Force symmetry
FISH_GCsp_SYM = tril(FISH_GCsp_SYM.') + triu(FISH_GCsp_SYM,1);
% First parameter : cosmo , second : 2 bias photo correlated
FISH_XC_SYM = sym('xc1_', [4,4], 'real');
%FISH_XC_ADD2 = sym('eps_xc_', [3,3], 'real');
FISH_XC_SYM(1,2) = 0;
FISH_XC_SYM(2,1) = 0;
FISH_XC_SYM(2,2) = 0;
FISH_XC_SYM = tril(FISH_XC_SYM.') + triu(FISH_XC_SYM,1);
% Adding new observable "O" terms
FISH_O_SYM = sym('o_', [2,2], 'real');
FISH_O_SYM = tril(FISH_O_SYM.') + triu(FISH_O_SYM,1);
% Addition of second Fisher matrix
FISH_SYM2 = FISH_GCsp_SYM + FISH_XC_SYM;
FISH_SYM2(2,2) = FISH_SYM2(2,2) + FISH_O_SYM(1,1);
FISH_SYM2(3,3) = FISH_SYM2(3,3) + FISH_O_SYM(2,2);
FISH_SYM2(2,3) = FISH_SYM2(2,3) + FISH_O_SYM(1,2);
FISH_SYM2(3,2) = FISH_SYM2(3,2) + FISH_O_SYM(2,1);
% Marginalize FISH_SYM2 in order to get back a 2x2 matrix
% Invert to marginalyze
COV_ALL = inv(FISH_SYM2);
% Marginalize
COV_ALL([3,4],:) = [];
COV_ALL(:,[3,4]) = [];
FISH_ALL2 = inv(COV_ALL);
FISH_ALL1
FISH_ALL2
% Matricial equation to solve
eqn = FISH_ALL1 == FISH_ALL2;
% Solving : matrix1 equal to matrix2
sol = solve(eqn, [FISH_O_SYM(1,1),FISH_O_SYM(2,2),FISH_O_SYM(1,2)]);
You can try it and see there are no found solutions. The context is about Fisher formalism. From my first analysis, I get 2 matrixes which have to be equal. I introduce in the second the unkonws o_1_1, o_1_2 and o_2_2 : So finally, I have a system of 4 equations with 3 unknows to solve.
If someone could help me to fix it, I would be grateful.
  3 Comments
petit
petit on 12 Apr 2021
Edited: petit on 13 Apr 2021
Sorry, I did a mistake in the initial script.
Now, I get the following system of equations with unknows o_1_1, o_1_2, o_2_1 and o_2_2 :
FISH_ALL1 =
[ sp1_1_1 + xc1_1_1, sp1_1_2 + xc1_1_3]
[ sp1_1_2 + xc1_1_1, sp1_2_2 + xc1_1_3]
FISH_ALL2 =
[ -(o_2_2*xc1_1_4^2 + sp1_1_1*xc1_3_4^2 + xc1_1_1*xc1_3_4^2 + xc1_1_4^2*xc1_3_3 + xc1_1_3^2*xc1_4_4 - o_2_2*sp1_1_1*xc1_4_4 - o_2_2*xc1_1_1*xc1_4_4 - sp1_1_1*xc1_3_3*xc1_4_4 - 2*xc1_1_3*xc1_1_4*xc1_3_4 - xc1_1_1*xc1_3_3*xc1_4_4)/(- xc1_3_4^2 + o_2_2*xc1_4_4 + xc1_3_3*xc1_4_4), -(sp1_1_2*xc1_3_4^2 - o_2_2*sp1_1_2*xc1_4_4 - o_1_2*xc1_1_4*xc1_3_4 + o_2_2*xc1_1_4*xc1_2_4 + o_1_2*xc1_1_3*xc1_4_4 - sp1_1_2*xc1_3_3*xc1_4_4 - xc1_1_3*xc1_2_4*xc1_3_4 - xc1_1_4*xc1_2_3*xc1_3_4 + xc1_1_4*xc1_2_4*xc1_3_3 + xc1_1_3*xc1_2_3*xc1_4_4)/(- xc1_3_4^2 + o_2_2*xc1_4_4 + xc1_3_3*xc1_4_4)]
[ -(sp1_1_2*xc1_3_4^2 - o_2_2*sp1_1_2*xc1_4_4 - o_1_2*xc1_1_4*xc1_3_4 + o_2_2*xc1_1_4*xc1_2_4 + o_1_2*xc1_1_3*xc1_4_4 - sp1_1_2*xc1_3_3*xc1_4_4 - xc1_1_3*xc1_2_4*xc1_3_4 - xc1_1_4*xc1_2_3*xc1_3_4 + xc1_1_4*xc1_2_4*xc1_3_3 + xc1_1_3*xc1_2_3*xc1_4_4)/(- xc1_3_4^2 + o_2_2*xc1_4_4 + xc1_3_3*xc1_4_4), -(o_1_1*xc1_3_4^2 + o_2_2*xc1_2_4^2 + o_1_2^2*xc1_4_4 + sp1_2_2*xc1_3_4^2 + xc1_2_4^2*xc1_3_3 + xc1_2_3^2*xc1_4_4 - o_1_1*o_2_2*xc1_4_4 - o_2_2*sp1_2_2*xc1_4_4 - 2*o_1_2*xc1_2_4*xc1_3_4 + 2*o_1_2*xc1_2_3*xc1_4_4 - o_1_1*xc1_3_3*xc1_4_4 - sp1_2_2*xc1_3_3*xc1_4_4 - 2*xc1_2_3*xc1_2_4*xc1_3_4)/(- xc1_3_4^2 + o_2_2*xc1_4_4 + xc1_3_3*xc1_4_4)]

Sign in to comment.

Answers (0)

Categories

Find more on Mathematics in Help Center and File Exchange

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!