Difference between revisions of "12-267/Numerical Methods"
(Created page, based largely off of http://imgur.com/a/uLSlM posted by Simon1) |
(Added python example of Euler's method, headings) |
||
Line 1: | Line 1: | ||
+ | |||
+ | ==Summary of Numerical Methods== | ||
+ | |||
+ | Based largely off of a note available [http://imgur.com/a/uLSlM here] [[User:Simon1|Simon1]] --[[User:Twine|Twine]] 20:55, 25 October 2012 (EDT) | ||
+ | |||
Numerical methods: <math>\frac{dy}{dt} = f(t, y)</math> and <math>y(t_0) = y_0</math>, <math>y = \Phi(t)</math> is a solution. | Numerical methods: <math>\frac{dy}{dt} = f(t, y)</math> and <math>y(t_0) = y_0</math>, <math>y = \Phi(t)</math> is a solution. | ||
Line 46: | Line 51: | ||
Global truncation error is proportional to <math>h^4</math>. | Global truncation error is proportional to <math>h^4</math>. | ||
+ | ==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. <math>x_0</math> and <math>y_0</math> are given as well as an increment amount <math>h</math>, <math>x_{n+1} = x_n + h</math>, and we use the guess <math>y_{n+1} = y_n + f(x_n, y_n)*h</math> 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, <math>y' = -y</math>: | ||
− | + | 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] |
Revision as of 20:59, 25 October 2012
Summary of Numerical Methods
Based largely off of a note available here 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):
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]