Summary of Numerical Methods
Based largely off of a note available here posted by Simon1 --Twine 20:55, 25 October 2012 (EDT)
Numerical methods: and , is a solution.
1. Using the proof of Picard's Theorem:
2. The Euler Method:
if h is constant
Backward Euler formula:
Local truncation error: where
Local error is proportional to .
Global error is proportional to h.
3. Improved Euler Formula (or Heun Formula):
To determine local error we took the taylor expansions of and and compared them.
We compare this to the computed value
Taking the taylor expansion we get
So we have shown that the Improved Euler Formula is accurate up to an error term proportional to
Local truncation error is proportional to
Global truncation error is proportional to
4. The Runge-Kutta Method:
where
Local truncation error is proportional to .
Global truncation error is proportional to .
Python Example of Euler's Method
In class on October 15th we discussed Euler's Method to numerically compute a solution to a differential equation. and are given as well as an increment amount , , and we use the guess where f computes the derivative as a function of x and y.
Here is an example of code (written in Python) which carries out Euler's Method for the example we discussed in class, :
def f(x, y):
return -y
def euler(x, y, f, h, x_max):
"""Take in coordinates x and y, a function f(x, y) which calculates
dy/dx at (x, y), an increment h, and a maximum value of x.
Return a list containing coordinates in the Euler's Method computation
of the solution to Phi' = f(x, Phi(x)), Phi(x) = y, with the x
values of those coordinates separated by h, and not exceeding x_max.
"""
if x > x_max: # we have already calculated all our values
return []
x_next, y_next = (x + h, y + f(x, y)*h) # calculate the next x, y values
# return the current coordinates, and every coordinates following it, in a list
return [(x_next, y_next)] + euler(x_next, y_next, f, h, x_max)
if __name__ == '__main__':
print euler(0, 1, f, 0.01, 1)[-1]