I have a Matrix , and I want to multiply this Matrix with something so I can get zeros
17 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Matthew Worker
el 16 de Sept. de 2021
Comentada: Walter Roberson
el 9 de Jun. de 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 comentarios
Respuesta aceptada
Walter Roberson
el 16 de Sept. de 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 comentarios
Walter Roberson
el 16 de Sept. de 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
Más respuestas (1)
John D'Errico
el 16 de Sept. de 2021
Editada: John D'Errico
el 16 de Sept. de 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 comentarios
Souarv De
el 9 de Jun. de 2022
@John D'Errico Here the answer would come with class sym. How to convert it back in to double?
Walter Roberson
el 9 de Jun. de 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)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!