20 lines
533 B
Mathematica
20 lines
533 B
Mathematica
|
function [A,xy] = grid5rec(k1, k2)
|
||
|
% GRID5lrec : Generate 5-point finite difference on a rectangular mesh.
|
||
|
%
|
||
|
% [A,xy] = GRID5REC(k) returns a k1*k2-by-k1*k2 symmetric positive definite
|
||
|
% matrix A with the structure of the k-by-k 5-point grid,
|
||
|
% and an array xy of coordinates for the grid points.
|
||
|
|
||
|
a = blockdiags ([-1 4 -1], -1:1, k1, k1);
|
||
|
I = speye (k1, k1);
|
||
|
A = blockdiags ([-I a -I], -1:1, k2, k2);
|
||
|
A = diag(diag(A)) - A;
|
||
|
|
||
|
|
||
|
[x,y] = meshgrid(1:k2, 1:k1);
|
||
|
xy = zeros(k1*k2,2);
|
||
|
xy(:,1) = x(:);
|
||
|
xy(:,2) = y(:);
|
||
|
|
||
|
|
||
|
end
|