Английская Википедия:Heun's method
Шаблон:Short description In mathematics and computational science, Heun's method may refer to the improved[1] or modified Euler's method (that is, the explicit trapezoidal rule[2]), or a similar two-stage Runge–Kutta method. It is named after Karl Heun and is a numerical procedure for solving ordinary differential equations (ODEs) with a given initial value. Both variants can be seen as extensions of the Euler method into two-stage second-order Runge–Kutta methods.
The procedure for calculating the numerical solution to the initial value problem:
- <math>y'(t) = f(t,y(t)), \qquad \qquad y(t_0)=y_0, </math>
by way of Heun's method, is to first calculate the intermediate value <math>\tilde{y}_{i+1}</math> and then the final approximation <math>y_{i+1}</math> at the next integration point.
- <math>\tilde{y}_{i+1} = y_i + h f(t_i,y_i)</math>
- <math>y_{i+1} = y_i + \frac{h}{2}[f(t_i, y_i) + f(t_{i+1},\tilde{y}_{i+1})],</math>
where <math>h</math> is the step size and <math>t_{i+1}=t_i+h</math>.
Description
Euler's method is used as the foundation for Heun's method. Euler's method uses the line tangent to the function at the beginning of the interval as an estimate of the slope of the function over the interval, assuming that if the step size is small, the error will be small. However, even when extremely small step sizes are used, over a large number of steps the error starts to accumulate and the estimate diverges from the actual functional value.
Where the solution curve is concave up, its tangent line will underestimate the vertical coordinate of the next point and vice versa for a concave down solution. The ideal prediction line would hit the curve at its next predicted point. In reality, there is no way to know whether the solution is concave-up or concave-down, and hence if the next predicted point will overestimate or underestimate its vertical value. The concavity of the curve cannot be guaranteed to remain consistent either and the prediction may overestimate and underestimate at different points in the domain of the solution. Heun's Method addresses this problem by considering the interval spanned by the tangent line segment as a whole. Taking a concave-up example, the left tangent prediction line underestimates the slope of the curve for the entire width of the interval from the current point to the next predicted point. If the tangent line at the right end point is considered (which can be estimated using Euler's Method), it has the opposite problem.[3] The points along the tangent line of the left end point have vertical coordinates which all underestimate those that lie on the solution curve, including the right end point of the interval under consideration. The solution is to make the slope greater by some amount. Heun's Method considers the tangent lines to the solution curve at both ends of the interval, one which overestimates, and one which underestimates the ideal vertical coordinates. A prediction line must be constructed based on the right end point tangent's slope alone, approximated using Euler's Method. If this slope is passed through the left end point of the interval, the result is evidently too steep to be used as an ideal prediction line and overestimates the ideal point. Therefore, the ideal point lies approximately halfway between the erroneous overestimation and underestimation, the average of the two slopes.
Euler's Method is used to roughly estimate the coordinates of the next point in the solution, and with this knowledge, the original estimate is re-predicted or corrected.[4] Assuming that the quantity <math>\textstyle f(x, y)</math> on the right hand side of the equation can be thought of as the slope of the solution sought at any point <math>\textstyle (x, y) </math>, this can be combined with the Euler estimate of the next point to give the slope of the tangent line at the right end-point. Next the average of both slopes is used to find the corrected coordinates of the right end interval.
Derivation
- <math>\text{Slope}_{\text{left}} = f(x_i, y_i)</math>
- <math>\text{Slope}_{\text{right}} = f(x_i + h, y_i + h f(x_i, y_i))</math>
- <math>\text{Slope}_{\text{ideal}} = \frac{1}{2} (\text{Slope}_{\text{left}} + \text{Slope}_{\text{right}})</math>
Using the principle that the slope of a line equates to the rise/run, the coordinates at the end of the interval can be found using the following formula:
- <math>\text{Slope}_{\text{ideal}} = \frac{\Delta y}{h} </math>
- <math>\Delta y = h (\text{Slope}_{\text{ideal}})</math>
- <math>x_{i+1} = x_i + h</math>, <math>\textstyle y_{i+1} = y_i + \Delta y</math>
- <math>y_{i+1} = y_i + h \text{Slope}_{\text{ideal}}</math>
- <math>y_{i+1} = y_{i} + \frac{1}{2} h (\text{Slope}_{\text{left}} + \text{Slope}_{\text{right}})</math>
- <math>y_{i+1} = y_{i} + \frac{h}{2}(f(x_i, y_i) + f(x_i + h, y_i + hf(x_i, y_i)))</math>
The accuracy of the Euler method improves only linearly with the step size is decreased, whereas the Heun Method improves accuracy quadratically .[5] The scheme can be compared with the implicit trapezoidal method, but with <math>f(t_{i+1},y_{i+1})</math> replaced by <math>f(t_{i+1},\tilde{y}_{i+1})</math> in order to make it explicit. <math>\tilde{y}_{i+1}</math> is the result of one step of Euler's method on the same initial value problem. So, Heun's method is a predictor-corrector method with forward Euler's method as predictor and trapezoidal method as corrector.
Runge–Kutta method
The improved Euler's method is a two-stage Runge–Kutta method, and can be written using the Butcher tableau (after John C. Butcher):
0 | |||
1 | 1 | ||
1/2 | 1/2 |
The other method referred to as Heun's method (also known as Ralston's method) has the Butcher tableau:[6]
0 | |||
2/3 | 2/3 | ||
1/4 | 3/4 |
This method minimizes the truncation error.
References