らんだむな記憶

blogというものを体験してみようか!的なー

熱方程式の数値解析(4)

他のパターンを見る。

[initial_func.m] (抜粋)

if x <= -0.1 || x >= 0.1
    y(i) = 0;
else
    if x < 0
        y(i) = 5 * x + 0.5;
    else
        y(i) = -5 * x + 0.5;
    end
end

[heat.m]

plot(xx, u(1,:), "r");
plot(xx, u(ceil(n/60),:), "b");
plot(xx, u(ceil(2*n/60),:), "k");
plot(xx, u(ceil(3*n/60),:), "g");
plot(xx, u(ceil(4*n/60),:), "y");
plot(xx, u(n,:), "m");

デルタ函数ほどではないにせよ、尖った初期値に対して。減衰が速いので短時間でplotした。
f:id:derwind:20151117224232p:plain:w561


次に、初期値を左右非対称に配置する。
[initial_func.m] (抜粋)

if x <= -8 || x >= -6
    y(i) = 0;
else
    y(i) = exp(- 1 / (1 - (x+7)**2));
end

近い端でどうなるのかなと思ったが、吸い込まれるように0になった。まぁ、そうか。
不自然な境界条件かもしれないが、長さ20の棒の端の外側は恒等的に0としている。
f:id:derwind:20151117224657p:plain:w562