Let f(x) = x^2 and we want to integrate it from 0 to 1.
Numerically we could use square method or trapezoidal (which is almost better).
Let use square method first.
and count "inner square" using this code
from pylab import * def f(x): return x*x def integrate(x): sum = 0 for i in arange(len(x)-1): sum += f(x[i])*dx return sum x = linspace(0,1,100) dx = x[1]-x[0] y = f(x) print integrate(x) plot(x,y) grid(True) show()
The result is 0.32829983335.
The "outer square " code below give the result 0.338400843451
from pylab import * def f(x): return x*x def integrate(x): sum = 0 for i in arange(len(x)-1): sum += f(x[i+1])*dx return sum x = linspace(0,1,100) dx = x[1]-x[0] y = f(x) print integrate(x) plot(x,y) grid(True) show()
How about Trapezoidal method? Easy, just modify little bit, and give the result 0.333350338401, which is much better, :)
from pylab import *
def f(x): return x*x def integrate(x): sum = 0 for i in arange(len(x)-1): sum += (f(x[i])+f(x[i+1]))*dx/2. return sum x = linspace(0,1,100) dx = x[1]-x[0] y = f(x) print integrate(x) plot(x,y) grid(True) show()
No comments:
Post a Comment