#import "lib.typ": butcher = problem 1 == a) the following runge-kutta method -- ralston's method -- has an order of 3, since we have three upper rows in our butcher tableau. #butcher(3, ( $1 slash 2$, $1 slash 2$, $3 slash 4$, 0, $3 slash 4$, $2 slash 9$, $1 slash 3$, $4 slash 9$, )) == b) let $f(t, y) := y'(t) = t e^(-y)$, with $y(0) = 0$. to compute the first step of ralston's method, we need to compute each stage derivative using the step size $h = 0.48$ $ k_1 & = f(t_0, y_0) = 0 dot e^(-0) = 0 \ k_2 & = f(t_0 + h/2, y_0 + k_1 h / 2) = 0.24 dot e^(-0) = 0.24 \ k_3 & = f(t_0 + 3/4 h, y_0 + 3/4 k_2 h) = 0.36 dot e^(-3/4 dot 0.24 dot 0.48) \ & = #let t = { 0.36 * calc.exp(-3 / 4 * 0.24 * 0.48) }; #t $ then we can combine these using $ y_(n+1) = y_n + h sum_(i=1)^s b_i k_i $ where $s$ is our order, 3, and $b_i$ are the coefficients along the bottom row. thus we obtain $ y_1 & = y_0 + 0.48 dot sum_(i=1)^3 b_i k_i \ & = 0.48 dot (2/9 dot 0 + 1/3 dot 0.24 + 4/9 dot #calc.round(t, digits: 4)) \ & = #{ 0.48 * (2 / 9 * 0 + 1 / 3 * 0.24 + 4 / 9 * t) } $ after one step of ralston's method.