I have a Matrix , and I want to multiply this Matrix with something so I can get zeros
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Matthew Worker
am 16 Sep. 2021
Kommentiert: Walter Roberson
am 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 Kommentare
Akzeptierte Antwort
Walter Roberson
am 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 Kommentare
Walter Roberson
am 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
Weitere Antworten (1)
John D'Errico
am 16 Sep. 2021
Bearbeitet: John D'Errico
am 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 Kommentare
Souarv De
am 9 Jun. 2022
@John D'Errico Here the answer would come with class sym. How to convert it back in to double?
Walter Roberson
am 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)
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!