In [1]:
using PyPlot
In [2]:
function FTCS(t, x, start)
l_t = length(t)
Delta_t = (t[l_t]-t[1])/(l_t-1)
l_x = length(x)
Delta_x = (x[l_x]-x[1])/(l_x-1)
u = Array(Float64, l_x, l_t)
u[:,1] = start
for t_i in 1:l_t-1
u[1, t_i+1] = u[1, t_i]
u[l_x, t_i+1] = u[l_x, t_i]
for x_i in 2:l_x-1
u[x_i, t_i+1] = u[x_i, t_i] + Delta_t/Delta_x^2 * (u[x_i+1, t_i]+u[x_i-1, t_i]-2*u[x_i, t_i])
end
end
return u
end
Out[2]:
In [33]:
Delta_x = .02
Delta_t = .25*Delta_x^2
n = 5
x = linspace(0, 1, Int(1/Delta_x)+1)
t = linspace(0, 1e-3*2^n, Int(1e-3*2^n/Delta_t)+1)
start =[sin(3*pi*i)+i for i in x]
result = FTCS(t, x, start)
t_list = [1e-3*2^i for i in 0:n]
for t_i in t_list
index = findfirst(t, t_i)
plot(x, result[:,index], label="t = $t_i")
end
xlabel("x")
legend()
show()
In [29]:
result[:,1]
Out[29]:
In [ ]: