English · PDF 860
initial_time←0
final_time←1
initial_x←1
step←0.1
t←initial_time
x1←initial_x
x2←initial_x
h1←step
h2←step/2
write(printer,initial_time,x1,x2,initial_x)
repeat
euler(t,x1,h1,1→x1)
euler(t,x2,h2,2→x2)
t←t + h
x←exact_solution(t,initial_time,initial_x)write
(printer,t,x1,x2,x,abs(x − x1),abs(x − x2),abs((x − x2)/(x − x1)))until
t ≥ final_timeprocedure euler(t_old,x_old,step,number→x_new)
temp_x←x_old
for i is 0 to number − 1 do
temp_x←temp_x + step*derivative(t_old + step*i,temp_x)
endfor
x_new←temp_x
endprocedureprocedure derivative(t,x → derivative)
derivative←x*x/(t+1)
endprocedureprocedure exact_solution(t,t0,x0→exact_solution)
c←ln(t0 + 1) + 1/x0
exact_solution←1/(c − ln(t + 1))
endprocedure
图 10.13
例 10.21 的一个结构更好的算法。
39 求初值问题 $X(0.3)$ 的值,
$$\frac{dx}{dt} = x - 2t, \quad x(0) = 1$$
使用欧拉法,步长为 $h = 0.1$ 。
40 求初值问题 $X(0.25)$ 的值。
$$\frac{dx}{dt} = xt, \quad x(0) = 2$$
41 求初值问题 $X(1)$ 的值,
$$\frac{dx}{dt} = \frac{x}{2\sqrt{t+x}}, \quad x(0.5) = 1$$
使用欧拉法,步长为 $h = 0.1$ 。
42 求初值问题 $X(0.5)$ 针对初值问题
$$\frac{dx}{dt} = \frac{4 - t}{t + x}, \quad x(0) = 1$$