Clear Filters
Clear Filters

How to find projection matrix

48 views (last 30 days)
Dhinesh Nagarajan
Dhinesh Nagarajan on 22 Apr 2021
Answered: Nipun on 15 May 2024
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;

Answers (1)

Nipun
Nipun on 15 May 2024
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

Categories

Find more on Project File Management in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!