I have a Matrix , and I want to multiply this Matrix with something so I can get zeros
16 views (last 30 days)
Show older comments
Matthew Worker
on 16 Sep 2021
Commented: Walter Roberson
on 9 Jun 2022
% for an example *(pinv(P1))*P1=unity Matrix
I want the same thing : ?*P1=zeros
%This ? should be related to P1 like the above example when we took the peasudo inverse to get the unity matrix
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%This is the problem
clc;
clear;
H=[1 2 1;2 3 1;4 2 3;3 2 1];
P1=[3 2 4;2 1 1;5 2 3;2 3 7]
P2=[2 6 1;1 3 5;4 2 1;5 2 1];
HT=H+P1+P2
from this equation I want to get
HT=H+P2
I want to null P1
2 Comments
Accepted Answer
Walter Roberson
on 16 Sep 2021
null(P1)
Note: this may have different number of columns depending on the values in P1. Each column of the result will be independent
3 Comments
Walter Roberson
on 16 Sep 2021
format long g
H=[1 2 1;2 3 1;4 2 3;3 2 1];
P1=[3 2 4;2 1 1;5 2 3;2 3 7]
P2=[2 6 1;1 3 5;4 2 1;5 2 1];
nP1 = null(P1.').'
nP1 * P1
HT = H + nP1 * P1 + P2
HT2 = H + P2
HT - HT2
More Answers (1)
John D'Errico
on 16 Sep 2021
Edited: John D'Errico
on 16 Sep 2021
Please stop posting answers when you are making only comments.
In what you claim to have tried:
A=[-3 6 -1 1 7;1 -2 2 3 -1;2 -4 5 8 -4]
the matrix A has rank 3.
rank(A)
So there is NO matrix you can multiply A with on the left except for the all zero matrix, and get a result of all zeros. That is, there does not exist a non-zero matrix X, such that the product X*A will be entirely zero. This is provable using basic linear algebra.
We can find a non-zero matrix Y such that A*Y will be all zeros. But that was not the question you seem to have posed. Thus...
Y = null(A);
norm(A*Y)
So effectively zero to with floating point precision. If you want an exact solution, since A is composed of integers, we can find one easily enough. Thus...
Ysym = null(sym(A))
A*Ysym
4 Comments
Souarv De
on 9 Jun 2022
@John D'Errico Here the answer would come with class sym. How to convert it back in to double?
Walter Roberson
on 9 Jun 2022
A = [-3 6 -1 1 7;1 -2 2 3 -1;2 -4 5 8 -4]
Ysym = null(sym(A))
A*Ysym
double(ans)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!