MATLAB: How to find the unknown for singular matrix

matrixnonlinear

A1 =
1.0e+04 *
Columns 1 through 3
-0.7300 + 0.4621i 0.0000 + 0.0000i 0.0057 + 0.0060i
-1.6373 + 2.1637i 0.0008 + 0.0014i 0.0251 + 0.0110i
-1.4519 – 2.4852i 0.0271 – 0.0132i 0.0008 – 0.0014i
-0.6706 – 0.4064i 0.0057 – 0.0060i 0.0000 – 0.0000i
0.0000 + 0.0000i -0.7300 + 0.4621i 0.0000 + 0.0000i
0.0000 + 0.0000i -1.6373 + 2.1637i 0.0000 + 0.0000i
0.0000 + 0.0000i -1.4519 – 2.4852i 0.0000 + 0.0000i
0.0000 + 0.0000i -0.6706 – 0.4064i 0.0000 + 0.0000i
Columns 4 through 6
0.0014 + 0.0009i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0057 + 0.0060i 0.0000 + 0.0000i 0.0000 + 0.0000i
-0.0066 + 0.0090i -0.0001 + 0.0000i 0.0000 + 0.0000i
0.0008 – 0.0014i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0014 + 0.0009i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0057 + 0.0060i 0.0008 + 0.0014i
0.0000 + 0.0000i -0.0066 + 0.0090i 0.0271 – 0.0132i
0.0000 + 0.0000i 0.0008 – 0.0014i 0.0057 – 0.0060i
Columns 7 through 8
0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i
0.0057 + 0.0060i 0.0000 + 0.0000i
0.0251 + 0.0110i 0.0000 + 0.0000i
0.0008 – 0.0014i -0.0001 + 0.0000i
0.0000 – 0.0000i 0.0000 + 0.0000i
And X1=[ 1 u v l l*u u^2 u*v l*u^2].'
B=[0 0 0 0 0 0 0 0]
A1 X1=B
how to get values of X1 i.e u v and l . Here A1 is singular(approx.)

Best Answer

nulls = null(A);
candidates = nulls./nulls(:,1);
The columns in candidates should start with 1 ... unless they start with NaN which would indicate a null space what started with 0, which cannot be normalized into your target X1. So you could test for leading 0 in the columns of nulls and eliminate any such columns.
At this point you can do cross-checking like whether the sixth row is close enough to the square of the second row; discard any columns that the cross-checks fail on.
My suspicion is that your matrix probably does not have the required properties, but at least you will be able to prove it.
It is clear that if a suitable X1 does exist, then A * X1 = all zeros, which is the definition of X1 belonging to the null space -- and therefore once you have extracted the null spaces, and normalized the leading coefficient, that you can read off u v l and do the cross-checking.