-
Notifications
You must be signed in to change notification settings - Fork 1
/
euler1.jl
41 lines (33 loc) · 1.03 KB
/
euler1.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Simple example of Euler integration
#h = 0.01; # time-step
using Plots
"""
Simple Euler integration
h=0.1 is a good default.
"""
function euler1(h)
tmax = 5; # max t value
init = 1; # initial condition
t = 0:h:tmax; # vector of time values
nsteps = length(t); # how many steps
x = zeros(nsteps,1); # where we will store
# results
x[1] = init;
# Start the integration
for i=1:(nsteps-1)
f = t[i] - x[i] + 1; # evaluate dx/dt
x[i+1] = x[i] + (h*f);
end
## why need space?
hcat(t, x)
end
function plot_euler1(;h=0.1)
res = euler1(h);
t = res[:,1]
x = res[:,2]
xtrue = @. exp(-t) + t; # true solution
plot(t, hcat(x, xtrue), legend=:topleft,
title = "Euler integration",
xlabel="Time (s)", ylabel="x",
label=["estimate" "true"])
end