How to find projection matrix

48 次查看(过去 30 天)
Dhinesh Nagarajan
Dhinesh Nagarajan 2021-4-22
回答: Nipun 2024-5-15
The attached image is a literature to help find the projection, not the question. I've the written most of the code. Just need someone to help find the projection - p. Nothing else.
Please write the code to find the projection matrix (mentioned in the code as P)
i = floor(0.5*M);
j = floor(0.5*N);
k = (N+1)*(i-1) + j;
A(k, k-(N+1)) = 0;
A(k, k-1) = 0;
A(k, k) = 1.0;
A(k, k+1) = 0;
A(k, k+(N+1)) = 0;
cond(A)
f(j, i) = 1.0;
f = reshape(f, [(N+1)*(M+1),1]);
p =
r = f*p;
u = A\r;

回答(1 个)

Nipun
Nipun 2024-5-15
Hi Dhinesh,
I understand that you are trying to solve a linear equation system to find a projection matrix P and then use it to project some vector f onto the range of A. However, the code snippet you've provided is incomplete, particularly the line where you intend to define P. Without the specific context of what P is supposed to represent (e.g., an orthogonal projection matrix, a particular solution to a given problem, etc.), I'll make an educated guess based on common practices in linear algebra and numerical methods.
Assuming A is your system matrix and f is a vector or function you want to project, the projection matrix P in the context of solving a linear system Ax = b is typically not explicitly formed. Instead, you solve the system directly, as P might represent the action of projecting b onto the column space of A.
However, if we interpret your need for P as finding a way to project f onto the solution space of A, and considering the rest of your code, it looks like you're setting up a boundary condition in a numerical grid (possibly for a PDE solver or similar). The missing part seems to be how to compute p and then use it to get r which is then used to solve for u.
Given the lack of detail on P, I'll assume you're looking for a way to solve for u given A and f, and I'll provide a generic way to approach this:
% Assuming A is already defined and set up according to your snippet
M = size(A, 1); % Assuming A is square for simplicity
N = size(A, 2);
% Assuming f is defined as per your code, but let's initialize it properly
f = zeros(N+1, M+1); % Adjust dimensions as necessary
% Your existing setup code
i = floor(0.5*M);
j = floor(0.5*N);
k = (N+1)*(i-1) + j;
A(k, k-(N+1)) = 0;
A(k, k-1) = 0;
A(k, k) = 1.0;
A(k, k+1) = 0;
A(k, k+(N+1)) = 0;
% Check condition number
disp(cond(A));
% Set a single point in f and reshape
f(j, i) = 1.0;
f = reshape(f, [(N+1)*(M+1), 1]);
% Solve the system
u = A\f; % This is effectively solving A*u = f
% Assuming you wanted to find 'p' such that 'r = f*p', but since it's not
% clear what 'p' is, we directly solve for 'u' as the projection of 'f' onto
% the range of 'A'. If 'p' is meant to be a projection matrix or a specific
% vector, please provide additional details.
Hope this helps.
Regards,
Nipun

类别

Help CenterFile Exchange 中查找有关 Project File Management 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by