필터 지우기
필터 지우기

Why is Gauss elimination taking so much time in this algorithm?

조회 수: 1 (최근 30일)
Jai Tushar
Jai Tushar 2017년 10월 3일
편집: Jai Tushar 2017년 10월 3일
Following is a part of an algorithm i wrote for formulating block tri diagonal matrix to solve an elliptic pde via 5 point stencil formula and natural ordering:
M = 4;
N = M;
h = 1/M;
M1 = (M-1)*(N-1);
F = zeros(M1,1);
h1 = h^2;
x = zeros(N-1,1);
for i = 1:N-1
x(i) = h*i;
end
y = zeros(M-1,1);
for j = 1:M-1
y(j) = h*j;
end
for j = 1:N-1
for i = 1:M-1
k = i + (M-1)*(j-1);
F(k) = f(x(i),y(j));
end
end
% define block B%
B = zeros(N-1,N-1);
B(1,1) = -4/h1;
B(1,2) = 1/h1;
B(2,1) = 1/h1;
for k = 2:N-2
B(k,k) = -4/h1;
B(k+1,k) = 1/h1;
B(k,k+1) = 1/h1;
end
B(N-1,N-2) = 1/h1;
B(N-1,N-1) = -4/h1;
% Concatenate A
blocks = repmat({B}, N-1, 1);
res = blkdiag(blocks{:});
R = repmat(1/h1,1,M1-(M-1));
I1 = diag(R,M-1);
I2 = diag(R,-(M-1));
A = res+I1+I2;
tic
U = A\F;
toc
f(x,y) is defined in a function file as follows,
function W = f(x,y)
W = -2*pi^2*sin(pi*x)*sin(pi*y);
end
For large values of M gauss elimination takes a lot of time. For instance when i take M = 100 the G elimination step alone takes precisely 25.499652 seconds.
I cant figure out why gauss elimination is taking so much time. Am i missing some initializations? Any suggestions will be helpful.
Regards

답변 (0개)

카테고리

Help CenterFile Exchange에서 Eigenvalue Problems에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by