Sudal's Garage

FTCS Method 의 Stability 본문

Programming/MATLAB

FTCS Method 의 Stability

_Sudal 2019. 2. 28. 06:00

앞서 포스팅했던 Forward Time Central Space Method의 안정성을 알아보자


결론부터 얘기하자면,

를 만족 할 때, FTCS 는 stable 하다.


하지만 이를 증명시키기는 굉장히 어려워서, experimentally 계산해보자.


를 만족하는 간단한 예,



위 조건을, 앞서 포스팅했던 function heatFTCS 에 넣고,

h와 k를 조절해줘서,  의 값이 0과 가까우면 stable 한 것이다. 반대의 경우는 stable 하지 않다.



clear; close;
alpha = 0.1; L = 1; tf = 2; F = @(x) ones(size(x));
G0 = @(t) zeros(size(t)); GL = @(t) zeros(size(t));

H = linspace(0.01,0.1);
K = linspace(0.001,0.05);
T = ones(length(K), length(H));

i = 1; j = 1;
for h = H
    for k = K
        U = heatFTCS(alpha,L,G0,GL,F,h,k,tf);
        Ta = mean(abs(U(:,end)));
            if Ta >= 1 || isnan(Ta) == 1
                T(i,j) = 1;
            elseif Ta < 1
                T(i,j) = 0;
            end
        i = i + 1;
    end
    i = 1;
    j = j + 1;
end

[H,K] = meshgrid(H,K);
pcolor(H,K,T);
colormap(jet(2)); colorbar('ticks',[0,1]);
title('FTCS Stability Region');
xlabel('h'); ylabel('k');


h 는 0.01 부터 0.1, k 는 0.001 부터 0.05로 설정해준다.

후에 h,k는 for 룹에 넣을 것과 구별하기 위해 대문자로 지정해준다.

H = linspace(0.01,0.1);

K = linspace(0.001,0.05);


계산한 결과를 저장해 놓을 Matrix T를 지정한다.

T = ones(length(K), length(H));


그 후 for loop에서는 각 h,k 값마다 U를 heatFTCS Function으로 구해주고,

Ta = mean(abs(U(:,end)));

Ta 의 값이 0 인지 아닌지를 판별한다.


Ta 가 1 보다 크거나 NaN인 값을 가지면 1의 값을 저장하고,

1보다 작으면 0의 값을 저장한다.

if Ta >= 1 || isnan(Ta) == 1

T(i,j) = 1;

elseif Ta < 1

T(i,j) = 0;

end

* isnan function: NaN Value, 예를 들면 2/0 같은 수가 아닌 값인지 판별해주는 함수.

예) A = 0./[-2 -1 0 1 2]


A = 1×5 0 0 NaN 0 0


isnan(A)


ans =


0 0 1 0 0


후에 그래프 생성을 해준다

[H,K] = meshgrid(H,K);

pcolor(H,K,T);

colormap(jet(2)); colorbar('ticks',[0,1]);

title('FTCS Stability Region');

xlabel('h'); ylabel('k');



Result: 


짙은 파란색의 구간에서 FTCS Method는 Stable 하다


Theoretical 방법의 결과와 비교해 보자!


두번째 for loop에 다음을 추가하자

        Ba = alpha * k / h^2;
            if Ba > 0.5
                B(i,j) = 1;
            elseif Ba <= 0.5
                B(i,j) = 0;
            end                


Result:


 

얼추 experimental stability zone 과 들어맞는다